python爬虫之反爬虫与反反爬虫持续更新

青海省文书网:http://www.qhcourt.gov.cn:8080/wsfy-ww/fymh/3900/cpws.htm

反爬虫1:在请求翻页的时候,一般正常请求的时候是返回源代码然后解析里面的总页数,

但是该网站为了屏蔽请求次数过多,采用了数字验证码。

反反爬虫:接验证码平台,获取数字验证码的二进制数据,由于该服务器里面存储的数字验证码图片并不是动态生成的,所以为了便于快捷,将图片转化成md5保存在数据库中,每次当出现验证码的时候用md5值在数据库中查找,一旦有返回验证码的结果,就ok,如果如果没有的话则接打码平台(急速打码),通过打码平台获取到数字验证结果,如果打码平台也失效,最后也可以通过手动打码。

 

反爬虫2:该网站在页码上也做了反爬虫的手脚,如果要获取该站点的总页数的话,源代码中是没有的,源代码里面是该站点所有的内容条数,所以通过所有内容的条数除以一页的内容条数得到的整数就是总页数。

 

在爬取该站点时因为业务需求的原因,所以代码设计成了增量爬取和定时爬取的形式:

方式如下:

增量爬取就是建一个json,然后将每次爬取的总页数放入json中,每次运行的时候取出json中的页数和当前的总页数,两者相减,一旦大于1,自然就是增量了,此时就会爬取。

定时爬取,如果没有的话就睡24小时,然后在等待增量时爬取。

 

800万简历数据

有一个项目是对800万简历信息的内容进行提取,简历的类型包括txt,html,mht,xlsx,doc的文件格式。

反爬虫1::前程无忧网的简历以mht的形式保存,mht是邮件文件。

反反爬虫:读取mht文件内容,将string的邮件转换成email.message实例区分附件和正文,对body解码,对文本内容解码。

 

反爬虫2:部分简历是doc形式

反反爬虫:使用win32com库,将doc打开并保存为txt文件即可。

 

58同城:https://sh.58.com/qzcantfwy/pn8/?PGTID=0d303494-0000-23bd-84ca-6f3c6d8b1d1f&ClickID=6

反爬虫1:手机动态码登陆,输入手机号,会返回一个短信验证码

反反爬虫:保持浏览器和服务器之间的会话,第一次get请求专门的收发短信验证码的接口,然后获取到手机验证码内容,手动将验证码填入要传入的参数中,然后第二次post请求验证码+账号等参数,从而实现模拟登陆成功(由于实测发现该验证码参数在几天内是不会过期,所以可以尝试使用该方法)

 

反爬虫2:想爬取简历中的电话号码,但是发现电话号码是以图片形式显示的。

反反爬虫:通过验证码识别技术,获取图片中的手机号码

方式如下:未完待续

 

反爬虫3:简历的内容的源代码中,部分关键内容以乱码的形式显现。

反反爬虫:由于该字体库的编码与字体的映射是动态生成,每一次请求都会发生变化。源码中的乱码和字体库中的编码是一致的,并且58同城中的字体库中的字体是固定的44个。因此通过第一次建立编码和文字的映射表。循环判断下载的字体库的字型和建立编码和文字的字形是否一致如果一致的话,则通过映射表获取文字。

 

天眼查:

反爬虫1:有一个token是关键参数,生命周期很短只有一个小时,必须要定时获取token参数,但实际上生成token的过程很复杂,难以破解。

反反爬虫:一台电脑去爬取天眼查数据,一旦token失效以后,将请求另一台电脑,由另一台电脑通过夜神模拟器模拟手机app请求网页,然后fiddler抓包,在fiddler中修改脚本,当在某特定域名下捕获到特定参数时,将该文件保存在文件夹中,然后解析文件中的token参数,在将token参数发给那台电脑即可。

 

未完待续

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_37995231/article/details/83003388