使用Tor + Privoxy刮取谷歌购物结果:如何避免阻止?

时间:2013-10-19 09:18:18

标签: python scrape tor

我已经在我的服务器上安装了Tor + Privoxy,他们工作正常! (测试)。 但是现在当我尝试使用urllib2 (python)来刮取谷歌购物结果时,当然使用代理,我总是被谷歌阻止(有时503错误,有时403错误)。所以任何人都有任何解决方案可以帮我避免这个问题?非常感谢!!

我使用的源代码:

 _HEADERS = {
      'User-Agent': 'Mozilla/5.0',
      'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
      'Accept-Encoding': 'deflate',
      'Connection': 'close',
      'DNT': '1'
  }

  request = urllib2.Request("https://www.google.com/#q=iphone+5&tbm=shop", headers=self._HEADERS)

  proxy_support = urllib2.ProxyHandler({"http" : "127.0.0.1:8118"})
  opener = urllib2.build_opener(proxy_support) 
  urllib2.install_opener(opener)

  try:
      response = urllib2.urlopen(request)
      html = response.read()
      print html

   except urllib2.HTTPError as e:
       print e.code
       print e.reason


请注意:当我不使用代理时,它可以正常工作!

2 个答案:

答案 0 :(得分:0)

您是否安装了tor,Tor的控制器库? 只需几行代码,您就可以从Tor请求新的身份。参见:

https://stem.torproject.org/faq.html#how-do-i-request-a-new-identity-from-tor

只需使用例外来捕获403和503错误,并通过请求新身份来处理它们,如上面的链接所示。祝你好运。

答案 1 :(得分:0)

Google阻止了许多退出Tor节点,因为Google收到了很多来自他们的请求。 所以这个错误是概率问题,改变你的退出Tor节点,直到找到一个没有被谷歌阻止的。

https://www.torproject.org/docs/faq.html.en#GoogleCAPTCHA