浅谈爬虫及绕过网站反爬取机制

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

[[213360]]

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

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

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

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

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

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

源代码出来了!!

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

讲讲正式的反爬取策略

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

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

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

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

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

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

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

  1. Image.convert("1") 

就能实现,但如果图片变得更为复杂,还是要多思考一下,比如如果直接用简单方式的话 就会变成思考一些这种验证码应该怎么识别?这种时候 去噪 就派上了用处,根据验证码本身的特征,可以计算验证码的底色和字体之外的RGB值等,将这些值变成一个颜色,将字体留出。示例代码如下,换色即可

  1. for x in range(0,image.size[0]): 
  2.  
  3.         for y in range(0,image.size[1]): 
  4.  
  5.             # print arr2[x][y] 
  6.  
  7.             if arr[x][y].tolist()==底色: 
  8.  
  9.                 arr[x][y]=0 
  10.  
  11.             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): 
  12.  
  13.                 arr[x][y]=0 
  14.  
  15.             elif arr[x][y].tolist()==[0,0,0]: 
  16.  
  17.                 arr[x][y]=0 
  18.  
  19.             else: 
  20.  
  21.                 arr[x][y]=255 

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

细致的处理之后图片可以变成识别率还是很高的。

 

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

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

下一个话题!

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

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

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

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

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

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

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

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

总结

本文主要讨论了部分常见的反爬虫策略(主要是我遇见过的(耸肩))。主要包括 HTTP请求头,验证码识别,IP代理池,异步加载几个方面,介绍了一些简单方法(太难的不会!),以Python为主。希望能给初入门的你引上一条路。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/125122.html<

(0)
运维的头像运维
上一篇2025-02-23 14:43
下一篇 2025-02-23 14:44

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注