我正在使用Tor服务器来路由我的爬虫的请求,这是多线程的,但是在加载时非常容易,因为我让每个线程以平均20秒(每分钟大约3个请求)的随机正常时间休眠。我需要获得大约20,000个查询的第一个谷歌搜索结果。我的抓取工具使用urllib2(socks proxy)和mechanize(http proxy)在python中编写脚本。
# Snippet of code initializing the urllib2 build_opener
host = socks_hostname
port = socks_port
socks_username = username
socks_password = password
cj = cookielib.CookieJar()
br = urllib2.build_opener(SocksiPyHandler(socks.PROXY_TYPE_SOCKS5, host, port,
username=socks_username,
password=socks_password),
urllib2.HTTPCookieProcessor(cj))
# Get randomly generated User-Agent string.
br.addheaders = [('User-Agent', self.get_user_agent())]
return br
我刚刚发现,就谷歌而言,Tor网络并不隐藏我的IP。我写了一个小测试脚本来检查来自谷歌和http://whatismyip.net的IP地址。虽然whatismyip.net似乎从加拿大获得了一些ip,谷歌显示我真正的IP,这让我感到困惑。我已经确定我没有任何可以跟踪的cookie。
更令人费解的是,当我在我的firefox中使用tor时,谷歌也会在加拿大显示一个随机的ip。所以,只有当我发送自动请求时,我的真实IP才会暴露出来,有人可以帮助我找出造成这种泄漏的原因吗?
我理解抓取是一个敏感话题,但我抓取的速度实际上比人类慢!