> 백엔드 개발 > 파이썬 튜토리얼 > 为什么scrapy没法爬中纪委网站?

为什么scrapy没法爬中纪委网站?

WBOY
풀어 주다: 2016-06-06 16:11:09
원래의
1803명이 탐색했습니다.

回复内容:

为什么scrapy没法爬中纪委网站?无论是什么设备,第一次访问该站,都会弹出一个521的错误状态码,与此同时还会返回一个Cookie。
浏览器接受到状态码与Cookie,会再次进行一次请求,因为接收到了Set-Cookie,所以第二次的Request Headers会附上之前接收到的Cookie。
为什么scrapy没法爬中纪委网站?这样的请求才是成功的。

这个防爬虫的方法非常基础,利用了普通爬虫与浏览器对于Status Code的处理方式不同。

你要爬取,只需要先请求一次,获得一个Cookie并保存,然后之后所有的请求都附上这个保存下来的Cookie,这样就行了。

爬虫的要诀在于:尽力模仿用户使用浏览器的行为。 想了一会儿要不要回答,因为题目被贴上了作死标签……╭(°A°`)╮
---------------------------------------------------------------
Chrome大法好,Python大法好。

为什么scrapy没法爬中纪委网站?

@林灿斌 说的方法没错,不过一般这种网站的Cookie生效时间都比较长,所以你直接复制你Request Headers中的Cookie值,放到你模拟post请求的包中就可以了。你自己在浏览器里打开该网址,然后查看Request Headers中的内容。针对各种反抓取机制,主要有以下几种:
1、Cookie:这个不用多说,你把你的Cookie记下来就好,还可以解决一串需要模拟登陆才能抓取的网站,比如微博之类的;
2、Host:这个不用多说,带上就好,不会变;
3、Referer:有些网站比较变态不仅会检查你是否带Referer信息还会检查你的Referer是否合法,这儿就不点名了,怕被查水表;
4、User-Agent:这里面就是你用户使用环境的一些信息,如浏览器和操作系统,尽可能带上。最好是自己有一个UA表,每次构造请求的时候,随机采用一条UA信息

除此之外,最重要的就是在IP上下工夫。

1、伪造X-forwarded-for头:这是最容易伪造IP的一个方法,当然也最容易被识破;
2、使用TCP包注入:这个方法被Scrapy封装起来了,具体可以查相关文档,比如还可以借此实现伪造IP源进行SYN FLOOD拒绝服务攻击(好像走偏了……);
3、使用代理IP池:这是最靠谱的做法,缺点就是代理IP的质量常常参差不齐,所以还需要写一个脚本来维护这个代理IP池,比如要获取新的代理IP以及剔除库中无效的IP(我一般就挨个拿来尝试能否访问百度)。

如果你抓取的内容是通过AJAX获得的,那么你的任务就是找到那条JS发出去的请求,按以上套路模拟之即可。 祭出神器
jeanphix.me/Ghost.py/ 爬虫是蛀虫,害怕中纪委,不敢爬中纪委的网站。 这种页数不太多的建议自己写爬虫,比直接用scrapy灵活性强一些。这种内容并不是很多的页面用bs4/re+requests+gevent/threading已经可以随意抓了,我始终觉得爬虫难在爬下来的东西要怎么处理。
不知道页面是怎么跳的时候祭出神器Wireshark。
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿