阅读时间建议:4分钟
本篇概念比较多,嗯。。
0x01 反爬思路与解决手段
1、服务器反爬虫的原因
因为爬虫的访问次数高,浪费资源,公司资源被批量抓走,丧失竞争力,同时也是法律的灰色地带。
2、服务器反什么爬虫
三月爬虫:毕业生写的,不管服务器负载能力。
小公司:几个人缺钱,开始玩主流的爬虫数据分析,写的爬虫贼多,浪费资源。
个人爬虫:忘记停止的爬虫。
商业对手:很有钱,投入很大精力爬虫,浪费资源。
搜索引擎:通用爬虫,存在一些bug,对某一个网站持续爬取,他们技术很好,对服务器造成压力
3、反爬虫里的概念
爬虫:实用技术批量获取信息
反爬虫:阻止别人使用技术获取信息
误伤:服务器把普通用户屏蔽了
拦截:阻止爬虫访问
资源:机器和人力成本
4、反爬虫三个方向
4.1身份识别反爬
根据发出的请求符不符合浏览器发出携带的参数,那你就会被反爬。
4.1.1通过headers的ua字段反爬
如果我们不修改headers,那么ua那一行就是python或者是你用的模块名,这样很容易被反。
4.1.2referer字段反爬
看你是从哪发出的请求,一般浏览器自己带上,有的服务器在获取到一个请求后,要看从哪跳转的,如果没有referer,极有可能是爬虫,一般会被反。
4.1.3cookie反爬
通过检查cookie查看发起请求的用户是否具有权限。
4.1.4请求参数反爬
通过html文件中提取请求数据,需要仔细分析每一个包
通过发送请求来获取请求数据,需要搞清楚参数来源
js生成了请求参数,需要js2py获取js执行结果,或者用selenium
验证码反爬,需要打码平台或者机器学习,这里我推荐打码平台,成本低而且简单
(据说机器学习可以解马赛克?)
4.2爬虫行为反爬
众所周知,在爬取top250时,要先访问页面,获取详情url,振幅此页面发请求,针对每一步发出请求,服务器在此过程检查数据包中反爬。
4.2.1基于请求频率反爬
当某ip访问过量时,很大可能被反爬,需要降低爬虫采集速度或者使用代理池又或者是准备多个账号。
4.2.2 基于请求间隔的反爬
请求时间间隔十分规律,会被反爬,需要设置随机休眠或者是代理池或者多账号。
4.2.3 基于请求次数的反爬
比如支付宝,逆天给你限量转账400次,需要代理池或者多账号。
4.2.4 基于爬虫行为反爬
有些网站它的翻页url不是规律的,需要查看js一般里面有计算步骤
蜜罐获取爬虫ip———什么意思呢?
进入拉钩https://www.lagou.com/
1、这里有很多求职信息,于是我们爬取它
2、在爬取的时候,爬到了一个隐藏的职位,这就是蜜罐,他就会确定你是爬虫,并且把你的代理池搞报废。
3、正常人看不到,而程序看得到,怎么实现呢?
4、检查这个节点,add attribute-》添加style=”dispaly:none”
5、于是就看不到了。
通过假数据反爬,就是往响应里添加垃圾数据恶心爬虫工程师,需要把数据库内容与世纪网页进行比对。
通过阻塞队列反爬,就是往响应url里添加垃圾url,需要对url进行过滤
通过阻塞网络IO,比如往你下载的数据里加个蓝光大电影(其实就是爬虫bomb,期待社区搞一个,搞搞新手),需要观察爬虫状态/多线程请求计时
4.3数据加密反爬
加大数据提取难度
4.3.1css字体反爬
进入猫眼https://www.maoyan.com/films/248172
可以看到两个方块,但我检查的是9.1啊,说明这里有字体反爬虫
需要换成手机版
点这个
(在我选中的里面有一个9.1)
4.3.2css字体偏移
源码中的数据不是真正数据,需要计算css的位移(这哪是没找到例子)
4.3.3 数据化图片反爬
就是把数据写在图片里,需要使用图片解析引擎
4.3.4 编码格式反爬
每个格式都试试
1.
print(response.content.decode("GBK"))
申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法。