问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

当Python爬虫遇到网站防爬机制时如何处理

发布网友 发布时间:2022-04-24 18:27

我来回答

4个回答

懂视网 时间:2022-04-06 08:23

 

【相关学习推荐:网站制作视频教程】

爬虫是什么呢,简单而片面的说,爬虫就是由计算机自动与服务器交互获取数据的工具。爬虫的最基本就是get一个网页的源代码数据,如果更深入一些,就会出现和网页进行POST交互,获取服务器接收POST请求后返回的数据。一句话,爬虫用来自动获取源数据,至于更多的数据处理等等是后续的工作,这篇文章主要想谈谈爬虫获取数据的这一部分。爬虫请注意网站的Robot.txt文件,不要让爬虫违法,也不要让爬虫对网站造成伤害。

  反爬及反反爬概念的不恰当举例

  基于很多原因(如服务器资源,保护数据等),很多网站是限制了爬虫效果的。

  考虑一下,由人来充当爬虫的角色,我们怎么获取网页源代码?最常用的当然是右键源代码。

  网站屏蔽了右键,怎么办?

网站屏蔽了右键,怎么办?

  拿出我们做爬虫中最有用的东西 F12(欢迎讨论)

  同时按下F12就可以打开了(滑稽)

2.png

  源代码出来了!!

  在把人当作爬虫的情况下,屏蔽右键就是反爬取策略,F12就是反反爬取的方式。

  讲讲正式的反爬取策略

  事实上,在写爬虫的过程中一定出现过没有返回数据的情况,这种时候也许是服务器限制了UA头(user-agent),这就是一种很基本的反爬取,只要发送请求的时候加上UA头就可以了…是不是很简单?

  其实一股脑把需要不需要的Request Headers都加上也是一个简单粗暴的办法……

  有没有发现网站的验证码也是一个反爬取策略呢?为了让网站的用户能是真人,验证码真是做了很大的贡献。随验证码而来的,验证码识别出现了。

  说到这,不知道是先出现了验证码识别还是图片识别呢?

  简单的验证码现在识别起来是非常简单的,网上有太多教程,包括稍微进阶一下的去噪,二值,分割,重组等概念。可是现在网站人机识别已经越发的恐怖了起来,比如这种:

6.jpg

  简单讲述一下去噪二值的概念

  将一个验证码

3.png

变成

5.png

就是二值,也就是将图片本身变成只有两个色调,例子很简单,通过python PIL库里的

  Image.convert("1")

  就能实现,但如果图片变得更为复杂,还是要多思考一下,比如

如果直接用简单方式的话 就会变成

思考一些这种验证码应该怎么识别?这种时候 去噪 就派上了用处,根据验证码本身的特征,可以计算验证码的底色和字体之外的RGB值等,将这些值变成一个颜色,将字体留出。示例代码如下,换色即可

  for x in range(0,image.size[0]):
  for y in range(0,image.size[1]):
  # print arr2[x][y]
  if arr[x][y].tolist()==底色:
  arr[x][y]=0
  elif arr[x][y].tolist()[0] in range(200,256) and arr[x][y].tolist()[1] in range(200,256) and arr[x][y].tolist()[2] in range(200,256):
  arr[x][y]=0
  elif arr[x][y].tolist()==[0,0,0]:
  arr[x][y]=0
  else:
  arr[x][y]=255

  arr是由numpy得到的,根据图片RGB值得出的矩阵,读者可以自己尝试完善代码,亲自实验一下。

  细致的处理之后图片可以变成

识别率还是很高的。

  在验证码的发展中,还算清晰的数字字母,简单的加减乘除,网上有轮子可以用,有些难的数字字母汉字,也可以自己造轮子(比如上面),但更多的东西,已经足够写一个人工智能了……(有一种工作就是识别验证码…)

  再加一个小提示:有的网站PC端有验证码,而手机端没有…

  下一个话题!

  反爬取策略中比较常见的还有一种封IP的策略,通常是短时间内过多的访问就会被封禁,这个很简单,限制访问频率或添加IP代理池就OK了,当然,分布式也可以…

  IP代理池->左转Google右转baidu,有很多代理网站,虽然免费中能用的不多 但毕竟可以。

  还有一种也可以算作反爬虫策略的就是异步数据,随着对爬虫的逐渐深入(明明是网站的更新换代!),异步加载是一定会遇见的问题,解决方式依然是F12。以不愿透露姓名的网易云音乐网站为例,右键打开源代码后,尝试搜索一下评论

8.png

  数据呢?!这就是JS和Ajax兴起之后异步加载的特点。但是打开F12,切换到NetWork选项卡,刷新一下页面,仔细寻找,没有秘密。

7.png

  哦,对了 如果你在听歌的话,点进去还能下载呢…

4.png

  仅为对网站结构的科普,请自觉抵制盗版,保护版权,保护原创者利益。

  如果说这个网站限制的你死死的,怎么办?我们还有最后一计,一个强无敌的组合:selenium + PhantomJs

  这一对组合非常强力,可以完美模拟浏览器行为,具体的用法自行百度,并不推荐这种办法,很笨重,此处仅作为科普。

热心网友 时间:2022-04-06 05:31

绕过反爬虫机制的方法

 

1、模拟正常用户。反爬虫机制还会利用检测用户的行为来判断,例如Cookies来判断是不是有效的用户。

 

2、动态页面*。有时候发现抓取的信息内容空白,这是因为这个网站的信息是通过用户的XHR动态返回内容信息。解决这种问题就要爬虫程序对网站进行分析,找到内容信息并抓取,才能获取内容。

 

3、降低IP访问频率。有时候平台为了阻止频繁访问,会设置IP在规定时间内的访问次数,超过次数就会禁止访问。所以绕过反爬虫机制可以降低爬虫的访问频率,还可以用IPIDEA代理IP换IP解决*。

热心网友 时间:2022-04-06 06:49

User-Agent伪装和轮换,设置访问时间间隔,使用芝麻代理。

热心网友 时间:2022-04-06 08:23

最简单最直接的办法是使用HTTP代理IP,例如代理云,拥有国内海量高质量HTTP代理IP资源,全国地区散段分布,IP的质量、稳定性、安全性都值得信赖。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
神九返回后轨道舱分离去哪里了,是在轨道继续运行,还是不管了。天宫一... 空间站通常由对接舱、气闸舱、轨道舱、生活舱、服务舱、专用设备... 为什么不让神舟七号的轨道舱留在天上让神州八号去追? 洗衣机生产厂家 狗鱼好吃吗? 洪霞的爷爷知识很丰富,你能用哪些成语来形容他 用什么成语可以形容包罗各种各样的想法 什么万千的成语有哪些 重庆哪些考研大学 重庆师范大学考研好不好考 手q阅读中的推荐票有什么作用 python爬虫怎么获取到的网站的所有url 爸爸姓郑,妈妈姓姜,女孩子,起什么名字好听?评分在95分以上。谢谢大家,急。 吃达那唑可以喝酒吗 零基础学游戏策划难吗 求 郑姓 女孩 名字,最好是两个字,诚恳的谢谢大家! 手q阅读亮度可以调吗,怎样调 达那唑可以不可以直接断药吗 如何从零开始学习游戏策划? 一个游戏策划的基础技能? 最好听的郑姓中国女孩名字 喝陈醋饮料对身体有什么好处呢? 新小说作品如何在手Q阅读(即QQ阅读)上架的? 喝了一瓶醋后该吃什么对,身体才会舒服点 。 求大师取名郑姓100分女孩名字 游戏策划需要些什么基础?需要了解一些什么? python爬虫时怎么找小说id 郑姓女孩洋气的名字 这些名字超不错 跪求用Python网络爬虫爬取书籍目录的代码(例如爬取Python神经网络编程... 喝醋会有哪些神奇的功效呢? 游戏系统策划都需要掌握什么知识,需要什么能力才可以做 云起书院的书签约才能同步到手q阅读了吗? 自学游戏策划入门有哪些值得推荐的书 QQ阅读怎么查看自己的书评? 关于完全基础的人,如何学习成为一名游戏策划(剧情和关卡) 自学游戏策划需要具备哪些条件 如何让QQ阅读有更多的书币啊 没有经验,想做游戏策划,应该怎么入门 游戏策划难学吗? QQ阅读中三个*代表什么意思? 游戏策划需要学习哪些知识,需要哪些技能,哪些素质。 手机QQ里打卡获得“手Q阅读限免黄金礼包”怎么用 游戏策划和普通策划有什么区别? 想学游戏策划方面 想做游戏策划需要具备什么技能? 一个合格的游戏策划应该具备哪些基本条件或者说能力 有什么手机软件可以使朗读出来的字转化为文字 哪种软件能把声音同步转化成文字呢 天津是有个航空航天大学吗? 天津航天航空大学是一本大学吗