首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >网络抓取w/ Scrapy-Splash -不同代理的不同结果?

网络抓取w/ Scrapy-Splash -不同代理的不同结果?
EN

Stack Overflow用户
提问于 2019-10-03 21:00:01
回答 1查看 264关注 0票数 0

我有一个代理地址列表,我正在随机选择,并输入到一个SplashRequest中的刮除蜘蛛。为了确认这是可行的,我决定尝试从我的IP是什么?中获取结果。在随机选择代理时,我注意到基于IP的三种不同的响应:

  1. 502坏网关
  2. 如果body说“对不起,whatismyip.com是不可用的,因为它被归类为security.nettools”。
  3. 200确定并返回正确的代理地址。

如果有人能向我解释一下#1和#2中发生了什么,那将是非常感谢的!

编辑

我在一个Docker容器中有一个Splash实例,我正在创建一个SplashReqeuest (不是一个刮掉的请求),并给它一个随机选择的代理IP。对于一些IP,我能够确认它正被传递到请求(见第3项),因此这似乎验证了这种方法--随机代理IP被传送到SplashRequest。然而,对于一些IP,我得到一个502 Bad Gateway或那个奇怪的200 Ok,其中“什么是我的IP”不返回IP。

对于给定的IP地址,结果是一致的,也就是说,如果地址X给出结果1,则总是给出结果1。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-03 21:04:09

我只用过几次刮擦,但严重依赖刮伤。我猜你使用的是一个来自scrapinghub的飞溅实例。我认为这是因为ip实际上是用来提出请求的。

我举过一个例子,就是试图刮掉谷歌的购物。谷歌将ip追溯到原点。因此,不管我的ip池位于美国。一些ips可以追溯到其他国家,并返回该县的结果。假设我们有下面的代码。

代码语言:javascript
复制
def start_request:
  yield scrapy.Request(url='https://www.googleshopping.com/shopping/ID','splash':{})

这将触发刮擦来创建请求。即使请求是在您的设备上发出的,它还是将该请求发送到启动服务器。它可以生活在码头或刮刮中心的飞溅实例,无论它可能在哪里。这个splash实例将有自己的ip地址附加在上面,而这个ip就是Google会看到的。现在,如果您在请求中包含一个代理,则该ip可以来自世界上任何地方,这取决于承载它的是谁,这将使ip更加混乱。长话短说,请求可能不是来自您认为来自的ip。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58226812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档