检查用于请求 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 地址的主要内容,如果未能解决你的问题,请参考以下文章

为 GitHub 拉取请求添加验证检查

Python Scrapy框架

在 PR 上通过的所有检查的 Github API Webhook/Notification

Python Scrapy框架

python Scrapy框架 报301

Python scrapy 常见问题及解决 遇到的坑