User-Agent反爬虫的原理和绕过方法
大家好,我是志斌~
昨天的文章已经简单给大家介绍过反爬虫了,那我们今天就不再废话,直接来学信息校验型反爬虫中的User-Agent反爬虫。
一、定义
User-Agent是一种请求头,服务器可以从User-Agent对应的值中来识别用户端使用的操作系统、浏览器、浏览器引擎、操作系统语言等等。
浏览器User-Agent通常由浏览器标识、渲染引擎标识、版本信息这三部分来构成。我们可以在这个位置来查看我们的User-Agent请求头值。
二、原理
我们通过浏览器来获取数据的方式是这样的:
我们通过爬虫来获取数据的方式是这样的:
所以,我们的爬虫程序,实际上是模拟浏览器对服务器发送请求来获取数据的。
在向服务器发送的网络请求中,User-Agent是客户端用于表明身份的一种标识。所以,反爬虫工程师可以将一些爬虫程序的请求头放入服务器访问的黑名单中,当有网络请求时通过检测User-Agent请求头域值来判断客户端的类型,将其与黑名单中数据进行比对,一致时则拒绝其访问,从而有效的限制一些爬虫程序。
三、绕过
User-Agent请求头域的值是可以修改的。Requests.get()请求中有一个headers参数,可以将我们修改后的User-Agent加入,然后将爬虫程序伪装成浏览器,以此来骗过反爬虫程序。伪装代码如下:
headers = {'Connection': 'keep-alive','Cache-Control': 'max-age=0','sec-ch-ua': '"Google Chrome";v="89", "Chromium";v="89", ";Not A Brand";v="99"','sec-ch-ua-mobile': '?0','Upgrade-Insecure-Requests': '1','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9','Sec-Fetch-Site': 'same-origin','Sec-Fetch-Mode': 'navigate','Sec-Fetch-User': '?1','Sec-Fetch-Dest': 'document','Referer': 'https://bj.ke.com/','Accept-Language': 'zh-CN,zh;q=0.9',
}
response = requests.get(url, headers=headers)
四、小结
User-Agent检验是一种最为初级的反爬虫方式,主要是通过服务器黑名单来限制爬虫的反爬虫方式。
对于有一定基础的小伙伴来说,这种方式基本不能够限制大家。
现在很多网站基于User-Agent检验上又增加了访问频率限制,即同一User-Agent在单位时间内访问频率过高,也会默认是爬虫,从而拉入黑名单,所以我们如果要大量需要的话,可以尝试搭建一个User-Agen池,来更好的伪装自己。
本文旨在学习与研究User-Agent检验反爬虫,请大家不要用于非法用途。
User-Agent反爬虫的原理和绕过方法相关推荐
- WebDriver 识别反爬虫的原理和破解方法~
作者|志斌 来源|python笔记 有时候我们在爬取动态网页的时候,会借助渲染工具来进行爬取,这个"借助"实际上就是通过使用相应的浏览器驱动(即WebDriver)向浏览器发出命令 ...
- java 反爬虫_springboot反爬虫组件kk-anti-reptile的使用方法
大家好,我是为广大程序员兄弟操碎了心的小编,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效率,实现不加班不熬夜不掉头发,是我的目标! 今天小编推荐一款反爬虫组件叫kk ...
- windows溢出保护原理与绕过方法概览(转自riusksk's blog(泉哥))
前言 从20世纪80年代开始,在国外就有人开始讨论关于溢出的攻击方式.但是在当时并没有引起人们的注意,直至后来经一些研究人员的披露后,特别是著名黑客杂 志Phrack上面关于溢出的经典文章,引领许多人 ...
- python反爬虫破解_python中绕过反爬虫的方法总结
我们在登山的途中,有不同的路线可以到达终点.因为选择的路线不同,上山的难度也有区别.就像最近几天教大家获取数据的时候,断断续续的讲过header.地址ip等一些的方法.具体的爬取方法相信大家已经掌握住 ...
- 网站识别selenium爬虫的原理以及解决方法
我们经常会拿selenium进行自动登录来搭建cookie池,对于不想自己网站被爬的站主/开发人员来说,防止自动化脚本操作网站自然是反爬必须要做的工作.那么,他们究竟有哪些手段来检测用户是否是sele ...
- 搜狗微信反爬虫机制探讨及应对方法
最近项目中,由于需要从微信公众号中获取一些文章内容,所以用到了搜狗微信.一旦搜索的次数稍微多一点,就会触发搜狗微信的反爬虫机制,最初是需要加上User-Agent请求头,后来是要求输入验证码,现在输入 ...
- UAC 实现原理及绕过方法
目录 0x00 UAC 工作流程 0x01 UAC 实现方法(用户登陆过程) 0x02 UAC 架构 0x03 触发UAC 0x04 UAC 虚拟化 0x05 UAC 逆向分析 1x00 UAC By ...
- java 前端页面传过来的值怎么防止篡改_反爬虫,到底是怎么回事儿?
有位被爬虫摧残的读者留言问:「网站经常被外面的爬虫程序骚扰怎么办,有什么方法可以阻止爬虫吗? 」 这是个好问题,自从 Python 火了起来,编写爬虫程序的门口越来越低,爬取别人网站数据也越来越猖獗. ...
- java+如何解决反爬虫_反爬虫,到底是怎么回事儿?
原标题:反爬虫,到底是怎么回事儿? 有位被爬虫摧残的读者留言问:「网站经常被外面的爬虫程序骚扰怎么办,有什么方法可以阻止爬虫吗? 」 这是个好问题,自从 Python 火了起来,编写爬虫程序的门口越来 ...
最新文章
- 74HC595的使用
- python3 scrapy+Crontab部署过程
- jQuery 3.1.1 官方下载地址
- 一个PHP程序的“怪问题”
- Android数据存储的三种方式-SharedPrefrences,File,SQLite
- android友盟错误日志,Taro(React-native)集成友盟错误日志分析U-App移动统计
- /proc/sys/vm虚拟内存参数
- 联想投资服务器5g芯片,从5G投票到要没必要做芯片,联想到了最危险的时候
- vb 循环放音乐_为何洒水车一直无限循环播放《兰花草》这首歌呢?
- centos7 安装Gitlab
- 日期和时间的格式化定义(ISO C89)
- 封装的ini文件类。保存为unicode的。解决delphi xe的TiniFile保存后不为unicode的问题...
- 数据分析 -- 流程
- 软件工程-东北师大站-第六次作业PSP
- jQuery实现文字左右收缩效果示例
- 音乐文件加密歌曲转换器mp3
- 八个机器学习非常重要的应用领域,每个领域都影响着我们的生活
- 平安人寿保险-深圳Java开发工程师社招面试
- web面向接口_面向未来的响应式Web开发
- 怎么设置计算机网络打印机共享,打印机共享设置,告诉你打印机共享怎么设置...
热门文章
- 故障修复:mswinsck 加载失败
- 文化苦旅 余秋雨著
- 异性相处,关系再好,也要懂得这些“分寸”
- SVN强制编写注释才能提交,提交中不允许删除文件操作。
- 浏览器历史记录的模式
- shell运行python脚本报错没有包_脚本安装Discuz论坛(shell + Python 实现自动化安装)...
- 【企业架构】确定策略和动机
- N的阶乘递归与非递归
- 基于labview开发平台的声音信号采集及处理系统设计(任务书+lunwen+翻译及原文+vi源文件+查重报告)
- 使用卷积神经网络(普通CNN和改进型LeNet)以及数据增强和迁移学习技巧识别猫和狗,并制作成分类器软件(基于Keras)