爬虫与反爬虫的战争
前言
“FSRC经验分享”系列文章,旨在分享焦点科技信息安全部工作过程中的经验总结,包括漏洞分析、运营技巧、SDL推行、等保合规、自研工具等等。 欢迎各位安全从业者持续关注~
如果一个固定的ip在短暂的时间内,快速大量的访问一个网站,后台管理员可以编写IP限制,不让该IP继续访问。
后台统计登录用户的操作,比如短时间的点击事件,请求数据事件,与正常值比对,用于区分用户是否处于异常状态,如果是,则限制登录用户操作权限。
创建无限深度的目录结构、动态页面,为网络爬虫生成无限数量的文档(如由算法生成杂乱的文章页面,文档中填充了大量字符),使解析文档的词法分析器崩溃。
字符、滑动、短信、图画识别、计算题、倒立文字……
详见FSRC前一篇文章:【验证码的那些事儿】
建立文件robots.txt在主目录下,声明哪些页面可以爬取,哪些不可以。
前端——通过对查询参数、user-agent、验证码、cookie等前端数据进行加密生成一串加密指令,将加密指令作为参数,再进行服务器数据请求。
服务器端——在服务器端同样有一段加密逻辑,生成一串编码,与请求的编码进行匹配。
如果前端返回的该加密参数为空或者匹配错误,服务器都不对请求进行响应。
python的requests库只能爬取静态页面,爬取不了动态加载的页面。使用JS加载数据方式,能提高爬虫门槛。
服务器端根据字体映射文件先将客户端查询的数据进行变换再传回前端,前端根据字体文件进行逆向解密。映射方式可以是数字乱序显示,这样爬虫可以爬取数据,但是数据是错误的。
注册多个账号,先整理其session、cookie等,建立帐号库。
后续可以模拟正常操作,或随机取对应值带入脚本进行爬取,避免触发单个用户访问阈值。最好保证一个session在一个代理上。
如果使用scrapy框架,可以将settings文件里的 ROBOTSTXT_OBEY
设置值为 False
注意:
爬取已声明robots的页面,可能存在法律风险
行为 | 建议 |
---|---|
爬取网页-访问量小 | 可以遵守 |
爬取网页-访问量大 | 建议遵守 |
爬取网站-非商业且偶尔 | 建议遵守 |
爬取网站-商业用途 | 必须遵守 |
爬取全网 | 必须遵守 |
主要针对蜘蛛陷阱,把网页按照所引用的css文件进行聚类,通过控制类里最大能包含的网页数量防止爬虫进入trap后出不来,对不含css的网页会给一个penalty,限制其能产生的链接数量。
这个办法理论上不保证能避免爬虫陷入死循环,但是实际上这个方案工作得挺好,因为绝大多数网页都使用了css,动态网页更是如此。
js2py模块可以对js文件进行解密,针对数据是js加密生成的情况,使用js2py在python中运行JS代码,从而得到相应的编码。
对js加密的情况,还可以借助UI自动化工具(webdriver、Puppeteer)去执行js调用它的加密方法,需要研究js的花的时间比js2py少的多。工具可能需要付费。
此外还有些网站前几次返回正常页面,超过一定次数之后请求返回的html中只有一个script标签和js,必需执行js才可以继续获取内容,也可以使用js2py或者工具。
对目前一些网站针对UI自动化工具做防爬虫处理,比如判断navigator中的webdriver属性。可参考网上一些绕过方法,比如pyppeteer中:
await page.evaluateOnNewDocument(r'''
() = > {
const newProto = navigator.__proto__;
delete newProto.webdriver;
navigator.__proto__ = newProto;
}
''')
针对验证码,接入第三方验证码平台,实时破解网站的验证码。
反爬虫不惜工本,目标是迫使爬虫在考虑成本效益后放弃;
爬虫不惜工本,目标是反爬虫在考虑用户流失后放弃。
客观上,爬虫与反爬虫在攻防之间,促进了彼此技术发展,并且随着数据的重要性越来越高,双方的发展还会越来越快。
爬虫人员也可以不仅仅局限于爬取数据,试着往大数据方向发展,数分、数挖、机器学习等方面发展,前途也是不可限量的!
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
随时掌握互联网精彩
- 1 这本书,智利总统带到秘鲁的会见厅 7949119
- 2 药监局:百雀羚不存在违规行为 7946142
- 3 胖东来:员工不许靠父母买房买车 7886615
- 4 世界互联网大会有哪些新看点? 7769520
- 5 梁靖崑不敌张本智和 无缘8强 7661452
- 6 医院CT等收费将执行新规 7538202
- 7 19岁孤儿被骗到郑州4天没吃没喝 7495530
- 8 29岁抗癌博主“一只羊吖”去世 7394822
- 9 一个金镯子省出1200元 金价真跌了 7281662
- 10 科技与文化融合的“赛博”水乡 7137424