python反扒机制的5种解决方法


Posted in Python onFebruary 06, 2021

前言

反爬虫是网站为了维护自己的核心安全而采取的抑制爬虫的手段,反爬虫的手段有很多种,一般情况下除了百度等网站,反扒机制会常常更新以外。为了保持网站运行的高效,网站采取的反扒机制并不是太多,今天分享几个我在爬虫过程中遇到的反扒机制,并简单介绍其解决方式。

基于User-Agent反爬

简介:服务器后台对访问的User_Agent进行统计,单位时间内同一User_Agent访问的次数超过特定的阀值,则会被不同程度的封禁IP,从而造成无法进行爬虫的状况。

解决方法:

一 . 将常见的User-Agent放到ua_list中,以列表形式进行随机使用

代码示例:

python反扒机制的5种解决方法

二. 加载fake_useragent库,随机生成User-Agent添加到headers中

代码示例:

python反扒机制的5种解决方法

2 基于IP反爬

简介: 爬虫程序可能会在短时间内对指定的服务器发起高频的请求。后台服务器对访问进行统计,单位时间内同一IP访问的次数超过一个特定的值(阀值),就会不同程度的禁封IP,导致无法进行爬虫操作。

解决方法:使用代理池,并设定延迟访问

如何获取代理服务器?免费:西祠代理、快代理、goubanjia 收费:代理精灵等

代码示例:

python反扒机制的5种解决方法

3 基于cookie反扒

简介:网站会通过cookie跟踪你的访问过程,如果发现有爬虫行为会立刻中断你的访问,比如特别快的填写表单,或者短时间内浏览大量页面。而正确地处理cookie,又可以避免很多采集问题,建议在采集网站过程中,检查一下这些网站生成的cookie,然后想想哪一个是爬虫需要处理的。

解决方法:

一 手动处理

将cookie封装到headers字典中,将该字典作用到get/post方法的headers参数中

二 自动处理

需要两次处理。第一次是为了捕获和存储cookie到session对象中,第二次就是用携带cookie的session进行请求发送,这次请求发送就是携带cookie发起的请求。可以跟requests一样调用get/post进行请求的发送。在使用session进行请求发送的过程中,如果产生了cookie,则cookie会被自动存储session对象中

代码示例:

#基于session自动处理
cookiesess = requests.Session() 
#该次请求只是为了捕获cookie存储到sess中
sess.get(url='https://xueqiu.com/',headers=headers)
url = 'https://xueqiu.com/v4/statuses/public_timeline_by_category.json?since_id=-1&max_id=20367942&count=15&category=-1'
json_data = sess.get(url=url,headers=headers).json()json_data

4 图片懒加载

简介:图片懒加载是一种网页优化技术。图片作为一种网络资源,在被请求时也与普通静态资源一样,将占用网络资源,而一次性将整个页面的所有图片加载完,将大大增加页面的首屏加载时间。为了解决这种问题,通过前后端配合,使图片仅在浏览器当前视窗内出现时才加载该图片,达到减少首屏图片请求数的技术就被称为“图片懒加载”。在网页源码中,在img标签中首先会使用一个“伪属性”(通常使用src2,original......)去存放真正的图片链接而并非是直接存放在src属性中。当图片出现到页面的可视化区域中,会动态将伪属性替换成src属性,完成图片的加载。

解决方法:通过细致观察页面的结构,发现图片的链接真正链的伪属性中,一般不在src中,而是src2中,xpath要使用该属性

示例代码:

python反扒机制的5种解决方法

5 Ajax动态加载

简介:从网页的 url 加载网页的源代码之后,会在浏览器里执行JavaScript程序。这些程序会加载出更多的内容,并把这些内容传输到网页中。这就是为什么有些网页直接爬它的URL时却没有数据的原因。现在这样的网站也越来越多。
解决方法:使用审查元素分析”请求“对应的链接(方法:右键→审查元素→Network→清空,点击”加载更多“,出现对应的GET链接寻找Type为text/html的,点击,查看get参数或者复制Request URL),循环过程。如果“请求”之前有页面,依据上一步的网址进行分析推导第1页。以此类推,抓取抓Ajax地址的数据。对返回的json使用requests中的json进行解析,观察动态加载的规律,在请求头中对规律进行使用

抓包工具推荐:fiddler

到此这篇关于python反扒机制的5种解决方法的文章就介绍到这了,更多相关python反扒机制内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
使用Python生成url短链接的方法
May 04 Python
python妙用之编码的转换详解
Apr 21 Python
python数据结构链表之单向链表(实例讲解)
Jul 25 Python
python 接口_从协议到抽象基类详解
Aug 24 Python
Python实现学校管理系统
Jan 11 Python
基于Python实现定时自动给微信好友发送天气预报
Oct 25 Python
python版DDOS攻击脚本
Jun 12 Python
对Python _取log的几种方式小结
Jul 25 Python
Python @property使用方法解析
Sep 17 Python
Python打包工具PyInstaller的安装与pycharm配置支持PyInstaller详细方法
Feb 27 Python
django迁移文件migrations的实现
Mar 31 Python
python如何输出反斜杠
Jun 18 Python
Python 爬取淘宝商品信息栏目的实现
Feb 06 #Python
解决pytorch下出现multi-target not supported at的一种可能原因
Feb 06 #Python
pytorch下的unsqueeze和squeeze的用法说明
Feb 06 #Python
一文带你掌握Pyecharts地理数据可视化的方法
Feb 06 #Python
解决pycharm不能自动保存在远程linux中的问题
Feb 06 #Python
Python第三方库安装缓慢的解决方法
Feb 06 #Python
python中threading和queue库实现多线程编程
Feb 06 #Python
You might like
php下把数组保存为文件格式的实例应用
2010/02/08 PHP
php通过隐藏表单控件获取到前两个页面的url
2014/09/09 PHP
PHP嵌套输出缓冲代码实例
2015/05/12 PHP
微信企业转账之入口类分装php代码
2018/10/01 PHP
jquery中交替点击事件toggle方法的使用示例
2013/12/08 Javascript
jQuery.Highcharts.js绘制柱状图饼状图曲线图
2015/03/14 Javascript
javascript显示中文日期的方法
2015/06/18 Javascript
简单的jQuery入门指引
2015/07/28 Javascript
JavaScript获取当前cpu使用率的方法
2015/12/15 Javascript
轻松实现Bootstrap图片轮播
2020/04/20 Javascript
AngularJS实现Model缓存的方式
2016/02/03 Javascript
jQuery中实现prop()函数控制多选框(全选,反选)
2016/08/19 Javascript
node.js + socket.io 实现点对点随机匹配聊天
2017/06/30 Javascript
vue的传参方式汇总和router使用技巧
2018/05/22 Javascript
浅谈Webpack 是如何加载模块的
2018/05/24 Javascript
优雅地使用loading(推荐)
2019/04/20 Javascript
详解NodeJs项目 CentOs linux服务器线上部署
2019/09/16 NodeJs
[05:08]DOTA2-DPC中国联赛3月6日Recap集锦
2021/03/11 DOTA
python单例模式实例分析
2015/04/08 Python
复习Python中的字符串知识点
2015/04/14 Python
Python列出一个文件夹及其子目录的所有文件
2016/06/30 Python
详解Django rest_framework实现RESTful API
2018/05/24 Python
Python正则表达式和元字符详解
2018/11/29 Python
美国木工工具和用品商店:Woodcraft
2019/10/30 全球购物
项目经理任命书范本
2014/06/05 职场文书
社区文艺活动方案
2014/08/19 职场文书
个人收入证明模板
2014/09/18 职场文书
党员组织生活会发言材料
2014/10/17 职场文书
2014年文秘工作总结
2014/11/25 职场文书
爱心捐助活动总结
2015/05/09 职场文书
小兵张嘎观后感300字
2015/06/03 职场文书
2016七夕情人节感言
2015/12/09 职场文书
测量JavaScript函数的性能各种方式对比
2021/04/27 Javascript
go语言中fallthrough的用法说明
2021/05/06 Golang
Python进行区间取值案例讲解
2021/08/02 Python
CSS控制继承中的height能变为可继承吗
2022/06/10 HTML / CSS