美文网首页
常见爬虫方案

常见爬虫方案

作者: Araraki | 来源:发表于2020-02-16 19:38 被阅读0次

    设置等待时间

    不会给对方服务器造成太大压力,也是比较经济有效的方案。

    设置必要的浏览器Headers

    Referer

    User-agent

    前端逆向

    前端逆向,就是利用前端所有代码、数据都是暴露给客户端的特点, 通过分析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基于模板。高级的字符识别基于神经网络,可以提供更好的识别率。

    打码平台

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

    行为模拟

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

    JS Hook

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

    代理

    HTTP代理

    根据XFF头部的添加与否, 分为普通代理和高匿代理两类。

    普通代理会把请求方的源IP添加在HTTP请求头, 而高匿代理不会。对于服务端程序员来说,通过XFF头判断用户的源IP来源是一种十分 Too Young , sometimes naive 的行为,因为服务端完全没有能力判断这个XFF头是由请求方伪造的,还是由代理服务器添加的。

    Socks代理

    爬虫方的优势

    被爬网站投鼠忌器 (误伤率)

    相关文章

      网友评论

          本文标题:常见爬虫方案

          本文链接:https://www.haomeiwen.com/subject/jjumfhtx.html