【问题标题】:Check IP address used for a request Python/Scrapy + ProxyMesh检查用于请求 Python/Scrapy + ProxyMesh 的 IP 地址
【发布时间】:2016-01-24 06:48:49
【问题描述】:

我开始使用带有 Scrapy 的 ProxyMesh。 ProxyMesh 应该在一个端口上提供一个 IP 地址池。下面的示例代码代码在循环中重复,中间件已启用,总体上工作正常。我可以跟踪(如果可以,如何跟踪?)每个特定请求使用哪个 IP 地址?

request = scrapy.Request(producturl, self.parse_product_info)
request.meta['proxy'] = 'http://uk.proxymesh.com:xxx'
yield request

我在 SOF 上找到了类似的帖子,但没有解决这个具体问题。

【问题讨论】:

  • 也许 proxymesh 在标题中返回该信息,您可以尝试在响应中打印该信息:print response.headers。顺便说一句,crawlera 确实在响应标头上返回了使用的代理。
  • 这是一个很好的提示。有一个响应头:X-Proxymesh-Ip。我能够将其解析为 response.headers.get('X-Proxymesh-Ip')。我希望网站管理员也可以看到使用 ProxyMesh 的事实,是否可以隐藏它?
  • 当然网站会知道使用哪个代理(或 IP)来抓取他们的网站,但 X-Proxymesh-Ip 只会返回给您。至少crawlera 是这样工作的。
  • 好的,谢谢。我不确定这在 ProxyMesh 上是不可见的,但我会尝试而不用担心太多..

标签: python proxy web-scraping request scrapy


【解决方案1】:

就像在 cmets 中指定的那样,信息来自响应头,只需检查它:

def parse_response(self, response):
    print response.headers

您应该会看到带有指定代理的 X-Proxymesh-Ip 标头。

另一种选择是使用crawlera,它提供更多功能(如标头、会话和 cookie 处理)和更好的文档。

【讨论】:

    猜你喜欢
    • 2018-07-04
    • 2012-06-06
    • 1970-01-01
    • 2015-04-16
    • 2018-08-21
    • 1970-01-01
    • 2012-08-24
    • 2011-07-31
    • 2012-08-03
    相关资源
    最近更新 更多