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

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

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

————————————————

版权声明:本文为CSDN博主「Python新世界」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_46089319/article/details/106056683

看不见的反爬措施

一是加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在后端监测并保存数据,这种方法比较简单;二是做逆向分析。

讨论、交流。加Q群313074041领取

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343