我有一个代理地址列表,我正在随机选择,并输入到一个SplashRequest中的刮除蜘蛛。为了确认这是可行的,我决定尝试从我的IP是什么?中获取结果。在随机选择代理时,我注意到基于IP的三种不同的响应:
body说“对不起,whatismyip.com是不可用的,因为它被归类为security.nettools”。如果有人能向我解释一下#1和#2中发生了什么,那将是非常感谢的!
编辑
我在一个Docker容器中有一个Splash实例,我正在创建一个SplashReqeuest (不是一个刮掉的请求),并给它一个随机选择的代理IP。对于一些IP,我能够确认它正被传递到请求(见第3项),因此这似乎验证了这种方法--随机代理IP被传送到SplashRequest。然而,对于一些IP,我得到一个502 Bad Gateway或那个奇怪的200 Ok,其中“什么是我的IP”不返回IP。
对于给定的IP地址,结果是一致的,也就是说,如果地址X给出结果1,则总是给出结果1。
发布于 2019-10-03 21:04:09
我只用过几次刮擦,但严重依赖刮伤。我猜你使用的是一个来自scrapinghub的飞溅实例。我认为这是因为ip实际上是用来提出请求的。
我举过一个例子,就是试图刮掉谷歌的购物。谷歌将ip追溯到原点。因此,不管我的ip池位于美国。一些ips可以追溯到其他国家,并返回该县的结果。假设我们有下面的代码。
def start_request:
yield scrapy.Request(url='https://www.googleshopping.com/shopping/ID','splash':{})这将触发刮擦来创建请求。即使请求是在您的设备上发出的,它还是将该请求发送到启动服务器。它可以生活在码头或刮刮中心的飞溅实例,无论它可能在哪里。这个splash实例将有自己的ip地址附加在上面,而这个ip就是Google会看到的。现在,如果您在请求中包含一个代理,则该ip可以来自世界上任何地方,这取决于承载它的是谁,这将使ip更加混乱。长话短说,请求可能不是来自您认为来自的ip。
https://stackoverflow.com/questions/58226812
复制相似问题