| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> 你可能不知道的反爬虫知识 -> 正文阅读 |
|
[Python知识库]你可能不知道的反爬虫知识 |
在这个人均python时代,产品运营同学也能分分钟写出一个爬虫来产出数据报表,我这段时间也是想要写一个爬虫来刷一刷我发的帖子的点击率,从而开始调查起了爬虫,又调查起了反爬,又看起了反反爬……现在已经被精神招安了!今天就和大家一起讨论一下螺旋上升,永无止尽的反爬道路。 首先,我们能用爬虫做到哪些事情呢?根据调查大头一定是抢火车票(12306是全国最难爬的网站),还有像是预定场地、操纵僵尸粉、比价、刷点击率、分析用户数据达到个人目的等。 其实一般的公司可能根本没有采用反爬措施,还有一些网站可能只对数字做了字体映射,并不会更换字体文件或算法,但我们这篇文章的前提是保护有价值的数据,所以要尽可能的增加黑客们爬数据的成本,另一方面也是降低服务器的压力。 我们把爬数据分为最主要的两种途径,爬接口和爬页面(SSR)。 爬接口的话一般采用网络封包截取工具来拦截请求,代码模仿请求来进行大批量的数据获取。而爬页面则会使用Selenium或者puppeteer来模仿人类行为获得网页,从中摘取特定的信息。对于爬页面目前还会有元素匹配和OCR识别两种主流的内容匹配方式。元素匹配是根据HTML或者页面上的元素信息通过元素选择器,如正则、xpath等进行选择并匹配;而OCR识别则是将网页当做图片进行文本识别,并根据文本的展示特征,如颜色、尺寸、位置等进行匹配。 这两种途径会有一些共通的防范措施:
接下来是一些详例: 接口反爬 让我们先看一个反爬的例子~ 拦截了一个生活网站数据的请求,可以看到header中有一个x-sign 除了接口验签以外,加密也是一个非常常用的反爬手段,下面是一个知名旅行预订网站的例子: SSR反爬 老样子,先看一个🌰 某知名美食网站 可以看到该网站没有发起请求店家的接口,这一块应该是直接SSR的,去看下页面 接着我们去该网站的css中寻找这个className 找到了,同时去把字体文件5d7135e1下下来,然后我们可以挑第一个方块转成unicode看一下,这个字画面上展示的是“五”,对应的unicode为\ue509 在线看一下字体文件 在调查这个网站的同时,还看了猫眼的反爬做法,也是使用了unicode映射,但是猫眼每刷新一次就会生成一个新的字体文件,黑客就必须每次访问分析新的映射逻辑,于此相对的成本会有些高。然而,由于它字体文件中包含的文字数量很少,这就给黑客留下了一个可乘之机,黑客可以通过OCR或者人工识别的方法先分析出字体文件中每个文字对应的svg数据,然后在获得新的字体文件后直接根据svg的数据进行字符匹配,从而能够省去后续请求中再次对字体进行OCR的步骤。 总结: 世界上没有完全不可以被爬的网站,既然你的信息展示在黑客面前,极端一些黑客一次次翻页用肉眼把数据都记录下来也是一种爬数据的方式。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 2:48:15- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |