加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 电商 > 正文

爬虫需谨慎!!!那些你不了解的爬虫反爬虫套路

发布时间:2021-07-19 21:18:55 所属栏目:电商 来源:互联网
导读:前言 爬虫与反爬虫,是一个很不阳光的行业。 这里说的不阳光,有两个含义。 第一是,这个行业是隐藏在地下的,一般很少被曝光出来。很多公司对外都不会宣称自己

  然后,做反爬虫的就要加班天天研究如何拦截爬虫。做爬虫的被拦截了,就要天天研究如何破解反爬虫策略。大家就这么把资源全都浪费在没用的地方了。直到大家合并了,才会心平气和的坐下来谈谈,都少抓点。

 

  最近国内的公司有大量的合并,我猜这种“心平气和”应该不少吧?

 

  二、爬虫反爬虫技术现状

 

  下面我们谈谈,爬虫和反爬虫分别都是怎么做的。

 

  1、为python平反

 

  首先是爬虫。爬虫教程你到处都可以搜的到,大部分是python写的。我曾经在一篇文章提到过:用python写的爬虫是最薄弱的,因为天生并不适合破解反爬虫逻辑,因为反爬虫都是用javascript来处理。然而慢慢的,我发现这个理解有点问题(当然我如果说我当时是出于工作需要而有意黑python你们信吗……)。

 

  Python的确不适合写反爬虫逻辑,但是python是一门胶水语言,他适合捆绑任何一种框架。而反爬虫策略经常会变化的翻天覆地,需要对代码进行大刀阔斧的重构,甚至重写。这种情况下,python不失为一种合适的解决方案。

 

  举个例子,你之前是用selenium爬取对方的站点,后来你发现自己被封了,而且封锁方式十分隐蔽,完全搞不清到底是如何封的,你会怎么办?你会跟踪selenium的源码来找到出错的地方吗?

 

  你不会。你只会换个框架,用另一种方式来爬取。然后你就把两个框架都浅尝辄止地用了下,一个都没有深入研究过。因为没等你研究好,也许人家又换方式了。你不得不再找个框架来爬取。毕竟,老板等着明天早上开会要数据呢。老板一般都是早上八九点开会,所以你七点之前必须搞定。等你厌倦了,打算换个工作的时候,简历上又只能写“了解n个框架的使用”,仅此而已。

 

  这就是爬虫工程师的宿命,爬虫工程师比外包还可怜。外包虽然不容易积累技术,但是好歹有正常上下班时间,爬虫工程师连这个权利都没有。

 

  然而反爬虫工程师就不可怜了吗?也不是的。反爬虫有个天生的死穴,就是:误伤率。

 

  2、无法绕开的误伤率

 

  我们首先谈谈,面对对方的爬虫,你的第一反应是什么?

 

  如果限定时间的话,大部分人给我的答案都是:封杀对方的IP。

 

  然而,问题就出在,IP不是每人一个的。大的公司有出口IP,ISP有的时候会劫持流量让你们走代理,有的人天生喜欢挂代理,有的人为了翻墙24小时挂vpn,最坑的是,现在是移动互联网时代,你如果封了一个IP?不好意思,这是中国联通的4G网络,5分钟之前还是别人,5分钟之后就换人了哦!

 

  因此,封IP的误伤指数最高。并且,效果又是最差的。因为现在即使是最菜的新手,也知道用代理池了。你们可以去淘宝看下,几十万的代理价值多少钱。我们就不谈到处都有的免费代理了。

 

  也有人说:我可以扫描对方端口,如果开放了代理端口,那就意味着是个代理,我就可以封杀了呀。

 

  事实是残酷的。我曾经封杀过一个IP,因为他开放了一个代理端口,而且是个很小众的代理端口。不出一天就有人来报事件,说我们一个分公司被拦截了。我一查IP,还真是我封的IP。我就很郁闷地问他们IT,开这个端口干什么?他说做邮件服务器啊。我说为啥要用这么奇怪的端口?他说,这不是怕别人猜出来么?我就随便取了个。

 

  扫描端口的进阶版,还有一种方式,就是去订单库查找这个IP是否下过订单,如果没有,那么就是安全的。如果有,那就不安全。有很多网站会使用这个方法。然而这其实只是一种自欺欺人的办法而已。只需要下一单,就可以永久洗白自己的IP,天下还有比这更便宜的生意吗?

 

  因此,封IP,以及封IP的进阶版:扫描端口再封IP,都是没用的。根本不要考虑从IP下手,因为对手会用大量的时间考虑如何躲避IP封锁,你干嘛和人家硬刚呢。这没有任何意义。

 

  那么,下一步你会考虑到什么?

 

  很多站点的工程师会考虑:既然没办法阻止对方,那我就让它变的不可读吧。我会用图片来渲染关键信息,比如价格。这样,人眼可见,机器识别不出来。

 

  这个想法曾经是正确的,然而,坑爹的技术发展,带给我们一个坑爹的技术,叫机器学习。顺便带动了一个行业的迅猛发展,叫OCR。很快,识别图像就不再是任何难题了。甚至连人眼都很难识别的验证码,有的OCR都能搞定,比我肉眼识别率都高。更何况,现在有了打码平台,用资本都可以搞定,都不需要技术。

 

  那么,下一步你会考虑什么?

 

  这个时候,后端工程师已经没有太多的办法可以搞了。

 

  不过后端搞不定的事情,一般都推给前端啊,前端从来都是后端搞不定问题时的背锅侠。 多少年来我们都是这么过来的。前端工程师这个时候就要勇敢地站出来了:

 

  “都不要得瑟了,来比比谁的前端知识牛逼,你牛逼我就让你爬。”

 

  我不知道这篇文章的读者里有多少前端工程师,我只是想顺便提一下:你们以后将会是更加抢手的人才。

 

  3、前端工程师的逆袭

 

  我们知道,一个数据要显示到前端,不仅仅是后端输出就完事了,前端要做大量的事情, 比如取到json之后,至少要用template转成html吧?这已经是步骤最少最简单的了。然后你总要用css渲染下吧?这也不是什么难事。

 

  等等,你还记得自己第一次做这个事情的时候的经历吗?真的,不是什么难事吗?

 

  有没有经历过,一个html标签拼错,或者没有闭合,导致页面错乱?一个css没弄好,导致整个页面都不知道飘到哪去了?

 

  这些事情,你是不是很想让别人再经历一次?

 

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读