前言
对于一张网页,我们往往希望它是结构良好,内容清晰的,这样搜索引擎才能准确地认知它 。
而反过来,又有一些情景,我们不希望内容能被轻易获取,比方说电商网站的交易额,教育网站的题目等 。因为这些内容,往往是一个产品的生命线,必须做到有效地保护 。这就是爬虫与反爬虫这一话题的由来 。
但是世界上没有一个网站,能做到完美地反爬虫 。如果页面希望能在用户面前正常展示,同时又不给爬虫机会,就必须要做到识别真人与机器人 。因此工程师们做了各种尝试,这些策略大多采用于后端,也是目前比较常规但有效的手段,比如:
后端与反爬虫
1、User-Agent
2、账号及验证
3、验证码
4、IP限制频率
前端与反爬虫
1、FONT-FACE拼凑式
文章插图
实例:猫眼电影
猫眼电影里,对于票房数据,展示的并不是纯粹的数字 。页面使用了font-face定义了字符集,并通过取映射展示 。也就是说,除去图像识别,必须同时爬取字符集才能识别出数字 。
文章插图
2、元素定位覆盖式
实例:去哪网
对于一个4位数字的机票价格,先用四个i标签渲染,再用b标签取绝对定位偏移量,覆盖展示错误的i标签,形成视觉上正确的价格 。
文章插图
3、字符分割式
实例:全网代理IP
在展示代理IP信息的页面
文章插图
4、字符穿插式
【反爬虫策略实例】实例:微信公众号文章
在某些微信公众号的文章里,穿插了各种谜之字符,通过样式把这些字符隐藏掉 。
文章插图
5、拼凑式
展示的数字其实是图片,根据不同的偏移,展示出不同的字符
6、伪元素隐藏式
把关键的信息放到伪元素的里面 。爬取网页时必须得解析css拿到伪元素的 。
7、字符集替换式
HTML代码里明明写的是3211,视觉上展示的却是1233,重新定义字符集,将3和1 的顺序调换 。
- [爬虫]3.3.1 常见的反爬虫策略
- 垃圾收集器与内存分配策略
- 前端使用puppeteer 爬虫生成《React.js 小书》PDF并合并
- 二 JVM.垃圾回收算法/策略内存分配
- JAVA的垃圾收集器与内存分配策略【一篇文章直接看懂】
- 【重生之我是蜘蛛侠】手把手教你用python爬虫,跟着做就好了
- 数据结构 C++实现 基于不同策略的英文单词的词频统计和检索系统
- python爬虫设置User
- 佳能相机型号排名,佳能单反相机排行榜
- 王安石变法之后宋朝有何反向