爬虫爬取 IP 经常被封,所以一般都要使用 IP 代理池。tor 主要是用于匿名访问网络的,但也可以用于切换 IP。
brew install tor
pip install PySocks
命令行启动 tor , tor 默认端口号 9050
tor 会启动 socks 代理服务
SOCKS代理和HTTP代理有什么不同?在 OSI 七层模型中,SOCKS工作在会话层上,而HTTP工作在应用层上,SOCKS代理只是简单地传递数据包,而不必关心是何种应用协议(比如FTP、HTTP和NNTP请求),所以SOCKS代理服务器比应用层代理服务器要快得多。
import socks
import requests
import socket
# 所有的请求都走 tor
socks.set_default_proxy(proxy_type=socks.SOCKS5, addr="127.0.0.1", port=9050)
socket.socket = socks.socksocket
resp = requests.get('http://api.ipify.org/').text
print(resp)
tor 默认每隔 10 分钟左右更换一次 IP 地址,也可以强制更换。
用代理进行爬取速度比较慢,tor 配置简单,个人爬取小站点用用还行,不适用于专业级爬虫。
网友评论