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

如何绕开网站防护抓取数据

发布网友 发布时间:2022-04-06 04:01

我来回答

3个回答

懂视网 时间: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

控制下载频率大规模集中访问对服务器的影响较大,爬虫可以短时间增大服务器负载。这里需要注意的是:设定下载等待时间的范围控制,等待时间过长,不能满足短时间大规模抓取的要求,等待时间过短则很有可能被拒绝访问。在之前“从url获取HTML”的方法里,对于httpGet的配置设置了socket超时和连接connect超时,其实这里的时长不是绝对的,主要取决于目标网站对爬虫的控制。

另外,在scrapy爬虫框架里,专有参数可以设置下载等待时间download_delay,这个参数可以设置在setting.py里,也可以设置在spider里。

IP的访问频率被*,一些平台为了防止多次访问网站,会在某个同一个IP在单元时间内超过一定的次数的时候,将禁止这个IP继续访问。对于这个*IP访问效率,可以使用代理IP的方法来解决问题比如使用IPIDEA。

采用分布式爬取分布式爬取的也有很多Githubrepo。原理主要是维护一个所有集群机器能够有效分享的分布式队列。使用分布式爬取还有另外一个目的:大规模抓取,单台机器的负荷很大,况且速度很慢,多台机器可以设置一个master管理多台slave去同时爬取。

修改User-Agent最常见的就是伪装浏览器,修改User-Agent(用户代理)。User-Agent是指包含浏览器信息、操作系统信息等的一个字符串,也称之为一种特殊的网络协议。服务器通过它判断当前访问对象是浏览器、邮件客户端还是网络爬虫。在request.headers里可以查看user-agent,关于怎么分析数据包、查看其User-Agent等信息,这个在前面的文章里提到过。

具体方法可以把User-Agent的值改为浏览器的方式,甚至可以设置一个User-Agent池(list,数组,字典都可以),存放多个“浏览器”,每次爬取的时候随机取一个来设置request的User-Agent,这样User-Agent会一直在变化,防止被墙。

综上所述,爬虫怎么突破反爬虫的方法比较多,上文从更换IP、控制下载频率、分布式爬取、修改User-Agent这四个方面介绍了突破反爬虫机制的方法,从而实现数据的爬取。

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

首先对于一个从事数据挖掘或者大数据分析的人来讲,你一定要坚信,世界上没有哪一个网站是绝对防扒的。这就意味着所有的网站只要是网站,就一定能找到相关的方法,把数据爬取下来。即使是网站有防护,也要坚定这个信心。

使用常规的IP池通过IP的不断更换。从而实现对你身份和你相关cookie技术的进一步清理和整理,包括最起码的网站IP封锁和相关的防护工程。这是所有数据采集者必须要具备的一个IP池。这是数据爬取的第一要义。

写一套非常好的爬虫系统和规则。一个好的爬虫系统后,好多爬虫规则需要能智能化的判断自己是不是已经被封了,或者能够写几套同样的规则,去从不同的方面发起相关的采集。高效的解决客户的网点问题,又能高效的解决数据的分析问题。

避免可视化的数据采集。在网站防护工程中,通常是通过你可视化,或者通过常规手段去爬取数据,还在数据的采集过程中,尽量不要去看数据,而是通过代码读取代码或传输过程中的封包截取,也就是通过数据的拦截和数据,自己的封包进行分包拆借而实现数据,抓取和挖掘。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...开始是大腿内侧,后是大腿跟上,脖子后面,再就是肚子上,现在几乎... 工程土方定额里面:人力 运输距离 0.5km以内 20m以内是什么意思 ...由诸葛亮著的《诫子训》中摘录的,问您是如何理解的?! 手把手带你将 Linux 主机配置为静态路由器 Linux配置路由功能及添加静态路由 Linux模拟路由器从实现网络模拟到运行路由器linux模拟路由器 幼儿园中班学期结束家长会稿子怎么写 幼儿园中班期末家长会的发言稿 女人在哪个年龄段性俗最强 谁知道女人多大性欲最高? Python爬取信息读写数据库问题 python 爬虫怎么处理爬取数据中含有单引号,并将其存入数据库 请大神帮忙:用python如何从外部文件提取特定的字符串,并作为一个字段存入mysql中 如何将python存入mysql 如何将该Python爬取的数据存入MySQL中,数据库表带id python爬虫爬下来的数据怎么导入到MySQL php 怎样删除文件夹下的文件 php:只会读写文件内容,如何删除文件内容呢?求提供个思路 php上传文件前判断是否存在该文件就删除 php 关于上传后的临时文件如何删除的问题 php 上传的 tmp/ 目录下有很多.tmp 文件可以删除吗? PHP如何删除类似文件 php怎么删除被选中的文件?以及上传文件后显示其大小 php怎么删除文件或者删除文件夹 php如何删除文件夹及里面的文件? php怎么取消正在上传的文件? PHP如何删除文件或文件夹 时间格式“11:57 星期四,九月 8 2016”如何转换为时间戳php strtotime(); 如何采用PHP输出本周日期及相应的星期,以及上周的日期和相应星期表格啊? 怎么在thinkphp中url去掉控制器与index.php 如何分析服务器的反爬虫机制 有哪些方法可以反爬虫? 反反爬虫技术的常用方法 设计师要懂的10个心理学技巧,你掌握了几个? 怎么用隐喻设计引导用户 求犯罪心理学测试题,越难越好,还要有答案。谢了~~ 有没有2018江西教师招聘幼儿教综试题答案解析(文字版)? 求,小学教师资格认定培训考试心理学试题(浙江省),历年考试真题答案 大学心理学考试试题及答案! 教师资格证考试——高等教育心理学试题6 教育心理学1,组织策略的常用方法有哪些 寻-自考设计心理学试题 心理学启发式的问题解决策略有哪些 教师招聘常考的15个心理学效应? python列表中依次插入不同元素 python怎么定义一个空列表后向里面新增5个元素 通过append()在列表尾部添加元素的方法 python 怎么向ndarray添加元素 python可不可以实现在列表某一位置插入多个元素 Python中在列表中任意位置插入一个元素的函数是什么