【问题标题】:Using Tor + Privoxy to scrape google shopping results: How to avoid block?使用 Tor + Privoxy 抓取谷歌购物结果:如何避免阻塞?
【发布时间】:2013-10-19 09:18:17
【问题描述】:

我已经在我的服务器上安装了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


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

【问题讨论】:

标签: python scrape tor


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 不管怎样,如果你找到一个工作的出口节点,在请求之间休眠 15 秒,以防止在数百个请求后被阻塞。
    猜你喜欢
    • 2020-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    相关资源
    最近更新 更多