python3 爬虫 requests安装_爬虫必备:如何快速拥有 600 + 个代理 IP?

a2b730de8afaf2e25e83ed8b786a59e9.png

Tor 与免费代理

说到免费的代理,很多读者可以想到是一些免费的代理网站,这些网站的代理一般是通过扫描服务器的端口获得的,且可用性和安全性不高,最大的优点就是免费的。

而 Tor 同样具有这个特性,而且可用性和匿名性更强,不仅如此 Tor 的代理属于你一人独享,不会出现代理明明可用但是却无法绕过网站限制的情况。

至于 Tor 到底能提供多少个代理 IP ,昨晚测试了2 个小时,还没有测完。2_05.png

爬虫使用 Tor 代理的优势在哪?

•Tor 代理每隔几分钟会切换一次出口IP,意味着每过几分钟就可以使用一个新的IP•Tor 代理通过多层中间节点保证匿名性

Tor 的连接过程是怎么样的?

Tor 发明的初衷并不是用于爬虫,就像 Selenium 的初衷并不是用于自动化爬虫一样。

Tor 是一种“代理节点快速动态变化的加密三重代理”。

当需要通过 Tor 传递数据时,需要先连接到Directory服务获取可以用的节点。

c36689e27b7c81f2200b0e7e9dcc3dd7.png

之后从可用的节点中随机取出几个节点,组成一条通向目的节点的通路。

17ea1abe29da86563ca1e3f2eec211d3.png

每隔一段时间,原有的通路会被拆除,随机新的节点组成新的通路用于通信。

977293c29fcf76156736ff2a9f2f8dc0.png

如何搭建一个可用的 Tor 代理

首先需要一台能够自由浏览网络的服务器,这里使用的服务器是 Ubuntu 18.04.3

b87e21cb2577e2ff63d44723d4927d53.png

接着需要安装 Tor 代理, 注意这里安装的不是 Tor Brower。

sudo apt-get install tor

接着需要生成密码

tor --hash-password mypassword

这里会生成一串以 16 开头的 hash 串。

34b758c0bac1fb9ffbb95b399acc7be8.png

接着修改 Tor 的配置。

sudo vim /etc/tor/torrc

根据开头的介绍 Tor 在几分钟内会自动更换 IP 但是这个更换频率在爬虫应用中显然是不合适的,所以我们修改他的更换频率为 10 秒。

# 指定端口ControlPort 9051# 填入密码HashedControlPassword [密码]# 设置更换ip的频率MaxCircuitDirtiness 10

接下来就是关于我们爬虫脚本的编写了。

这里提供了 Python 2 和 Python 3 两个版本。

Python 2

依赖包安装
pip install requesockspip install requests
测试脚本
import osimport requestsimport requesocksimport timeurl = 'https://api.ipify.org?format=json'def getip_requests(url):print "(+) Sending request with plain requests..."    r = requests.get(url)print "(+) IP is: " + r.text.replace("\n", "")def getip_requesocks(url):print "(+) Sending request with requesocks..."    session = requesocks.session()    session.proxies = {'http': 'socks5://127.0.0.1:9050','https': 'socks5://127.0.0.1:9050'}    r = session.get(url)print "(+) IP is: " + r.text.replace("\n", "")def main():print "Running tests..."    getip_requests(url)while True:        getip_requesocks(url)        time.sleep(10);if __name__ == "__main__":    main()
测试效果图
27e7737c95f2da11e1ba9e7db872f0f5.png

这里第一个 IP 为主机 IP,之后的 IP 为随机分配的 IP

Python3

依赖包
pip3 install pysockspip3 install requests
测试脚本
import requestsimport timeimport sysimport socketimport socksdef getip_requests(url):print("(+) Sending request with plain requests...")    r = requests.get(url)print("(+) IP is: " + r.text.replace("\n", ""))def main():print("Running tests...")    url = 'https://api.ipify.org?format=json'    socks.set_default_proxy(socks.SOCKS5, "127.0.0.1", 9050)    socket.socket = socks.socksocketwhile True:        getip_requests(url)        time.sleep(10);if __name__ == '__main__':    main()
测试效果图
9f2f3b93ba27ebd5c0e36c9a24c7b7c4.png

总结

上面巴拉巴拉讲了那么多,但是爬虫从业者都会有个疑问:

Tor 这么好,为什么在商业应用中极其少见?

这是因为 Tor 分派的 IP 延时并不能满足商业化爬虫的低时延,高并发的需求,所以 Tor 只能存在于业余选手的玩具库里。

不过在人人都要会点数据采集技能的今天,在工具库里常备一个有 600 + 免费 IP 的小工具也是蛮有意思的一件事情,不是吗?

觉得不错,点个在看呗!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值