
Imperva前身为 Incapsula为许多高流量的零售、房地产、旅游和招聘网站提供安全保护因此它是您在使用过程中最常遇到的障碍之一。网络爬虫但一旦你了解了它的工作原理绕过它就容易多了。在本指南中你将学习 Imperva 如何检测机器人、减少拦截的实用方法以及 DIY 方法的局限性。Imperva及其安全功能Imperva前身为 Incapsula是一款基于云的 Web 应用防火墙 (WAF)它将机器人管理、DDoS 防护和内容分发网络 (CDN) 功能集成到一个统一的平台中。 CDN和反向代理它位于用户和源服务器之间在传入的请求到达网站之前对其进行检查。Imperva 的机器人防护功能依赖于机器学习和行为分析来区分合法访客和自动化流量。它并非仅依赖单一指标而是综合评估浏览器特征、请求模式、JavaScript 执行情况、IP 信誉以及用户行为等因素来识别可疑活动。除了保护网站之外Imperva 还能帮助保护 API 免受自动化滥用攻击。其 API 安全功能旨在检测诸如撞库攻击、账户盗用尝试和大规模 API 数据抓取等威胁从而使机器人更难通过应用程序端点访问数据。Imperva 检测和拦截方法第 1 层TLS 指纹识别和 IP 信誉在请求到达应用程序之前Imperva 会检查其连接特征。它会进行分析。 TLS指纹 包括 JA3 指纹以及 JA4 等更新的变体以及 IP 信誉。来自已知数据中心 IP 或具有异常 TLS 指纹的客户端的请求更有可能立即受到质疑或阻止。第二层cookie 挑战如果连接通过了初始检查Imperva 可能会发出一个轻量级警告。cookie验证客户端是否正确接收和返回 cookie 的挑战。这可以快速过滤掉那些不维护会话状态的简单机器人。第三层reese84 JavaScript 挑战对于高风险流量Imperva 会提供一种名为reese84的混淆 JavaScript 挑战。该脚本会收集浏览器信号例如 Canvas、WebGL、AudioContext 和navigator属性然后将其发送回 Imperva。如果结果看起来合法客户端将收到一个签名 cookie允许会话继续进行。第四层行为监测通过 JavaScript 验证并不能保证持续访问。Imperva 会在整个会话期间持续监控导航模式、请求时间和其他行为信号。任何看似自动化的活动都可能降低会话的信任度并可能在后续触发新的验证或封禁。如何识别 Imperva通常可以通过查找incap_ses和visid_incapcookie、X-Iinfo响应头或包含“Powered by Incapsula”文本的屏蔽页面来判断网站是否受到 Imperva 的保护。请注意Imperva 屏蔽页面可能会返回 HTTP200 OK响应因此仅凭状态码并不能可靠地判断请求是否成功。绕过 Imperva 的技术最有效的方法是了解每个检测层的工作原理并据此调整你的爬虫程序。请记住这些技术的有效性取决于网站使用的具体 Imperva 配置没有任何方法能保证在所有部署环境中都有效。匹配浏览器 TLS 指纹许多 HTTP 客户端暴露的 TLS 指纹与 Chrome 或 Firefox 不同。使用模拟真实浏览器的 TLS 模拟库可以使您的请求更接近现代浏览器的请求。使用住宅代理或移动代理IP信誉至关重要。住宅IP和移动IP通常比数据中心代理更值得信赖因此更适合Imperva保护的网站。像IPFoxy提供的独享静态住宅代理其代理资源真实、纯净且支持IP轮换能力能够减少因IP环境问题导致爬虫失败的概率。发送实际的浏览器请求头部信息与 IP 地址同样重要。请包含现代浏览器头部信息例如Sec-CH-UA和Sec-Fetch-*保持其预期顺序并使用 HTTP/2 以更好地匹配真实的浏览器流量。执行 JavaScript 挑战仅使用 HTTP 客户端无法解决 Imperva 的 reese84挑战因为它们无法执行所需的浏览器 JavaScript 代码。因此请使用真正的浏览器或隐蔽解决方案例如我们指南中介绍的方案。 伪装狐或者 未检测到的chromedriver。模仿人类行为避免发送大量相同的请求。随机化延迟、轮换会话并将请求分散到多个 IP 地址以降低触发行为评分的可能性。TLS 模拟客户端示例以下示例使用tls-client模拟最新的 Chrome 浏览器请求受 Imperva 保护的网站。在大规模抓取之前请验证响应是否包含visid_incapcookie 或X-Iinfo标头等指示符以确认目标网站受到 Imperva 的保护。首先安装库使用 pip 安装 tls_client然后创建一个会话发送请求并检查响应中是否存在 Imperva 特有的标头和 cookie导入tls_client session tls_client.Session ( client_identifier chrome_136 response session.get ( https://www.ticketmaster.com/ ) print ( response.status_code ) print ( response.headers.get ( X - Iinfo ) ) print ( response.cookies.get ( visid_incap ) )常见 Imperva 模块故障排除不同的阻塞类型通常指向 Imperva 检测流程的不同环节。首先识别症状可以更轻松地确定需要修复的问题。首次请求返回 403 错误首次请求就收到403 Forbidden响应 通常表明 IP 信誉存在问题或 TLS 指纹不真实。由于尚未建立会话因此行为评分不太可能是原因。200 响应页面被阻止HTTP200 OK并不总是意味着请求成功。请检查响应正文查看是否存在“Powered by Incapsula”或事件 ID 等信息因为 Imperva 经常会返回状态码为成功但实际请求失败的页面。验证码间歇性出现偶尔出现的验证码挑战通常表明您的流量被认为是可疑的但并未被完全屏蔽。使用更接近真实浏览器配置的浏览器配置文件或切换到更高质量的IP地址通常可以解决此问题。429 个速率限制错误收到429 Too Many Requests响应意味着您的请求发送速度过快。请降低抓取速度实施指数退避策略并遵循 服务器提供的Retry-After标头。会话期间请求失败如果请求最初有效但随后开始失败则您的会话可能已失去信任。请检查诸如incap_ses和visid_incap之类的 cookie是否正确保存并避免重复的请求模式以免触发行为检测。最后想说的我们了解到Imperva 结合了多个检测层包括 TLS 指纹识别、IP 信誉验证、JavaScript 挑战和行为分析。它通过匹配浏览器 TLS 指纹来进行检测。 住宅代理在真实浏览器中执行 JavaScript并保持真实的浏览模式这些都有助于降低自动请求被标记的可能性。