常见的几种应用层反反爬虫技术

更新:2020/3/31 16:08:37 浏览:632次

  一、前端逆向

  前端逆向,就是利用前端所有代码、数据都是暴露给客户端的特点,通过分析HTML、JS等源码来获取数据的技术。常用的前端逆向工具就是Chrome Debug 工具。前端逆向分析通常用来分析那些动态渲染的网站。如果分析透彻,可以避免使用浏览器模拟的方式来进行爬取。

  二、浏览器模拟

  浏览器模拟指利用真实的浏览器去请求、执行页面和脚本。应用场景是爬取带有复杂JS和接口加密的网站、也被BOT用于复杂网站。常见的浏览器模拟框架有Selenium WebDriver、PhatomJS。 Selenium 是通过浏览器的debug接口进行浏览器的远程操控API。PhantomJS是一个嵌入了浏览器内核的js渲染服务,这种技术可以用来对抗动态渲染和接口加密。所有的渲染和加密过程都由浏览器内核完成。高级的做法是用CEF(Chrome Embedded Framework)进行二次开发。通过二次开发CEF,可以获得很强的灵活性,比如在页面加载之前劫持JS对象、用C++代码hook native js api等等。这种技术的主要劣势是低下的性能。与纯粹的HTTP请求代码来说, 这种方案要多吃50~500倍的CPU。也就是说,它的效率要下降数十倍到数百倍左右。

  三、字符识别

  光学字符识别(OCR)用于对抗简单的数字、字母验证码。初级的OCR基于模板。高级的字符识别基于神经网络,比如[这个项目],它基于LSTM模型,可以提供更好的识别率。

  四、行为模拟

  行为模拟是指在爬虫和BOT的过程中,有意的留下Cookie,并请求一些与需要爬取数据无关的接口或者做一些动作,用来模拟一般用户的动作,用于对抗行为分析。在BOT场景下,这种方式也用来模拟用户的活跃度和留存率。一般来说,行为模拟的主要依据来源于前端逆向的工作,破解者需要确定究竟有哪些HTML元素和用户行为事件被网站所关注,并针对性的做出想要模拟的行为。大多数情况下,爬虫的行为模拟是请求某个日志上报接口,而一些比较特殊的网站(比如支付宝),用户行为数据附着在请求普通接口的参数中,并经过高度混淆。

  五、打码平台

  打码平台用来对抗强度比较高的验证码和人机验证方案。正常的验证码流程是,由网站生成一张图片传递给用户,用户输入这张图片的信息传回网站,完成人机验证。破解者通过对接打码平台,将用户识别信息的环节放到打码平台去做,打码平台组织一群专职人员,进行验证码的识别工作,并传回爬虫,完成验证码的识别工作。高级的打码平台还会利用这些海量的打码数据进行模型训练。

  六、JS Hook

  这种方式主要用来对抗js上下文的跟踪和分析。做法是,在页面加载前,通过替换JS上下文的对象,将JS上下文中的对象和方法替换掉。例如,将window.screen对象替换,使网站的js代码获取到替换后的屏幕分辨率。JS Hook一般在CEF二次开发中实现,也可以通过劫持普通浏览器的流量完成js hook。

  蝶鸟IP平台专业提供优质HTTP/HTTPS/SOCKS5代理IP服务,欢迎广大顾客朋友前来垂询。

  客服QQ:2590525183。