检查用于请求 Python/Scrapy + ProxyMesh 的 IP 地址
Posted
技术标签:
【中文标题】检查用于请求 Python/Scrapy + ProxyMesh 的 IP 地址【英文标题】:Check IP address used for a request Python/Scrapy + ProxyMesh 【发布时间】: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 上是不可见的,但我会尝试而不用担心太多..
【参考方案1】:
就像在 cmets 中指定的那样,信息来自响应头,只需检查它:
def parse_response(self, response):
print response.headers
您应该会看到带有指定代理的 X-Proxymesh-Ip
标头。
另一种选择是使用crawlera,它提供更多功能(如标头、会话和 cookie 处理)和更好的文档。
【讨论】:
以上是关于检查用于请求 Python/Scrapy + ProxyMesh 的 IP 地址的主要内容,如果未能解决你的问题,请参考以下文章