爬虫是什么?浅谈爬虫及绕过网站反爬取机制

所属分类: 网站运营 / 网站策划 阅读数: 104
收藏 0 赞 0 分享

  爬虫是什么呢,简单而片面的说,爬虫就是由计算机自动与服务器交互获取数据的工具。爬虫的最基本就是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

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

  总结

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

更多精彩内容其他人还在看

电子商务网站转型的几个方向

为了给电子商务平台买卖双方以更大的吸引力,或许可以从企业本身的需求上得到一点启发: 第一、终端消费群体对生活品质的要求不会因为经济环境的恶化而降低标准,性价比足够高的商品仍然具有吸引力; 第二、采购商和供应商经营成本的增加必定导致终端产品价格的上涨
收藏 0 赞 0 分享

做网站内容为王

 笔者亲身经历过网站发展的过程,中国网店网从开始建立的毫无流量,毫无内容到现在逐步发展起来,感触和体会非常多,其中经历了太多太多的抉择,做网站到底是追求流量还是追求内容?亦或是追求用户?笔者用了大量的时间去思考这个问题,看着自己负责的网站一步一步的
收藏 0 赞 0 分享

互联网应该进军高端付费用户

互联网进军高端付费用户吧! --我不是不愿意付费,我需要的是能让我产生付费冲动的服务。 经常被同事们批评,老嫌弃我是高端用户,我真的很想辩解,我没进互联网这一行工作的时候,我就是高端用户了。 8年前,我就开始愿意为互联网付费。由此可见,高不高端是天生的
收藏 0 赞 0 分享

站长!其实你的思维可以更“变态”些!

按正常的理论来说,一般成功的站长,多多少少“头脑”都有点问题!也可以说比常人更“变态”!当然我说的“头脑有问题”、“变态”并不是医学上的哪些病,而是说这些成功人士一般想法和做事风格往往超出别人的想象,正是因为这样,才会有许多不同的特色成功站点出现
收藏 0 赞 0 分享

靠网站致富的梦想破灭,站长的前途在哪里?

 日赚500元,这是广大中小站长朋友们的一个不大不小的梦想。但是时过境迁,当今互联网早已非昨日之网络世界,有一些变动因素是我们不得不考虑的,日赚500元的不可行性分析笔者将主要从以下六个方面进行简要的分析。  其一,网民经验的丰富。  由于网民的经验越
收藏 0 赞 0 分享

用户体验都是从哪个角度做的

网站面向终端,用户体验的差别直接影响网站的发展。看看业界都是怎么做用户体验的。 1 豆瓣网:心灵鸡汤。它的用户体验究竟好在何处?非粉丝不能明白。如果你是个爱书人,自认为还有那么点儿与众不同的喜好,那么豆瓣很符合这样的定位。一杯清茶,伴
收藏 0 赞 0 分享

李一男2003年在港湾给开发人员培训时的语录

李一男2003年在港湾给开发人员培训时的语录: 【1】好好规划自己的路,不要跟着感觉走!根据个人的理想决策安排,绝大部分人并不指望成为什么院士或教授,而是希望活得滋润一些,爽一些。那么,就需要慎重安排自己的轨迹。从哪个行业入手,逐渐对该行业深入了解,不
收藏 0 赞 0 分享

少儿网站项目策划

一. 概述: 如果说21世纪是网络世纪,那么21世纪的教育也应该是网络化的教育。面对网络,当我们还在为网络的利弊以及是否让孩子上网争论不休的时候,Internet上的儿童网站在北美地区的普及率已经相当高,那里的孩子们在网络上已经走得很远了:小学老师给孩子布
收藏 0 赞 0 分享

个人站长建设地方网站完全手册

走到第十个年头,互联网下一步会走向何方?这是我们大家不断思索的问题。地方性网站一直是我比较感兴趣的话题,我的博客《榆林网志》里许多文章也在讨论我所在的城市的网络发展。地方网络也是我觉得中国互联网以后发展的一个趋势,也是榆林区域网络的前景所在。   
收藏 0 赞 0 分享

小型网络公司发展离不开个人站长

个人站长最大的愿望可能就是有一天自己的网站可以成为网络公司运作。但是,作为个人网站的站长,是不是也该理性的想想,那些网络公司的网站,就比个人站长的牛吗?曾经我很喜欢Mop,也很喜欢Chinaz 。是每天必上的,后来他们慢慢商业化成公司运作后,我现在只是在偶
收藏 0 赞 0 分享
查看更多