反爬虫技术如何实现

爬虫,我知道一些方法如何去尽量避免被服务器检测到这是爬虫,如常见的header设置,还有selenium+chrome模拟等。好奇的是,服务器怎么样去检测判断这些请求是爬虫行为呢?我是做后台服务的,一直没有想明白,怎么去检测是否是爬虫?看到还有一些更高级的,甚至都可以检测出浏览器是被selenium控制的,建立模型分析出这是爬虫。反爬虫技术,完全不会,希望可以对这个介绍一下,最基本的,或者推荐一些书籍、博客、技术文档

阅读 6k
6 个回答

理论上来说,只要在页面上显示的内容,爬虫就可以爬到。

服务端没办法完全百分百确定你是正常行为还是爬虫,所以一般会在你有嫌疑的时候突然弹个验证码叫你输入,以此来确认你是不是爬虫。

我曾经听过一个例子,某电商网站,在你浏览商品搜索页面时,翻阅超过一定数量(比如20或者30)后,开始随机插入假数据,因为他们的后台统计里正常情况里不会浏览一个结果页面这么深,如果假数据被点击了,就开始把这个帐号列入嫌疑列表,当假数据的点击次数达到一个阀值,就判定你是爬虫。要么说你帐号有危险弹个验证码、要么直接封号。

你好, 爬虫的抓取与反制 是一个典型的猫鼠游戏, 没有一通百通 一招制胜的绝学, 都是随着时代发展衍生出的一些此消彼长而已。
有关这方面的技术,可以看下我之前写的的一篇博客,介绍的已经非常全了, 我也同步在了 segment网站的专栏里,上了segment的月度精华文章。

简单地说,对于如今web技术当中涌现出的各种headless浏览器 也就是你提到的

selenium+chrome模拟等

需要服务端和客户端配合起来,联合对爬虫抓取进行反制与跟踪,即使如此,攻击与防御依然是相对的,你能做的只是提升抓取者的成本,而不可能一劳永逸。

PS:讽刺的是,我发现我的原创文章同步在了很多个博客ugc平台,唯独在segmentfault发布的版本被很多人匿名转载了,其中恐怕有不少是被野爬的,看来segmentfault的反爬虫防御门槛很低。不过没关系,授人以渔者,自己肯定会留几手的, 如果你的网站业务中真的面临大量爬虫抓取的威胁,可以 微博推特联系我, 不同场景下的爬虫防御反制技术需要结合你们具体业务特点来做,我目前手里掌握的一整套手段基本可以通杀市面上开源的各种爬虫抓取工具,包括headless chrome(puppeteer),哦对了,对headless chrome的反制,我博客里提到的一些手段已经过时了,大家转载时悠着点别把自己坑了 哈哈

举一个我这边正在应对反爬的策略:
1.给需要增加反爬的接口增加一个参数,该参数的值是这个接口入参所有参数对象转化为json串后,再通过一个固定2
的加密规则生成一串秘文。
2.后台服务器根据这个参数,通过约定的秘钥进行解密,与传过来的参数进行比较,如果匹配,就认为是正常请求,如果不匹配,就认为是爬虫。

因为加密解密策略只有自己知道,所以爬虫不可能模仿,创造这个参数。

目前国外很多网站采用的distil networks反爬虫服务 目前我就遇到了这样的难题

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进