4

我已经安装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


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

4

2 回答 2

0

你安装了 Tor 的控制器库 stem 吗?只需几行代码,您就可以从 Tor 请求一个新的身份。看:

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

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

于 2014-01-05T19:37:19.450 回答
0

谷歌阻止了许多出口 Tor 节点,因为谷歌从它们那里收到了许多请求。所以这个错误是概率问题,改变你的出口 Tor 节点,直到找到一个没有被谷歌阻止的节点。

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

于 2015-01-02T16:08:21.637 回答