如何绕过WAF(Web应用防火墙)
一个站点阻止了您的网络抓取工具发出的请求多少次?大多数情况下,这是由于 WAF,应用程序级防火墙带有多个防御系统以阻止不需要的流量。
他们依靠的是几项高深的技术,但要保持冷静!总有办法绕过它们。在这里,您将学习如何绕过 WAF 保护并抓取任何站点。
WAF 是什么意思?
WAF 代表Web 应用程序防火墙,是一组安全工具,可保护站点免受多种攻击和威胁。WAF 在 OSI 模型的应用层运行。它分析 HTTP 请求并应用一组规则来识别和阻止可疑流量。
在网络抓取方面,WAF 是一个主要障碍。这是因为抓取请求通常表现为对 WAF 的攻击,尤其是在以高速率或大量提取数据时。
是否可以绕过 WAF?
是的,可以绕过 WAF。但由于 WAF 使用多种安全技术,因此没有一种万能的解决方案。这些是您需要知道如何绕过的几种最流行的保护方法:
- IP 地址信誉:阻止来自标记为不可靠或危险的 IP 的请求。您可以使用网络抓取代理来避免这种情况。
- CAPTCHAS:网页上显示的问题,对人类来说很容易解决,但对机器人来说很复杂。验证码代理将帮助您绕过它们。
- 蜜罐:嵌入网页中的机器人陷阱,人类用户看不到。了解有关如何绕过蜜罐的更多信息。
- 用户行为分析:跟踪网页上的用户活动以确定它是否是机器人。通过让您的抓取机器人使用无头浏览器模拟人类来防止这种情况发生。
- 设备指纹识别:寻找只有真实用户设备通常具有的硬件和软件功能。深入研究浏览器指纹识别以及如何战胜它。
我需要绕过什么 WAF?
了解您的目标站点依赖哪个 WAF 对于构建有效的网络抓取工具至关重要。按照以下步骤学习如何识别 WAF:
- 在浏览器中探索您的目标站点。
- 寻找明显的保护方法:大多数流行的 WAF 会在应用严格的反机器人措施时告知用户正在发生的事情。这些控制页面通常以提供者的名称为特色,这是必须知道的。
请注意“ Cloudflare的性能和安全性”页脚。在那里,您还可以检查该站点是否使用了验证码等安全解决方案。
- 分析 HTTP 标头:打开 DevTools,与站点交互,并检查浏览器发出的请求的 HTTP 响应标头。WAF 倾向于进行特定的 AJAX 调用并设置特殊的标头和 cookie。例如,Cloudflare 将
cf_clearance cookie
.
如果上述步骤都无法帮助您找出 WAF,请尝试对目标页面执行自动请求。使用 HTTP 客户端并发出请求GET
。服务器产生的响应可能提供有用的数据:
查看/cdn-cgi/
图像的路径。这是 Cloudflare 的典型特征,对象的存在也是如此_cf_chl_opt
。
您需要了解的热门 WAF
市场上最受欢迎的 WAF 供应商很少。由于它们都采用不同的反机器人保护技术和安全策略,我们创建了特定的指南来帮助您绕过它们中的每一个:
- Cloudflare:它提供了一套安全解决方案来保护站点免受各种类型的攻击。大约 20%的互联网网站使用它。了解如何绕过Cloudflare。
- Akamai:它利用机器学习来实时阻止攻击。您将在此处找到绕过Akamai 的方法。
- PerimeterX:它利用行为分析来保护 Web 应用程序免受许多威胁。查看我们的指南,找到有关如何绕过PerimeterX 的分步说明。
- DataDome:它提供了一种机器人检测技术来防止自动攻击。您可以在我们详细教程的帮助下绕过DataDome 。
无论您的目标网站采用何种技术,您都可以使用ZenRows等功能齐全的网络抓取 API 绕过其 WAF 。
绕过 WAF 的技术
让我们看看绕过 WAF 防御的最佳技巧和方法。
1.使用住宅IP
避免 IP 封禁的有效解决方案是通过代理服务器发出 HTTP 请求。这些通常提供:
- 数据中心 IP:来自数据中心且与任何 ISP 无关的地址。
- 住宅 IP:ISP 分配给特定位置的真实设备的地址。
- 移动 IP:移动运营商分配给各个设备的地址。它们对于抓取为移动用户显示不同内容的网站很有用。
数据中心 IP 地址很便宜,但大多数 WAF 可以毫不费力地发现它们。相反,住宅 IP 更可靠。阅读我们的最佳网络抓取代理提供商指南,以查看一系列不错的选择。
2.运行强化的无头浏览器
无头浏览器是抓取需要 JavaScript 的网站的好工具。然而,它们的主要目的是构建自动化测试。因此,他们不会试图隐藏并且可能会设置特殊的标头或变量,这有助于 WAF 识别他们的请求。
有一些库可以覆盖该默认行为。例如,undetected_chromedriver
修补 Selenium 使其为抓取做好准备,并puppeteer-extra-plugin-stealth
为 Puppeteer 和 Playwright 做同样的事情。他们可以帮助您绕过 WAF。
3.网页抓取API
像 ZenRows 这样的抓取 API 是避免被 WAF 阻止的一个很好的选择。该技术提供高级代理并实施复杂的反机器人技术,消除所有令人头疼的问题。
假设您想用 Python构建一个网络抓取脚本,以从受 Cloudflare 保护的 Asana 的 G2 评论页面中提取数据。
https://www.g2.com/products/asana/reviews
如果您使用 Selenium 访问它,您将收到以下403 Forbidden
页面错误:
然后,勾选“JavaScript Rendering”、“Anti-bot”和“Premium Proxy”。此外,等待.l2
CSS 选择器。
您将获得以下模式的 Python 代码Proxy
:
import requests url = "https://www.g2.com/products/asana/reviews" proxy = "http://<YOUR_ZENROWS_API_KEY>:[email protected]:8001" proxies = {"http": proxy, "https": proxy} response = requests.get(url, proxies=proxies, verify=False) print(response.text)
这一次,你会得到200回应。再见,403错误!
只需一次 API 调用,您就可以摆脱市场上最强大的 WAF 提供商的所有保护!
4.调用源站
WAF 背后的想法是创建防火墙网络并保护其中的内容。但是如果能穿过它,直接联系源站,绕过一切防御呢?
首先,使用Shodan之类的服务或CloudFlair之类的工具来获取主机服务器的 IP 地址。然后,伪造一些请求,使它们看起来像是来自一个有效的域名,并联系服务器。
请记住,这种技术并不总是可行的,因为对于大多数目标来说,找到原始服务器 IP 是很困难的。此外,伪造正确的请求需要时间和精力。
5. 使用 WAF 求解器
这些是声称能够绕过 WAF 挑战的工具或服务。他们通过分析保护方法并相应地修改 HTTP 流量来工作。一些流行的 WAF 求解器是:
BypassWAF:它试图通过查找旧的 DNS A 记录并验证源服务器是否回复该域来克服防火墙。
Cfscrape:一个开源 Python 模块,可让您绕过 Cloudflare 保护。
Cloudscraper:一个 Python 库,用于避免 Cloudflare 等候室,也称为“我处于攻击模式”(IUAM)。
大多数这些解决方案的工作时间有限,因为它们没有得到维护或保持最新。
6. 对 JavaScript 挑战进行逆向工程
JavaScript 挑战涉及 WAF 在页面上注入的代码。浏览器运行代码片段并透明地克服它。如果爬虫无法解决测试,它会被标记为机器人并被阻止。
这是 WAF 使用的最常见的保护措施之一。这就是为什么您需要知道如何绕过它的原因。你拥有它的唯一方法是分析注入的片段,然后对 JavaScript 代码进行逆向工程并研究挑战的工作原理。
有关真实世界的示例,请查看我们关于如何解决 Cloudflare“等候室”挑战的指南。
7.绕过验证码
验证码是网站用来防止机器人访问其内容的常用工具。要绕过它们,您有两种解决方案:
验证码解决服务:这些服务通常很昂贵且容易出错。
防止它们出现:Proxies 提供的工具可帮助您在第一时间避免它们出现。
在大多数情况下,第二种选择是最有效的解决方案。请参阅我们关于最佳验证码代理的指南以了解更多信息。
8. 不要落入蜜罐陷阱
蜜罐陷阱涉及人类用户看不到但机器人可以看到的虚假页面、链接或表单。当自动访问者与他们互动时,该网站可以检测并禁止他们。
让您的机器人变得聪明,避免落入此类陷阱。不要点击不可见的链接或填写隐藏的表单域。忽略与display: noneHTML 元素的交互,并确保您的目标页面是真实的。
9. 绕过浏览器指纹识别
浏览器指纹识别是关于收集有关用户浏览器的信息。这个想法是利用该数据来唯一地识别用户并限制允许的请求数量。请访问我们关于浏览器指纹识别的文章,了解有关其工作原理的更多信息。
这种 WAF 方法的一个特殊方法是canvas fingerprinting。脚本使用用户的浏览器规范作为参数强制浏览器生成图像。不同的计算机会呈现不同的画布图像,使用户很容易根据它来识别。
10.绕过TLS指纹识别
TLS 指纹识别是一种通过研究客户端和服务器之间 TLS 握手期间交换的参数来识别用户的方法。
WAF 观察并记录所有 TLS 连接。他们跟踪谁发起了与服务器的对话,并决定是阻止还是允许该请求。在我们的TLS 指纹识别指南中探索如何使用此技术绕过 WAF 。
11.了解事件跟踪
WAF 不断收集有关用户的数据。他们会观察您何时、如何以及与哪些元素进行交互。通过寻找已知的模式,他们可以判断你是否是人类。
结论
您在这篇文章中学到了很多关于如何绕过 WAF 保护的知识:
- WAF 是什么,哪些是最常见的提供商。
- 是否有可能绕过它。
- 这些技术最常用的防御措施是什么。
这里介绍的技术只是 WAF 可用的整个武器库的一部分。此外,这些保护措施不断发展,规避它们的难度与日俱增。寻找变通办法并使它们保持最新需要花费太多时间和精力。