科技资讯眺望|你不知道的网络爬虫编程那些事!爬虫与反爬的战争一直在无声发生( 二 )


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都能搞定 , 比我肉眼识别率都高 。 更何况 , 现在有了打码平台 , 用资本都可以搞定 , 都不需要技术 。
那么 , 下一步你会考虑什么?
这个时候 , 后端工程师已经没有太多的办法可以搞了 。


推荐阅读