志存高遠

爬虫与反爬

爬虫的本质是通过自动化方式获取大量公开信息,反爬则是为了让每个用户只能获取正常范围内的公开信息。

爬虫的几个等级
  • 直接通过构造请求遍历某个接口的所有数据。这时候防御者就很容易通过请求头信息异常、账号/IP的聚集性,高频调用接口,接口时序。
  • 通过构造完整的业务请求链路。可通过JS/CSS/IMG加载情况、鼠标轨迹、点击/触屏行为、设备环境信息来识别。
  • 海量IP/账号低频慢速
  • 大模型驱动。一是辅助协议分析和代码逆向,比如IDA插件Gepetto。二是基于大模型直接操作浏览器/App/小程序,模拟键盘轨迹,触屏点击力度等。
  • 众包
爬虫的几个关键步骤

反检测工具:

  • 爬取软件环境构建
    • 浏览器:webdriver、cdp、puppeteer、automa、tampermonkey
      • 检测工具:puppeteer-extra-plugin-stealth、undetected_chromedriver
    • 内核:webkit(phantomjs)、firefox(slimerjs)、chrome(nightmarejs、electron)
    • 非浏览器:curl_cffi、
  • 网络环境构建
  • 账户
  • 爬取目的与动作
  • 数据采集

以比较难的众包爬取模式举例,众包大多为社会闲散人员,认知水平高低不一,一般会简化SOP,提高自动化水平。简化SOP,虽然效率高,但在防守视角很容易区分他和普通消费者之间的区别,有显著的团伙聚集性。提高自动化水平,抹平人与人之间的差距带来的效率差异,但挑战在于自动化框架植入方式、自动化脚本开发适配调试难度。自动化框架植入在PC端没有任何阻碍,但在手机端的众包手机并不物理可控,所以通常无法刷机,那就只剩辅助App+无障碍模式。越来越多新款Android手机都主动开启了无障碍模式,无法成为一个可用的特征,iOS对安全性和隐私保护非常强,普通App无法像android无障碍辅助那些实现系统级模拟点击、划动屏幕或者控制其他应用操作。众包下自动化脚本开发适配和调试难度可以说是地狱难度,设备、网络环境都不一样,不确定中间是否有人工介入导致进程卡死,卡死只能重启App或者强制跳转。而频繁重启、强制跳转App都是较为明显的特征。虽然PC爬虫是最优解,但在众包场景中,大部分去做众包的人没有稳定的pc环境。数据采集部分,通常让众包的设备刷机并植入hook的方案并不实际,更常见的是重打包App、VPN抓包、OCR识别、肉眼识别并手抄。效率和内容范围依次递减。重打包是一个比较明显特征,从对抗原理来看,新款手机都内置了TEE硬件可信计算模块,可以实现过程和结果无法篡改,可以做到应用包签名信息,这类手机比例将越来越高,长期来看,重打包方式将无法可持续。VPN等为主的MITM方案也有一个缺陷,需要替换证书,证书替换可以通过http pinning来解决。对抗的时候,攻击者会通过端口/协议的阻断,实现协议降级,而大量/长期的协议降级行为也成为防护的最重要的特征。OCR和手抄,针对OCR可以使用Webfont。众包的分发渠道往往是公开的,那就可以拿到其实际攻击样本。一旦识别出来一个平台,其平台将遭受毁灭打击,同时所有参与者被打上众包参与者,并通过逐步升级劝退这类众包。

爬虫的识别防控

一个简单的用户操作,通过手滑动的轨迹、机身抖动、倾斜角度和复原速度,可以捕获到机器与人之间的细微区别,如果拉长端行为的时序,很有机会抓住黑用户。

  • 端行为元素:轨迹、点击坐标分布、停留时长、机身姿态。攻击者的对抗方式主要是真实录制,但好消息是众包的无障碍方案只能实现点击和划动,不能篡改机身陀螺仪等传感器数据。
  • 行为可信,比如要爬取十万个商品信息,那十万个商品的来源哪里。如果是通过搜索、推荐,那我们可以通过前置链路访问日志埋点。如果攻击者完整模拟整个流程,其维护成本将直线上升。
  • 意图识别,OCR这类方案中,最大的问题是只能看到屏幕上信息,所以其需要进入列表以及点击列表中每一项,这行为就和正常用户差异太大了。

如果每个用户打开app后,都会默认将top10万的商品都一次性加载本地,后续的操作都是在本地,这个时候就非常难做意图识别。需要在利益点触达的短链路上将链路拉长,再在长链路上精细刻画和区分意图,再从时间长度或者行为长度上做一层兜底识别。

攻击者也可以构建出2000种仿照正常用户的浏览行为模式,再将这些零散行为获取的结果重新编织成为一个信息网。

大模型爬虫,看到大模型实现浏览器的自动操作后,都觉得爬虫后续很难做了。但实际自动化操作在大模型和多模态大模型诞生前,完全就可以实现,页可以实现多智能的判断。

原有的群控方案缺陷在大模型方案下都存在。

但其优势来自于两个点

1、行为的多样性,原来可能维护50种行为,需要花大量的时间精力和代码。大模型可以改变着一切,写代码、甚至每一个账号都有自己的专属行为。2、大模型可以打造无数的人设,通过不同人设和对应的访问行为来进行分散攻击,隐藏爬虫意图。

对应的防御思路

1、在行为可信的框架下,只需要关注触达利益点的链路,排除其他的干扰项。比如一个账号不能因为他在刷单或者有付款记录就判定不是爬虫。2、在利益点触达的短链路上将链路拉长,再在长链路上精细刻画和区分意图,再从时间长度或者行为长度上做一层兜底识别。

 未来,你对agent说,小爱同学帮我买一台电脑,帮我在各个电商平台比下价格,做一个对比表格。

以前爬虫是一个门槛极低的技术,几乎所有的计算机专业学生的必备技能。随着反爬技术的提升,爬虫逐渐专业化。但随着agent发展,爬虫可能又要再度回归业余,从技术团队搞爬虫变成业务团队搞爬虫,再到全民都是爬虫。

荣耀的yoyo助手演示视频里,可以丝滑的进入美团点外卖,最后被扒出来是工程师提前写好的脚本,实际版本中已无法使用。大模型爬虫做的最好的公司会成为大厂收购,成为打破通用大模型的一个瓶颈。

互联网抹平了物理时间的信息差,但却在互联网中建立了新的信息差,也许,ai agent可以再度抹平这个信息差,再也没有大数据杀熟和价格歧视了。

爬虫刑事边界

  • 数据视角:侵犯数据安全类犯罪。通过爬虫非法获取特定属性的数据(国家秘密、商业秘密、个人信息)
  • 计算机视角:危害计算机信息系统安全犯罪(使用的爬虫技术对计算机信息系统具有破坏性或侵入性)
  • 指示、帮助他人犯罪,提供程序、工具、共同故意犯罪

典型案例

  • 魔蝎科技:未经许可留存用户账号密码
  • 爬取政府网站频率过高被认定干扰
  • 突破验证码获取未注册车牌信息
  • 爬取竞争对手公开数据
  • 背离公开信息初衷,商业目的将企查查的上的法人姓名、地址、手机号等进行商业目的
  • 社工库采集个人信息
  • 编写脚本采集内部员工信息
  • 超范围爬取合作方数据
志存高遠