百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

细说小白学python爬虫过程中常见的反爬措施及解决思路(干货)

off999 2024-10-04 18:52 20 浏览 0 评论

最近有很多朋友和我讨论python爬虫遇到的反爬措施及解决办法,今天我就给大家分享一下自己在爬虫过程中遇到的坑及解决思路,希望对大家有所帮助。


?看不见的反爬措施

一是加header头部信息:

什么是header头?

以火狐浏览器为例,右键—查看元素—进入网络界面,然后输入https://www.baidu.com进入百度主页:

红框内的部分就是该次请求的header头,服务器可以根据header头判断该次请求是由哪种浏览器(User-Agent)发起、访问的目标链接是从哪个网页跳转过来的(Referer)以及服务器地址(Host)。

1.加User-Agent值:


如果不加header头,部分网站服务器判断不到用户的访问来源,所以会返回一个404错误来告知你是一个爬虫,拒绝访问,解决办法如下:

这样服务器就会把用户当做浏览器了。建议每次爬虫都把User-Agnet头加上,起码是对人家网站的尊重

2.加Referer值


这类反爬网站也很常见,例如美团,仅仅加User-Agnet还是返回错误信息,这时就要把Referer值也加到头部信息中:

这样就会返回正常网页了。

3.加Host值


根据同源地址判断用户是否为爬虫,解决办法为:

4.加Accept值


之前遇到过这种网站,我加了一圈header头部信息才成功,最后发现是需要加Accept值,这类反爬措施的解决办法为:

关于header头的反爬,建议在加上User-Agent失败之后,就把所有头部信息加上,最后用排除法选出到底是哪个值。

二是限制IP的请求数量:

这种就更常见了,大部分网站都有此类反爬措施,也就是说网站服务器会根据某个ip在特定时间内的访问频率来判断是否为爬虫,然后把你把你拉进“黑名单”,素质好的给你返回403或者出来个验证码,素质不好的会给你返回两句脏话。此种情况有两种解决办法:

①降低爬虫请求速率,但是会降低效率;

②添加代理ip,代理ip又分为付费的和不要钱的,前者比较稳定,后者经常断线。
添加格式为:

三是Ajax动态请求加载
这类一般是动态网页,无法直接找到数据接口,以某易新闻网站为例:

我想爬取该网页内的新闻图片,发现它的网页url一直不变,但是下拉网页的时候会一直加载图片,那么我们该怎么办呢?

首先按照开头方式打开流量分析工具

点击左上角“垃圾桶”图标清空缓存,然后下拉新闻网页:

会出现一大堆东西,但是不用慌,我们可以根据类型去寻找,一般图片信息肯定实在html、js或json格式的文件中,一个一个点进去看看,很快就找到了结果:

结果中把callback去掉之后就是个json文件,它的url为:

红线处为变量,02代表第2页,这样就找到图片接口啦。

看的见的反扒措施

一是登录才有数据,比如某查查:

这种一般有三种解决办法,一是requests模拟登录,但是会有参数加密的问题和验证码的问题,有点难;二是selenium模拟登录,要解决验证码的问题;三是手动登录后获取cookie,在requests中加入cookie,这种方法比较简单,但是受cookie有效期的限制,要经常更换cookie。

关于验证码的问题,我很头大,因为验证码实在是种类太多了,而且还很变态,例如下图:

我用眼都很难瞅出来,程序就更难说了,索性直接用打码网站,价格不贵,准确率又低。

二是限制网页返回数据条数:


例如微博评论,最多只能返回50页的评论数据,这种反扒措施暂时没有好的解决办法,除非能找到特殊接口。

三是多次验证:


例如12306网站,用requests实现自动抢票时,浏览器会和服务器进行多次交互验证,有的验证虽然不返回任何数据,但是还必须要有,否则下一个url的请求就会出错。

四是网站数据加密:


也就是说网站服务器返回的数据经过某种加密算法进行加密,这个时候你就要学习前端知识了,因为加密方式一般都隐藏在JavaScript代码中,如果你学会这一技能,基本可以应聘爬虫工程师的岗位了。

五是APP数据:


没有网页数据,例如二手交易平台某鱼

爬这类数据一般有两种方法:一是边爬边处理,即用appium模拟点击滑动手机界面,然后用mitmdump在后端监测并保存数据,这种方法比较简单;二是做逆向分析,这个过程是很难的,目前这部分知识小编也正在学习中,希望有机会能和大家一起交流。

以上都是我在爬虫实践中遇到的一些反爬措施,希望能对大家的爬虫学习之路起到抛砖引玉的作用。

精彩回顾:
你是如何用python写下第一个爬虫的?

用python制作全国身份证号验证及查询系统

北京的房价到底有多贵?我爬取了3万多条数据得出分析结果

相关推荐

SPC相关的计算用excel和python实现【源码下载】

做SPC分析涉及到很多计算,比如CPK、PPK、概率图、PPM等等,网上很多公式,但具体实现却不是那么容易的。我们整理了这些用excel和python实现的代码。包括但不限于以下的内容:SPC分析中的...

Python学不会来打我(34)python函数爬取百度图片_附源码

随着人工智能和大数据的发展,图像数据的获取变得越来越重要。作为Python初学者,掌握如何从网页中抓取图片并保存到本地是一项非常实用的技能。本文将手把手教你使用Python函数编写一个简单的百度图片...

django python数据中心、客户、机柜、设备资源管理平台源码分享

先转发后关注,私信“资源”即可免费获取源码下载链接!本项目一个开源的倾向于数据中心运营商而开发的,拥有数据中心、客户、机柜、设备、跳线、物品、测试、文档等一些列模块的资源管理平台,解决各类资源集中管理...

熬夜也值得学习练手的108个Python项目(附源码),太实用了!

现在学编程的人越来越多,Python因为简单好上手、功能又强大,成了很多人的首选。不管是做数据分析、人工智能,还是写网络程序、自动化脚本,Python都能派上用场。而且它诞生的时间比网页还早,作为...

这五个办公室常用自动化工具python源码,复制代码就能用

办公室自动化现在能看这文章的恐怕大部分都是办公室久坐工作者,很多都有腰肌劳损、肩周炎等职业病,难道就不能有个工具缓解一下工作量吗?那么恭喜你点进了这篇文章,这篇文章将使用python直接实现五个常...

将python源代码封装成window可执行程序教程

将python源代码封装成window可执行程序教程点击键盘win+r打开运行框在运行框中输入cmd,进入到命令行。在命令行中输入piplist去查看当前电脑中所有的库检查是否有pyinstall...

Python 爬虫如何爬取网页源码?(爬虫获取网页源代码)

下面教大家用几行代码轻松爬取百度首页源码。什么是urllib?urllib库是Python内置的HTTP请求库,它可以看做是处理URL的组件集合。urllib库包含了四大模块,具体如下:urllib....

Python RPC 之 Thrift(python是做什么的)

thrift-0.12.0python3.4.3Thrift简介:Thrift是一款高性能、开源的RPC框架,产自Facebook后贡献给了Apache,Thrift囊括了整个RP...

用Python编写FPGA以太网MAC(附源码下载方式)

来源:EETOP作者:ccpp123略作了解后发现,MyHDL不是高层次综合,它实际上是用Python的一些功能实现了一个Verilog仿真器,能对用Python写的仿Verilog语言进行仿...

python爬虫常用工具库总结(python爬虫工具下载)

说起爬虫,大家可能第一时间想到的是python,今天就简单为大家介绍下pyhton常用的一些库。请求库:实现基础Http操作urllib:python内置基本库,实现了一系列用于操作url的功能。...

手把手教你使用scrapy框架来爬取北京新发地价格行情(理论篇)

来源:Python爬虫与数据挖掘作者:霖hero大家好!我是霖hero。上个月的时候,我写了一篇关于IP代理的文章,手把手教你使用XPath爬取免费代理IP,今天在这里分享我的第二篇文章,希望大家可以...

2025年Python爬虫学习路线:第1阶段 爬虫基础入门开始

这个阶段的目标是让你熟悉Python的基础知识、了解HTTP请求和HTML是如何工作的,并最终完成你的第一个爬虫小项目——抓取名言!按照计划,我们首先要打好Python基础。Python就像是我们要...

如何入门 Python 爬虫?(python零基础爬虫)

1.很多人一上来就要爬虫,其实没有弄明白要用爬虫做什么,最后学完了却用不上。大多数人其实是不需要去学习爬虫的,因为工作所在的公司里有自己的数据库,里面就有数据来帮助你完成业务分析。什么时候要用到爬虫呢...

突破爬虫瓶颈:Python爬虫核心能力提升与案例实操

技术控必看!Python爬虫高手进阶全攻略,解锁数据处理高阶玩法在数字化时代,Python爬虫早已成为数据探索者手中的得力工具。从基础的网页抓取到复杂的数据处理,每一次技术升级都能带来新的突破。本文将...

网络爬虫开源框架(网络爬虫的框架)

目前开源爬虫下载框架是百花齐放,各个编程语言都有,以下主要介绍其中重要的几个:1)python:scrapy,pyspider,gcrawler2)Java:webmagic,WebCollector...

取消回复欢迎 发表评论: