获取502 Bad Gateway,然后重定向到另一个网站。 cra草

时间:2018-11-15 23:33:20

标签: shell redirect scrapy

这里是崎cra的巨型菜鸟。

当我尝试抓取某个网站时,例如:

scrapy shell https://shop.coles.com.au/a/a-vic-metro-oakleigh/product/gasmate-cartridge-butane

我收到以下消息:

...
[scrapy.core.engine] INFO: Spider opened
[scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://shop.coles.com.au/a/a-vic-metro-oakleigh/product/gasmate-cartridge-butane> (failed 1 times): 502 Bad Gateway
[scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://shop.coles.com.au/a/a-vic-metro-oakleigh/product/gasmate-cartridge-butane> (failed 2 times): 502 Bad Gateway
[scrapy.core.engine] DEBUG: Crawled (200) <GET https://shop.coles.com.au/a/a-vic-metro-oakleigh/product/gasmate-cartridge-butane> (referer: None)
...

然后,当我尝试查看response.body的内容时:

In [1]: print(response.body)
b'<html><body><script>var $j=\'c\';$3=\'c\';$q=\'c\';$G=\'f\';$s=\'c\';$F=\'c\';$X=\'c\';$t=\'c\';$H=\'c\';$e=\'=\';$D=\'c\';$g=\'c\';$8=\'c\';$A=\'c\';$6=\'c\';$O=\'=\';$P=\'c\';$U=\'5\';$4=\'6\';$y=\'c\';$v=\'c\';$u=\'c\';$b=\'c\';$V=\'b\';$r=\'5\';$2=\'6\';$Q=\'f\';$R=\'c\';$5=\'c\';$9=\'c\';$c=\'c\';$S=\'c\';$l=\'c\';$k=\'c\';$m=\'_\';$M=\'5\';$N=\'c\';$C=\'c\';$d=\'c\';$J=\'b\';$E=\'5\';$1=\'6\';$i=\'f\';document.cookie=(!4?$j:"")+(!""?$3:"")+(!4?$q:"")+(!4?$G:"")+(!({})?$s:"")+(!NaN?$F:"")+(!NaN?$X:"")+(![]?$t:"")+(!0?$H:"")+(![]?$e:"")+(!4?$D:"")+(!""?$g:"")+(!""?$8:"")+(![]?$A:"")+(!NaN?$6:"")+(!NaN?$O:"")+(![]?$P:"")+(!0?$U:"")+(!({})?$4:"")+(!4?$y:"")+(!""?$v:"")+(!0?$u:"")+(!0?$b:"")+(!""?$V:"")+(!0?$r:"")+(!0?$2:"")+(!""?$Q:"")+(!0?$R:"")+(!NaN?$5:"")+(!""?$9:"")+(!NaN?$c:"")+(!""?$S:"")+(!""?$l:"")+(!NaN?$k:"")+(!0?$m:"")+(!0?$M:"")+(!""?$N:"")+(!NaN?$C:"")+(!NaN?$d:"")+(!NaN?$J:"")+(!""?$E:"")+(!""?$1:"")+(!0?$i:"")+\'; path=/\';window.location.href=window.location.href;</script></body></html'

这不是网站HTML,我可以在浏览器中检查https://shop.coles.com.au/a/a-vic-metro-oakleigh/product/gasmate-cartridge-butane的HTML完全不同,因此我知道我被重定向到了某个地方。

问题是 这是怎么发生的以及为什么发生?最重要的是如何避免呢?

其他信息:我正在使用代理服务,每次使用超过20.000的池中的Scrapy shell时,它将使用随机代理。 值得注意的是,在此问题开始之前,我已经刮了很长时间了。

1 个答案:

答案 0 :(得分:1)

如果您查看Javascript代码,它将设置一个cookie并对其进行重定向。

该网站似乎希望您有一个特定的cookie来访问“正常”页面,但是由于scrapy无法执行javascript,因此它会在那里停止。

您可能希望以某种方式解析Javascript代码,然后手动设置Cookie并重新查询相同的URL。