本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

报码:那些你不知道的爬虫反爬虫套路(2)

时间:2017-06-12 20:08来源:118论坛 作者:本港台直播 点击:
过了一段时间,三家公司的服务器分别报警,访问量过高。三家公司的CTO也很纳闷,没有生成任何订单啊,怎么访问量这么高? 一定是其他两家禽兽写的

过了一段时间,三家公司的服务器分别报警,访问量过高。三家公司的CTO也很纳闷,没有生成任何订单啊,怎么访问量这么高? 一定是其他两家禽兽写的爬虫没有限制好频率。妈的,老子要报仇。于是分别做反爬虫,不让对方抓自己的数据。然后进一步强化自己的爬虫团队抓别人的数据。一定要做到:宁叫我抓天下人,休叫天下人抓我。

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

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

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

1、为python平反

首先是爬虫。爬虫教程你到处都可以搜的到,大部分是python写的。我曾经在一篇文章提到过:用python写的爬虫是最薄弱的,因为天生并不适合破解反爬虫逻辑,因为反爬虫都是用java来处理。然而慢慢的,我发现这个理解有点问题(当然我如果说我当时是出于工作需要而有意黑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,天下还有比这更便宜的生意吗?

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容