1.摘要
在本文中,我首先对网站常用的反爬虫和反自动化技术做了一个梳理, 并对可能能够绕过这些反爬技术的开源库chromedp所使用的技术分拆做一个介绍, 最后利用chromedp库对一个测试网站做了爬虫测试, 并利用chromedp库绕开了爬虫限制,成功通过程序自动获取到信息。在测试过程中,顺便对chromedp库经常使用的一些API做了一些调用尝试。
2.反爬虫和反自动化技术手段
网站常见的反爬虫和反自动化技术主要包括:
-
用户代理检查 - 主要检查User-Agent字符串,如果不是正常浏览器的则拒绝访问。
-
IP限频 - 同一个IP地址访问过于频繁则会被限制或封禁。
-
缺失字段检测 - 例如使用程序爬取可能会缺失必要的Referer字段,有些网站会检查Referer字段防爬虫。
-
Cookies与会话验证 - 需要验证Cookies或会话信息才能访问。
-
Js执行检测 - 注入各种JavaScript代码检测执行环境。
-
滑动验证码 - 需要用户滑动验证码才能继续操作。
-
Cloudflare防护 - 使用Cloudflare对访问进行监控和风控。
-
动态渲染 - 重要内容使用JS动态渲染,不能直接爬取。
-
监测DOM变化 - 通过MutationObserver监测DOM变化判断是否为自动化程序。
-
加密和反反编译 - 使用加密、混淆代码防止逆向。
-
机器学习检测 - 训练模型检测访问行为是否为Bot。
-
欺骗点击 - 设置假的网页元素迷惑爬虫点击。
-
验证码识别 - 使用验证码技术防止自动提交。
由于每个网站使用的技术可能是以上技术的一种或多种, 有的甚至是自定义的复杂混合检测逻辑