网站内容策略(比方说爬虫与反爬虫这一话题的由来,你了解多少? )
优采云 发布时间: 2021-10-21 07:24网站内容策略(比方说爬虫与反爬虫这一话题的由来,你了解多少?
)
对于一个网页,我们往往希望它结构合理,内容清晰,以便搜索引擎能够准确识别。
另一方面,也有一些我们不希望内容容易被访问的场景,比如电子商务网站交易量、教育网站话题等。因为这些内容往往是产品的生命线,必须得到有效保护。这就是爬虫和反爬虫这个话题的由来。
2. 常见的反爬虫策略
但是世界上没有网站可以完美的反爬虫。
如果页面想要在用户面前正常展示,又不给爬虫机会,就必须能够识别真人和机器人。因此,工程师们进行了各种尝试。这些策略大多用于后端,是目前比较常规有效的方法,例如:
爬虫可以无限接近真人,比如:
所以我们说,100% 反爬虫策略?不存在的。
这是更多的体力劳动,这是一个困难的问题。
但是作为前端工程师,我们可以增加游戏的难度,设计一些非常(xin)意图(bing)思维(kuang)的反爬虫策略。
3. 前端和反爬虫
3.1 字体拼布
示例:猫眼电影
在猫眼电影中,票房数据并不是纯数字。
页面使用font-face定义字符集,使用unicode映射显示。也就是说,除了图像识别,必须同时爬取字符集才能识别数字。
而且,每次刷新页面,字符集的URL都会发生变化,这无疑增加了爬虫的难度。
3.2 背景拼凑
例子:
与字体策略类似,美团也采用了背景拼凑。数字其实就是图片,根据不同的背景偏移显示不同的字符。
而且不同的页面,图片的字符排序也不同。但是理论上只需要生成0-9和小数点,所以不明白为什么会有重复字符。
页面 A:
页面 B:
3.3个字符穿插
示例:微信公众号文章
在一些微信公众号的文章中,穿插着各种神秘人物,这些人物通过图案隐藏起来。
这个方法虽然震撼……但其实识别过滤也不算太难,甚至可以更好,但也是一种头脑风暴。
顺便问一下,我可以报销我的手机数据吗?
3.隐藏了4个伪元素
示例:汽车之家
在汽车之家中,关键制造商信息收录在伪元素内容中。
这也是一种思路:要爬取一个网页,必须解析css,还需要获取伪元素的内容,增加了爬取的难度。
3.5 元素定位叠加
示例:去哪里
也有喜欢数学的人的地方。对于一个4位的票价,先用四个i标签渲染,然后用两个b标签绝对定位偏移,覆盖故意显示错误的i标签,最后在视觉上形成正确的价格……
这说明爬虫不擅长解析css,还得做数学题。
3.6 IFRAME 异步加载类型
例子:
打开网易云音乐页面时,html源码中几乎只有一个iframe,其src为空:about:blank。然后js开始运行,将整个页面的frame异步塞进iframe中……
不过这种方法带来的难度并不大。只是在异步和iframe处理上绕道而行(或者有其他原因,不完全基于反爬虫的考虑)。无论您使用 selenium 还是 phantom,都有可用的 API。转到 iframe 中的内容信息。
3.7 个字符拆分
示例:全网代理IP
在一些显示代理IP信息的页面上,IP的保护也很麻烦。
他们会先把IP的数字和符号分成dom节点,然后在中间插入混淆数字。如果爬虫不知道这个策略,他们会认为自己已经成功获取了价值;但是如果爬虫注意到了,就很容易解决了。
3.8 个字符集替换
示例:将边移到何处
去哪儿手机版也欺骗爬虫。
3211明明是html写的,但是1233是直观显示的。原来他们重新定义了字符集,3和1的顺序只是交换了结果……