cover_image

风控基建实战:互联网的矛与盾——爬虫与反爬虫

得物风控 得物风控
2024年09月04日 10:30

欢迎大家来到【风控基建实战】

风控团队与黑灰产的对抗是动态且激烈的,技术也在不断迭代升级。我们希望通过一系列硬核技术分享,与风控岗位的小伙伴们加深交流,共同夯实业务基石。

一、什么是爬虫?

图片

网络爬虫(网络蜘蛛,spider),可以通俗的认为网络爬虫即为一段程序,通过特定程序可以在网站上获取需要的信息,如文字、视频、图片等。

爬虫有多种类型,我们一般将爬虫分为通用爬虫和聚焦爬虫两类:

1、通用爬虫

我们常使用的搜索引擎谷歌、百度等核心就是通用爬虫,从互联网中搜集网页,采集信息。

通用爬虫目标是下载并存储互联网上的所有网页,形成一个互联网内容的镜像备份,遵循Robots协议(搜索引擎通过读取robots.txt文件来识别这个页面是否允许被抓取)。下图为搜索引擎网络爬虫工作流。

图片
2、聚焦爬虫
与通用爬虫不同,聚焦爬虫是一个自动下载网页的程序,根据既定的爬取目标,有选择地访问互联网上的网页与相关的链接。
目标为爬取某一特定主题内容相关的网页,为面向主题的用户查询获取数据资源。本文主要针对聚焦爬虫分析相关策略与反爬策略。

二、爬虫的应用

图片
爬虫主要用于搜索引擎,为用户提供相关的结果。
1、数据分析
企业可通过爬虫收集竞争对手的价格/产品信息等,进行市场分析(某美食软件在非登录状态下价格等信息打码,防止价格信息被较容易获取)。
2、电商策略
电商平台可通过爬虫监控内外部商品的价格变化与库存情况,调整销售策略。
3、用户媒体信息获取
可以抓取社交媒体公开数据用于分析用户行为和热点话题,也可以获取图文音等媒体内容,获取新闻及学术信息等(切勿随意爬取知网)。

三、什么是反爬虫?

图片
爬虫程序的访问频率和目的与正常用户的访问频率与目的是不同的,大部分爬虫会无节制对目标应用进行爬取,给企业应用的服务器带来巨大压力,我们可以称这部分请求为“垃圾流量”,因为它没有对网站运营造成任何正面收益。
我们简单定义反爬虫为:通过策略限制爬虫程序访问服务器资源和获取数据的行为,策略包括但不限于:请求限制,拒绝响应,身份验证,文本混淆,动态渲染等。

四、输入网址,发生了什么?

图片
让我们回顾下计算机网络,打开浏览器输入www.baidu.com,发生了什么?(重点:面试经典题,若忘记可以百度一下)
图片

五、爬虫与反爬虫

图片
通过以上流程,我们来简单概述爬虫与反爬虫策略之间的对抗关系,讲述部分网站常用的反爬虫策略以及绕过方式:
1、User-Agent反爬虫策略
图片
①反爬虫策略:
  • User-Agent为请求头域之一,位于http/https请求headers文件中。服务器能够从User-Agent对应的值中识别客户端使用的操作系统/CPU类型/浏览器/浏览器引擎/操作系统语言等,基本格式为:
    浏览器标识(操作系统标识;加密等级标识;浏览器语言)渲染引擎标识 版本信息
  • 网站可建立合法User-Agent白名单,拒绝掉非法User-Agent请求
②爬虫策略:
  • 在编写爬虫程序时如果没有特殊设置,会将语言默认标识传入请求中,如python-requsets/go-http-client等,从而被网站拒绝
  • 在请求url时设置合法User-Agent字段即可规避策略,难度较低
2、Cookie反爬虫策略
图片
①反爬虫策略
Cookie也位于请求headers文件中,本质就是用于Web服务器的用户身份信息存储或状态保持,服务器通过校验Cookie值是否符合规则返回不同结果,若校验不通过则可将请求重定向。
②爬虫策略
可通过浏览器开发者模式或抓包等手段获取请求中的Cookie信息,在爬虫程序中设置合法的Cookie信息
3、IP反爬虫策略
①反爬虫策略
IP与用户使用的网络环境强相关,可基于固定IP请求频率/用户切换IP频率等进行策略限制
②爬虫策略
可通过设置代理IP池突破IP频率限制。什么是代理呢?上述浏览器访问过程中,可以在浏览器和目标服务器之间加入一个梯子,这个梯子就是代理。
  • 请求流程变为浏览器向代理服务器发起请求
  • 代理服务器转发请求给目标服务器,获取响应
  • 代理服务器转发响应给浏览器
以上为代理过程简述,实际过程中可能会存在多重代理等情况,服务器识别的真实IP不再是用户IP,实现身份伪装。翻墙原理同上。(翻墙需谨慎,亲人两行泪)
4、签名sign反爬虫策略
签名sign就是根据请求数据进行计算或加密的过程,其结果是一个具有唯一性和一致性的字符串。目前主流加密方式一般为32位md5加密,用户签名验证的信息一般位于请求正文body参数中发送至服务器。
①反爬虫策略
基本原理为由客户端生成一些随机值和不可逆md5加密字符串,将信息发送至服务端。服务器端使用相同方式进行计算和加密,如果二者值相同,则认为请求正常,否则拒绝
②爬虫策略
各类程序员网站中有大量教程,主要过程涉及到程序逆向破解,一般常用到的加密字段为请求中参数+时间戳,可通过加密算法小程序验证加密算法的破解过程。
5、动态渲染反爬虫策略
网页一般分为静态网页和动态网页,动态网页能给用户更好的体验,常见表现形式有下拉刷新/点击切换以及悬停显示等
①反爬虫策略
以下拉刷新为例,有别于常见的翻页,通过前端JavaScript语言改变页面内容发生变化,下拉刷新操作无需刷新整个页面,提升用户体验的同时也可以天然进行反爬虫(编程语言不会内置js解释器和渲染引擎)。
图片
动态页面为了跟踪用户行为数据,一般会预留相应的埋点事件(曝光/点击等)。我们可以通过判断用户请求是否有对应埋点事件来确认请求是否为正常请求,爬虫请求一般情况下不会有埋点记录。
②爬虫策略
可通过渲染工具进行进行信息获取,如Selenium等。通过自动化工具和浏览器驱动调用浏览器执行特定操作,可发起请求并且进行相应的点击下拉等操作,实现动态页面的加载。本质上是脚本+自动化工具+浏览器的结合,避免了埋点数据的缺失问题。
6、验证码反爬虫策略
验证码,更专业的名字是“全自动区分计算机和人类的图灵测试”,简称 CAPTCHA。
①反爬虫策略
可通过设置:数字验证码/计算数字验证码/滑动验证码/文字点选验证码/语音验证码等多类方式结合识别可疑流量,也可加入滑动轨迹的识别,真人与机器的拖动轨迹会有明显区分。
②爬虫策略
通过特定网站验证码类型数据抓取分析,结合深度学习等模型训练方式进行验证码识别,准确率较高;也可通过接入打码平台方式绕过验证码,规避目标平台策略。

六、爬虫与反爬虫展望

图片
近年来,随着计算机技术的开源与发展,黑灰产通过爬虫获取信息越来越便捷:
  • 借助接码平台批量注册账号,结合代理IP批量爬取信息,通过单一维度频率很难防控;
  • 借助人工智能与开源模型,绕过企业设置的验证码策略;
  • 借助设备农场工具以及刷机手段,获取大量合法设备信息;
  • 通过真实请求+爬虫请求结合的方式模拟真实用户行为,试探企业反爬策略底线;
  • 产业化+智能化,不仅有完善的产业上下游,熟悉了解各互联网企业平台的技术框架,这无疑增加了识别防控的难度。
爬虫与反爬虫本质也属于一种对抗过程,犹如本文标题中的矛与盾,既相互针对,又相互促进。不仅是技术策略上的博弈,也是人员与成本的对抗:当反爬方限制非浏览器端请求时,爬虫方可模拟浏览器标识;爬虫方进一步限制想用浏览器标识请求频率,爬虫方可通过代理IP以及多类机器轮换方式进行对抗;若爬虫方感受到成本较高,可能放弃爬取,反之反爬方成本较高时会无法完全限制爬虫。

爬虫程序是一种技术产物,爬虫代码本身并未违反法律,但使用爬虫对网站运营造成破坏,爬取机密或企业隐私数据,都可能违反《数据安全管理办法》;企业通过爬虫手段非法获取竞争对手商业信息的,可能违反《反不正当竞争法》。通过技术手段绕过经营者网站的反爬虫措施都属于违法行为,且爬取信息必有痕迹,只是看企业是否追究。为了营造良好的互联网环境,请大家合理合法利用爬虫手段。

图片
图片
图片
图片

扫码关注得物风控,获得最新鲜的购物反诈提醒!

也可在“得物App”关注“得物风控安全助手”哦~

图片
图片

风控基建实战 · 目录
上一篇风控基建实战:如何打造高效安全的AIGC系统下一篇风控基建实战:金融视角下的“中介”风险
继续滑动看下一个
得物风控
向上滑动看下一个