| |
|
开发:
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知识库]关于爬虫反爬机制处理方法(整合) |
常见得反爬机制及解决办法1、针对请求头做出得反爬简介:网站通过去检查headers中的User-Agent字段来反爬,如果我们没有设置请求头,那么headers默认是python这样就会出现访问失败、没有权限等原因,如果去伪造一个请求头是可以避开得,不过如果短时间内频繁使用同一个User-Agent访问可能会被检测出来导致被封掉爬虫 解决办法:通过fake_useragent构造随机请求头 第一步:下载fake_useragent可以直接在cmd当中输入:
接下来设置代码如下:
到这里得时候其实已经写好了,但肯定有小伙伴会想着去测试一下是不是真的自己使用了随机请求头那么我们去访问??http://httpbin.org/headers 看下返回得请求头数据 第二步:验证请求头
运行两次结果如下? ?可以发现请求头已经发生了变化并且每次不一样 补充说明一点:在使用fake_useragent有时候会报错第一个原因可能是UserAgent列表发生了变动,而本地UserAgent的列表未更新所导致 解决方法可以参考这篇文章? 如果通过上面那篇文章还是没有解决报错可以参考下面这篇 然后得话还有一个要注意得地,用这个方法爬取某些网站得时候获取网站源代码,你会发现获取得竟然是一个提示,提示说浏览器版本太老啦,其实这个原因就是fake_useragent里面浏览器版本确实挺低得,遇到这种情况用自己得浏览器请求头就可以解决,可以这样写
?2、针对ip做出得反爬简介:网站后台检测到IP频繁访问,从而封掉IP地址 解决办法:使用代理IP 或者构建IP代理池 ?使用代理IP的话个人是比较推荐快代理的隧道代理?快代理 - 企业级代理云服务提供商 (kuaidaili.com) 原因嘛就是可以每次请求更换IP地址配合上面说的随机请求头更加保险 当然设置起来也是很简单的他们官方有专门的技术文档,在代码样例里面可以看到也是支持下载代码到本地? ? 3、账号封禁简介:有的网站必须要求登录账号才能继续访问,如果我们用一个账号爬取过于频繁就会导致这个账号被封禁 解决办法:使用接码平台注册账号(这里不过多讲解具体操作,自己百度一下吧~) 4、处理验证码简介:我们在爬取一些网站的时候它们并不是静态页面,而是通过Ajax交互来异步更新网页 解决办法:分析其JS接口、使用selenium模拟浏览器来获取数据(后面得话都是将如何用selenium获取数据,因为分析JS接口有些网站会加密本人目前暂时不会JS逆向,下次一定补上)
1、处理普通的图像验证码列如:? 这种的话可以使用tesseract这个库去识别,但是吧这样费时费力而且识别准确度不高不如直接动用打码平台快,可以使用超级鹰打码平台便宜速度还快 处理方法参考我写的另外一篇文章: 2、处理图像识别列如: ?这种我依然使用的超级鹰打码,不过的话有些图片实在是太模糊识别成功率吧~不会太高不过勉强能用 处理方法参考我写的另外一篇文章: 3、处理滑块验证??这种我们使用opencv来识别缺口从而模拟拖动 处理方法如下: 4、使用selenium获取cookie,并且携带cookie信息登录从而避免再次认证之前我们不是已经介绍了验证码如何处理嘛,那我们第一次模拟登录之后下一次总不能在继续识别验证码之后在登陆吧,这样很烧钱得呀(超级鹰识别要钱,虽然不贵但那也是钱嘛)而且还不能保证成功率,所以我们模拟登录之后需要获取其cookie信息下次在登录直接携带即可 处理方法参考我写的另外一篇文章: 好了反爬整合就写到这里拉,以后想起啥在补充吧 声明
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/15 23:37:35- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |