html5手机网站框架,电商网站开发系列,0基础学剪辑视频,企业摄影网站模板正如许多企业或爬虫用户所知#xff0c;AWS WAF#xff08;Web 应用防火墙#xff09;是一个强大的安全解决方案#xff0c;旨在保护 Web 应用免受常见的网络攻击和漏洞。其关键功能之一是使用 CAPTCHA 和挑战来区分合法用户和潜在的恶意机器人。虽然这增强了安全性#x…
正如许多企业或爬虫用户所知AWS WAFWeb 应用防火墙是一个强大的安全解决方案旨在保护 Web 应用免受常见的网络攻击和漏洞。其关键功能之一是使用 CAPTCHA 和挑战来区分合法用户和潜在的恶意机器人。虽然这增强了安全性但也会为 Web 爬虫活动带来显著的障碍和一些不必要的麻烦。所以在本文中我们将探讨 AWS WAF 中的 CAPTCHA 和挑战并讨论如何克服这些障碍以确保 Web 爬虫和企业活动顺利进行。
了解 AWS WAF 的 CAPTCHA 和挑战
众所周知AWS WAF 通过 CAPTCHA 和挑战作为其防御机制的一部分来防止自动化攻击和未经授权的访问。这些措施旨在验证与 Web 应用交互的用户是人类而不是机器人。例如当您的 Web 爬虫活动中某个请求被认为是可疑时AWS WAF 可能会向您展示 CAPTCHA 或挑战。 解决重复失败的令人烦恼的验证码吗 发现无缝自动验证码解决方案使用 Capsolver 的 AI 驱动自动 Web 解封技术 使用 优惠码 领取顶级验证码解决方案CapSolver: WEBS。兑换后您将每次充值额外获得 5% 奖励无限制。 IP 匹配条件
Amazon WAF 可以使用无类别域间路由CIDR表示法为每个 IP 匹配条件配置最多 10,000 个 IP 地址范围。每个列表受此限制的约束。允许列表、拒绝列表手动 IP 列表组件和第三方 IP 阻止列表IP 列表解析组件是单独的列表每个限制 10,000 个 IP 地址。可以手动修改允许和拒绝的 IP 集以根据需要添加或删除 IP 地址。
嵌入在 Web 应用中的蜜罐
将创建一个很少访问的端点作为蜜罐以检测和转移内容抓取器和恶意机器人的入站请求。普通用户不会尝试访问此端点。但是内容抓取器和恶意机器人如扫描漏洞和抓取数据的恶意软件可能会尝试访问蜜罐端点。在这种情况下Amazon 将检查请求以提取其来源然后更新相关的 Amazon WAF 规则以阻止该 IP 地址的后续请求。
此外AWS 通常有三种类型的验证码 下面是一个图片网格拼图的示例。拼图要求您选择网格中包含特定类型对象的所有图片。 另一种常见的验证码是如下图所示要求您确定绘图中汽车路径的终点。 最后一种是音频 CAPTCHA它利用背景噪音叠加在语音上的原理。当然与拼图一样如果您有正确的方法音频 CAPTCHA 也可以自动解决。
如何识别 AWS WAF
请求 URL 的响应头检查
当请求一个 URL 时如果响应状态码通常为 405 且响应头包含字段 X-Amzn-Waf-Action: captcha 和 X-Amzn-Errortype: ForbiddenException则表示当前访问被 AWS WAF 阻止。
响应 HTML 中的出现
当响应 HTML 包含诸如 awsWaf 、 captcha.awswaf.com 等信息时表示需要进行 AWS 验证码处理。
script typetext/javascript
window.awsWafCookieDomainList [];
window.gokuProps {key:AQIDAHjcYu/*****,iv:CgAHfjMvRjAAAA3q,context:MK7Z1IlZc****
};
/script
script srchttps://***.token.awswaf.com/***/challenge.js/script
script srchttps://***.captcha.awswaf.com/****/captcha.js/script解决 WAF 的技巧
我们可以通过 CapSolver 实现合规的自动拼图解决。CapSolver 是一个提供验证码识别解决方案的服务。它为不同的验证码系统包括 WAF提供各种任务类型。
CapSolver 提供两种验证码解决服务可以帮助您轻松解决 WAF。一个服务是使用 CapSolver 的 API另一个是下载 扩展。
接下来按照我的步骤看看如何在 Web 抓取中实现自动化解决方案非常简单让我们深入探讨
步骤 1 登录
您可以 注册 CapSolver 并访问我们的 CAPTCHA 服务目前支持免费试用。
步骤 2 获取您的免费 API
注册后您可以从主页面板获得您的 API 密钥。
代码示例
要通过代码获取有效的 aws-waf-token您可以使用 Python、Go、JavaScript 等主流语言以下是使用 Python 获取的方法
# pip install requests
import requests
import timeapi_key YOUR_API_KEY # TODO: your api key of capsolver
site_url https://efw47fpad9.execute-api.us-east-1.amazonaws.com/latest # TODO: page url of your sitedef capsolver():payload {clientKey: api_key,task: {type: AntiAwsWafTaskProxyLess,websiteURL: site_url}}res requests.post(https://api.capsolver.com/createTask, jsonpayload)resp res.json()task_id resp.get(taskId)if not task_id:print(Failed to create task:, res.text)returnprint(fGot taskId: {task_id} / Getting result...)while True:time.sleep(1) # delaypayload {clientKey: api_key, taskId: task_id}res requests.post(https://api.capsolver.com/getTaskResult, jsonpayload)resp res.json()status resp.get(status)if status ready:return resp.get(solution, {}).get(cookie)if status failed or resp.get(errorId):print(Solve failed! response:, res.text)returntoken capsolver()
print(token)很快您将看到输出是所需的 aws-waf-token
Got taskId: 373a6363-c03f-48d5-85eb-05e553980a64 / Getting result...
2d8415fb-43ec-42c5-8106-c51194d5eb14:EQoAljIa3jkRAAAA:ZbkUZcJEl90QIM46acsmio......接下来尝试看看 aws-waf-token 是否实际有效。
def check_website(token):headers {accept: text/html,application/xhtmlxml,application/xml;q0.9,image/avif,image/webp,image/apng,*/*;q0.8,application/signed-exchange;vb3;q0.7,accept-language: en-US,en;q0.9,sq;q0.8,ak;q0.7,ar;q0.6,an;q0.5,am;q0.4,as;q0.3,az;q0.2,ast;q0.1,ee;q0.1,ay;q0.1,ga;q0.1,et;q0.1,oc;q0.1,or;q0.1,om;q0.1,eu;q0.1,be;q0.1,bm;q0.1,bg;q0.1,nso;q0.1,is;q0.1,pl;q0.1,bs;q0.1,fa;q0.1,bho;q0.1,br;q0.1,tn;q0.1,fi;q0.1,fr;q0.1,cookie: token,}res requests.get(site_url, headersheaders)print(fGot response {res.status_code})print(fCookies: {res.cookies})check_website(token)结论
虽然 AWS WAF 的 CAPTCHA 和挑战可以有效防止恶意机器人但也可能对合法的 Web 爬虫活动带来不便。然而通过理解 AWS WAF 的工作原理并采用像 CapSolver 这样的解决方案您可以绕过这些障碍确保 Web 爬虫活动顺利进行。记住安全和合规同样重要因此在实施任何自动化解决方案时请确保遵循相关的法律和道德准则。