大厂在用的反爬虫手段

我用Python爬取美食网站3032个菜谱并分析,真香! 这是巨变的中国,人和食物,比任何时候走的更快。近日,J哥为了寻味中国,奔走于某五线城市的大街小巷,结果除了累,啥也没寻到。 于是,J哥默默打开了各大美食网站,如豆果美食、下厨房、美食天下等。经过甄选,最终爬取了豆果网最新发布的中国菜系共3032个菜谱,然后清洗数据并做可视化分析,试图走上美食博主的康庄大道。 数据获取 豆果美食网的数据爬取比较简单,如果您对爬虫感兴趣,可查看J哥往期原创文章「实战|手把手教你用Python爬虫(附详细源码)」,思路一致。 本文爬取的数据范围为川菜、粤菜、湘菜等八个中国菜系. 阅读详情

有人说爬虫爬天爬地爬空气,网站怎么有效保护密码?(有哪些反爬虫手段可以保护密码)
其实,SVG 映射可有效保护密码。

SVG 映射

SVG 用于描述二维矢量图形的一种图形格式。它基于 XML 描述图形,对图形进行放大或缩小操作都不会影响图形质量。矢量图形的这个特点使得它被广泛应用在 Web 网站中。 下面我们要了解的反爬虫手段正是利用 SVG 实现的,这种反爬虫手段用矢量图形代替具体的文字,不会影响用户正常阅读,但爬虫程序却无法像读取文字那样获得 SVG 图形中的内容。因为 SVG 中的图形代表的也是一个个文字,所以在使用时必须在前端或后端将真实的文字与对应的 SVG 图形进行映射和替换,这种反爬虫手段被称为 SVG 映射反爬虫。

SVG 映射实战

SVG 映射反爬虫示例

网址:http://www.porters.vip/confusion/food.html反爬虫练习。 任务:爬取美食商家评价网站页面中的商家联系电话、店铺地址和评分数据。

评分数据中口味分数元素定位,奇怪的是根据页面显示内容,HTML 代码中评分应该是 8.7 才对,但实际上我们看到的却是:

<span class="item">口味:<d class="vhkjj4"></d>.7</span>

HTML 代码中有数字 7 和小数点,但就是没有 8 这个数字,似乎数字 8 的位置被 d 标签占据。而商家电话号码处的显示就更奇怪了,一个数字都没有。商家电话对应的 HTML 代码如下(到底怎么回事):

<div class="col more"> 
        电话:
   <d class="vhkbvu"></d> 
   <d class="vhk08k"></d> 
   <d class="vhk08k"></d> 
   <d class="">-</d> 
   <d class="vhk84t"></d> 
   <d class="vhk6zl"></d> 
   <d class="vhkqsc"></d> 
   <d class="vhkqsc"></d> 
   <d class="vhk6zl"></d> 
</div>

包含很多的 d 标签,难道它使用 d 标签进行占位,然后用元素进行覆盖吗?我们可以将 d 标签的数量和数字的数量进行对比,发现它们的数量是相同的(8个),也就是说一对 d 标签代表一个数字。 每一对 d 标签都有 class 属性,有些 class 属性值是相同的,有些则不同。我们再将 class 属性值与数字进行对比,看一看能否找到规律。

猛然发现,从class 属性值和数字的对比可以看出,class 属性值和数字是一一对应的,如属性值 vhk08k 与数字 0 对应。根据这个线索,我们可以猜测每个数字都与一个属性值对应。

数字与属性值对应关系 浏览器在渲染页面的时候就会按照这个对应关系进行映射,所以页面中显示的是数字,而我们在 HTML 代码中看到的则是这些 class 属性值。浏览器在渲染时将 HTML 中的 d 标签与数字按照此关系进行映射,并将映射结果呈现在页面中。我们的爬虫代码也可以按照同样的逻辑实现映射功能,在解析 HTML 代码时将 d 标签的 class 属性值取出来,然后进行映射即可得到页面中显示的数字。如何在爬虫代码中实现映射关系呢?实际上网页中使用的是 “属性名数字” 这种结构,Python 中内置的字典正好可以满足我们的需求。可以用 Python 代码测试一下,代码如下:

#定义映射关系
mappings = {'vhk08k': 0, 'vhk6zl': 1, 'vhk9or': 2, 
   'vhkfln': 3, 'vhkbvu': 4, 'vhk84t': 5, 
   'vhkvxd': 6, 'vhkqsc': 7, 'vhkjj4': 8, 
   'vhk0f1': 9} 
#HTML 中得到的属性值
html_d_class = 'vhkvxd' 
#将映射后的结果打印输出
print(mappings.get(html_d_class))

这段代码的逻辑是:首先定义属性值与数字的映射关系,然后假设一个 HTML 中 d 标签的属性值,接着将这个属性值的映射结果打印出来。代码运行后得到的结果为:

6
运行结果说明映射这种方法是可行的。接着我们试一试将商家的联系电话映射出来:

#定义映射关系
mappings = {'vhk08k': 0, 'vhk6zl': 1, 'vhk9or': 2, 
            'vhkfln': 3, 'vhkbvu': 4, 'vhk84t': 5, 
            'vhkvxd': 6, 'vhkqsc': 7, 'vhkjj4': 8, 
            'vhk0f1': 9} 
#商家联系电话 class 属性
html_d_class = ['vhkbvu', 'vhk08k', 'vhk08k', 
                '', 'vhk84t', 'vhk6zl', 
                'vhkqsc', 'vhkqsc', 'vhk6zl'] 

phone = [mappings.get(i) for i in html_d_class] 
#将映射后的结果打印输出
print(phone)

运行结果为:

[4, 0, 0, None, 5, 1, 7, 7, 1]
我们使用映射的方法得到了商家联系电话,说明 SVG 映射反爬虫已经被我们绕过了。

小结

本文示例所用的反爬虫手段,即使借助渲染工具也无法获得 “见到” 的内容。SVG 映射反爬虫利用了浏览器与编程语言在渲染方面的差异,以及 SVG 与 CSS 定位这样的前端知识。如果爬虫工程师不熟悉渲染原理和前端知识,那么这种反爬虫手段就会带来很大的困扰。

python-爬取东方财富网期货市场大商所数据 python-爬取东方财富网期货市场大商所数据 注意因为是用谷歌爬取,所以要先下载好chromedriver 然后用到的第三方模块有os、time、openpyxl、webdriver 这里是将爬取下来的数据先存为txt,然后再转化为excel文件 def dashangsuo(): import os import time import openpyxl from selenium import webdriver # 打开chrome浏览器 resp 阅读详情

相关推荐

反爬虫业务安全概览

反爬虫业务安全概览起源蚂蚁吃大象残酷的竞争恶意报复反爬虫我们要防御什么刷量占用资源信息资源盗取反爬虫技术防御视角反爬虫的挑战在哪里传统方案难以应对分布式爬虫数据采集难度大反爬虫防御现状利用 IP 和 UA 防护利用加密 js 和动态 URL利用机器学习产生统一的设备指纹通过动态 HTML利用数据链路和流量观测进行分析 Jack Chen 起源 爬虫在这个大数据时代已经不是什么新鲜事了,早前我们说的...

weixin_44044225的博客 5019

爬虫:爬取豆果网和美食网的菜单

爬虫:爬取豆果网和美食网的菜单前言本文主要是介绍如果爬取豆果网和美食网的菜单,并保存在本地,我是以列表的形式保存在TXT文件里,大家有兴趣的可以改一改,下载入数据库或者CSV,json等文件都可以。这里爬出的数据主要是为了下一阶段做菜谱推荐,智能冰箱用的,根据用户以往的饮食习惯的数据,可以推荐今天吃什么,让用户或者自动化下单购买哪些食材,或者直接用appium+Python的方式直接连接安卓手机饿了

橘子派 6900

Python-爬虫爬取豆果网和美食网的菜单

本文主要是介绍如果爬取豆果网和美食网的菜单,并保存在本地,我是以列表的形式保存在TXT文件里,大家有兴趣的可以改一改,下载入数据库或者CSV,json等文件都可以。

项目实战 | Python爬虫+PythonWeb+百度AI:前后端实现一个简单的“智能菜谱”网站

文章目录 导语 项目目的 知识储备 实现环境 开始项目 一、Python爬虫 1.爬取目标 2.网页结构分析 3.代码结构分析 4.存入数据库 5.实现 二、人工智能 1.登录获取相关信息 2.查看帮助文档 3.应用到web中 三、Python Web 1.网站整体布局分析 2.路由和视图设计 3.读取数据库 4.实现 项目预览 项目收获

離陸する的博客 4528

基于YOLOv8和PaddlepaddleOCR的微信截图聊天记录提取

本文提出了一种基于YOLOv8和PaddleOCR的微信聊天记录提取方法。首先使用YOLOv8n模型分割出聊天气泡(针对深浅色模式分别训练),通过合成数据集增强模型鲁棒性,召回率达0.995。随后采用PP-OCRv5进行文本识别,利用坐标匹配将气泡内文本送入识别队列,短长文本平均置信度分别>0.98和>0.95。文中特别强调了PaddleOCR不同版本的输出格式差异及适配方案,建议使用3.0+版本。该方法有效解决了直接OCR识别易受干扰的问题,通过气泡分割+文本定位的两阶段策略显著提升了识别准确

2401_87383958的博客 2356

单片机课程设计——交通灯

单片机课程设计——交通灯一、课程设计主要内容1.1 题目1.2摘要1.3关键词二、设计要求三、设计方案四、参考电路设计4.1.1数码管的设计4.1.2对应程序4.2.1独立按键的设计4.2.2对应程序4.2.3 使用逻辑4.3.1LED模块的设置4.3.2 LED实物图4.3.3 LED显示程序五、调试要点5.1 单片机最小系统5.2 数码管模块5.3 LED模块5.4 独立按键六、总结七、成品图完整程序 一、课程设计主要内容 1.1 题目 交通灯设计 1.2摘要 近年来,随着我国国民经济的快速发展,我国机

PKPROTEUS的博客 3万+

一线大厂在用的反爬虫手段,看我破!

由于 SVG 中的图形代表的也是一个个文字,所以在使用时必须在后端或前端将真实的文字与对应的 SVG 图形进行映射和替换,这种反爬虫手段被称为 SVG 映射反爬虫。我们的爬虫代码可以按照同样的逻辑实现映射功能,在解析 HTML 代码时将 d 标签的 class 属性值取出来,然后进行映射即可得到页面中显示的数字。在了解 SVG 基本知识之后,我们回头看一下案例中所使用的 SVG 文件中坐标参数的设定,图 6-23 中的字符与图 6-24 图片页源代码中的字符一一对应,且每个字符都设定了。

xiaoganbuaiuk的博客 663

手把手教你解决USB批量传输中512字节整数倍数据丢失问题

本文详细解析了USB批量传输中512字节整数倍数据丢失问题的根源,并提供了通过零长度包(ZLP)的解决方案。文章涵盖USB协议核心机制、ZLP实现代码示例(包括Android、Linux和Windows平台)、调试技巧及性能优化建议,帮助开发者彻底解决这一常见问题。

smartcontract5的博客 261

大厂在用的Python反爬虫手段,破了它!

SVG 映射反爬虫 SVG 是用于描述二维矢量图形的一种图形格式。它基于 XML 描述图形,对图形进行放大或缩小操作都不会影响图形质量。矢量图形的这个特点使得它被广泛应用在 Web 网站中。 接下来我们要了解的反爬虫手段正是利用 SVG 实现的,这种反爬虫手段用矢量图形代替具体的文字,不会影响用户正常阅读,但爬虫程序却无法像读取文字那样获得 SVG 图形中的内容。由于 SVG 中的图形代表...

Python学习Q群696455390 235

数字太大放不下,高精度来补,如何放下超大数字,以及进制转换,高精度真的超好玩。 洛谷1009,1015

想必大家都遇到过数字大小超过int类型范围的情况,是不是碰到int放不下的数字自然就会想到,long int,long long int,甚至unsigned long long int呢。但是有一些出题者就很可恶,偏要出一些连unsigned long long int也放不下的算法题,应对这些问题时,我们是否有相应的应对方法呢?答案是:当然有,高精度就是一种应对这种问题时很好的解决办法。相信你在看完这篇文章后能对高精度有着更深更好的理解。我会循序渐进的来讲,这样大家也更容易听懂。

2303_79329831的博客 1229

从ROS2到ROS1:Lightning-LM激光SLAM模块的移植实践与核心代码解析

本文详细解析了将高性能激光SLAM算法Lightning-LM从ROS2移植到ROS1的完整实践过程。针对ROS1与ROS2在节点初始化、话题通信、参数服务器及TF发布等核心API的差异,文章提供了loc_system和slam模块的核心代码改造示例,并给出了适配catkin的CMakeLists.txt与package.xml配置方案,帮助开发者在现有ROS1生态中高效集成先进的SLAM模块。

weixin_29224529的博客 172

一线大厂在用的反爬虫方法,看我如何破了它!

内容选自即将出版的《Python3 反爬虫原理与绕过实战》,本次公开书稿范围为第 6 章——文本混淆反爬虫。本篇为第 6 章中的第 3 小节SVG 反爬虫。 SVG 映射反爬虫 SVG 是用于描述二维矢量图形的一种图形格式。它基于 XML 描述图形,对图形进行放大或缩小操作都不会影响图形质量。矢量图形的这个特点使得它被广泛应用在 Web 网站中。 接下来我们要了解的反爬虫手段正是利用 SV...

华为云官方博客 3761

Trae编程工具Cline插件深度集成与Claude 3.7 API Key高级配置实战

本文详细介绍了如何在Trae编程工具中深度集成Cline插件并配置Claude 3.7 API Key的高级技巧。通过实战案例,展示了如何提升代码补全质量、实现多轮对话记忆及自定义代理设置,特别适合全栈工程师和需要私有化AI服务的团队。文章还涵盖了安装流程、API Key获取方式及企业级部署的最佳实践。

weixin_28829903的博客 436

常见的反爬虫技术_反爬虫手段有哪些

通过cookie限制抓取信息,比如我们模拟登陆之后,想拿到登陆之后某页面信息,千万不要以为模拟登陆之后就所有页面都可以抓了,有时候还需要请求一些中间页面拿到特定cookie,然后才可以抓到我们需要的页面。录,比如我们需要抓取1000个用户的个人信息,则需要填1000次验证码,而手动输入验证码是不现实的,所以验证码的出现曾经难倒了很多网络爬虫工程师。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

m0_56169789的博客 1641

无人机测绘航线生成算法

JavaScript开发和测试无人机测绘航线的自动生成方法,设计可行,算法可靠

ly1302116的专栏 5235

k8s配置habor作为镜像地址之后,如果harbor中没有镜像,如何设置自动从阿里云官方镜像仓库下载

通过 Harbor 的远端仓库可以集中管理。如果你在上游设置了 image prefix 为 library,那么对外访问 harbor.your-domain.com/library/nginx:latest 就会被 Harbor 去上游拉取 registry.cn-hangzhou.aliyuncs.com/library/nginx:latest 并缓存。- 将集群中的镜像地址改为 Harbor 的域名,比如 harbor.your-domain.com/library/nginx:latest。

极客栈 426

【道高一尺魔高一丈】7种反爬虫策略及规避手段

在进行爬虫活动时,需要遵循伦理规范和法律法规,尊重网站的隐私权和信息所有权。未经授权的爬虫活动可能涉及侵犯隐私、盗取数据等问题,违反相关法律法规可能会面临法律责任。

m0_48891301的博客 5364

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

一线大厂在用的反爬虫手法,看我破!

SVG 映射反爬虫 SVG 是用于描述二维矢量图形的一种图形格式。它基于 XML 描述图形,对图形进行放大或缩小操作都不会影响图形质量。矢量图形的这个特点使得它被广泛应用在 Web 网站中。 接下来我们要了解的反爬虫手段正是利用 SVG 实现的,这种反爬虫手段用矢量图形代替具体的文字,不会影响用户正常阅读,但爬虫程序却无法像读取文字那样获得 SVG 图形中的内容。由于 SVG 中的图形代表的也是一个个文字,所以在使用时必须在后端或前端将真实的文字与对应的 SVG 图形进行映射和替换,这种反爬虫手段被称为

JNPF快速开发平台的博客 562

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【反爬大核弹】大厂策划们,我来教教你们如何让网站反爬虫

如果你对这篇文章感兴趣,欢迎在评论区留言,分享你的想法和建议。

weixin_62650212的博客 1517

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

最全常见的反爬虫技术_反爬虫手段有哪些,面试官不讲武德的原因

别在网上瞎学了,我最近也做了一些资源的更新,只要你是我的粉丝,这期福利你都可拿走。我先来介绍一下这些东西怎么用,文末抱走。这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。最近我才对这些路线做了一下新的更新,知识体系更全面了。

2401_84572612的博客 537

反爬虫兵法演绎开篇词 _ 如何突破“爬虫反爬虫”内卷之怪现状?

由于“爬虫和反爬”是一个创新领域,所以很多定义还是很模糊的。甚至你的公司内部可能都不用“爬虫”和“反爬”这些词,可能是“抓取”和“反抓取”。为了后续的统一,这里就和你一起定义一下它们吧:爬虫:使用任何技术手段,批量获取网站信息的一种方式。关键在于批量。反爬虫:使用任何技术手段,阻止别人批量获取自己网站信息的一种方式。关键也在于批量。误伤:在反爬虫的过程中,**错误地将普通用户识别为爬虫。**误伤率高的反爬虫策略,效果再好也不能用。拦截:**成功地阻止爬虫访问。**这里会有拦截率的概念。

sucaiwa的博客 1123

盘点一些网站的反爬虫机制_友盟会反爬虫吗

具体可以先访问需要爬取的页面,获取字体文件的动态访问地址并下载字体,读取 js 渲染后的文本内容,替换其中的自定义字体编码为实际文本编码,就可复原网页为页面所见内容了。Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。每次访问论坛页面,其中字体是不变的,但字符编码是变化的。

m0_60721649的博客 1738

反爬虫常见策略总结

有爬虫就有反爬虫,这都是相辅相成的,对于长时期从事在爬虫行业的技术员来说,时刻要了解对应网站的反爬机制,才能稳定获取数据。下面就是我这几年接触过的反爬的一些案例,供大家参考下。

weixin_44617651的博客 2248
上一篇: 十进制转二进制
下一篇: turtle库的那些事1
cpkiteman
博客等级 码龄5年 9粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值