尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

使用 Selenium 在 Python 中绕过 CAPTCHA

使用 Selenium 在 Python 中绕过 CAPTCHA 本指南讲解如何在 Selenium 中绕过 CAPTCHA常见 CAPTCHA 类型Selenium 处理 CAPTCHA分步教程第 1 步创建新的 Python 项目第 2 步安装 Selenium第 3 步设置 Selenium 脚本第 4 步添加浏览器自动化逻辑第 5 步安装 Selenium Stealth 插件第 6 步配置 Stealth 以避免 CAPTCHAs第 7 步重复机器人检测测试如果上述方案无效怎么办什么是 CAPTCHACAPTCHACompletely Automated Public Turing test to tell Computers and Humans Apart用于区分人类用户与机器人。它提供人类易做、机器难做的挑战。常见提供商包括 Google reCAPTCHA、hCaptcha 和 BotDetect。常见 CAPTCHA 类型文本型输入被扭曲的字母/数字图片型在网格中识别特定物体音频型根据音频片段输入词语拼图型完成简单拼图如滑块CAPTCHA 常出现在表单提交的最后一步其作用是阻止自动化机器人完成操作。虽然有解题服务但因用户体验较差强制固定显示 CAPTCHA 的做法并不常见。CAPTCHA 也常是更广泛安全措施如 Web 应用防火墙 WAF的一部分当检测到可疑行为时这些系统会触发 CAPTCHA。要绕过它们机器人必须模拟人类行为这通常需要频繁更新脚本。Selenium 处理 CAPTCHA分步教程Selenium 是最常用的浏览器自动化库之一非常适合在控制浏览器的同时模拟人类行为。下面用 Python 脚本演示如何在 Selenium 中尽量避免触发 CAPTCHA。第 1 步创建新的 Python 项目请先在本地安装 Python 3 和 Chrome。如果你已经有 Selenium 抓取或测试脚本可跳过前三步。否则创建一个演示项目并进入mkdirselenium_democdselenium_demo在其中创建一个新的 Python 虚拟环境python-mvenv venv用你喜欢的 Python IDE 打开项目文件夹创建script.py文件。第 2 步安装 Selenium激活虚拟环境Windows:venv\Scripts\activateLinux 或 macOS:sourcevenv/bin/activate安装 Seleniumpipinstallselenium第 3 步设置 Selenium 脚本在script.py中导入 Seleniumfromseleniumimportwebdriver创建一个ChromeOptions对象将 Chrome 配置为无头模式启动optionswebdriver.ChromeOptions()options.add_argument(--headless)用上述配置初始化一个 Chrome WebDriver最后用quit()关闭它。当前的script.py如下fromseleniumimportwebdriver# 配置 Chrome 使用无头模式optionswebdriver.ChromeOptions()options.add_argument(--headless)# 启动一个 Chrome 实例driverwebdriver.Chrome(optionsoptions)# 浏览器自动化逻辑...# 关闭浏览器并释放资源driver.quit()上述脚本会以无头模式启动 Chrome然后关闭浏览器。第 4 步添加浏览器自动化逻辑为测试 Selenium 的 CAPTCHA 规避逻辑脚本将访问 bot.sannysoft.com 并截取整页截图。该页面会运行多项测试以判断访问者是人还是机器人。用本机标准浏览器访问时应能全部通过。使用get()访问目标页面driver.get(https://bot.sannysoft.com/)Selenium 无内置整页截图功能。变通做法是将窗口尺寸调整为body尺寸后再截图# 获取页面的宽高full_widthdriver.execute_script(return document.body.parentNode.scrollWidth)full_heightdriver.execute_script(return document.body.parentNode.scrollHeight)# 将浏览器窗口设为页面宽高driver.set_window_size(full_width,full_height)# 截取整页截图driver.save_screenshot(screenshot.png)# 恢复原始窗口大小driver.set_window_size(original_size[width],original_size[height])这样screenshot.png将包含整页截图。合并完整逻辑如下fromseleniumimportwebdriver# 配置 Chrome 使用无头模式optionswebdriver.ChromeOptions()options.add_argument(--headless)# 启动一个 Chrome 实例driverwebdriver.Chrome(optionsoptions)# 访问目标页面driver.get(https://bot.sannysoft.com/)# 记录当前窗口大小original_sizedriver.get_window_size()# 获取页面的宽高full_widthdriver.execute_script(return document.body.parentNode.scrollWidth)full_heightdriver.execute_script(return document.body.parentNode.scrollHeight)# 将浏览器窗口设为页面宽高driver.set_window_size(full_width,full_height)# 截取整页截图driver.save_screenshot(screenshot.png)# 恢复原始窗口大小driver.set_window_size(original_size[width],original_size[height])# 关闭浏览器并释放资源driver.quit()运行脚本python script.py脚本会在无头模式下启动 Chromium访问目标页面、截图然后关闭浏览器。项目根目录会生成screenshot.png文件。如图中红框所示无头模式下的 Chrome 未通过多项检测这意味着脚本很可能被标记为机器人从而在受保护站点上遭遇 CAPTCHA。为降低被检测并避免 CAPTCHA下一步使用 Stealth 插件。第 5 步安装 Selenium Stealth 插件Selenium Stealth 是一个 Python 包可在 Selenium 控制下减少 Chrome/Chromium 被识别为机器人的概率。它通过修改浏览器属性来避免自动化特征泄露从而绕过反机器人检测。其工作方式类似 Puppeteer Stealth但面向 Selenium。使用pip安装pipinstallselenium-stealth在script.py中引入fromselenium_stealthimportstealth第 6 步配置 Stealth 以避免 CAPTCHAs调用stealth()注册并配置 Chrome WebDriver以规避 CAPTCHAstealth(driver,user_agentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36,languages[en-US,en],vendorGoogle Inc.,platformWin32,webgl_vendorIntel Inc.,rendererIntel Iris OpenGL Engine,fix_hairlineTrue,)可按需调整参数以上设置已足以绕过多数基础反爬检测。配置完成后Selenium 控制的浏览器会更像真实用户的浏览器。第 7 步重复机器人检测测试最终的script.py如下fromseleniumimportwebdriverfromselenium_stealthimportstealth# 配置 Chrome 使用无头模式optionswebdriver.ChromeOptions()options.add_argument(--headless)# 启动一个 Chrome 实例driverwebdriver.Chrome(optionsoptions)# 使用 Selenium Stealth 配置以减少被检测stealth(driver,user_agentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36,languages[en-US,en],vendorGoogle Inc.,platformWin32,webgl_vendorIntel Inc.,rendererIntel Iris OpenGL Engine,fix_hairlineTrue,)# 访问目标页面driver.get(https://bot.sannysoft.com/)# 记录当前窗口大小original_sizedriver.get_window_size()# 获取页面的宽高full_widthdriver.execute_script(return document.body.parentNode.scrollWidth)full_heightdriver.execute_script(return document.body.parentNode.scrollHeight)# 将浏览器窗口设为页面宽高driver.set_window_size(full_width,full_height)# 截取整页截图driver.save_screenshot(screenshot.png)# 恢复原始窗口大小driver.set_window_size(original_size[width],original_size[height])# 关闭浏览器并释放资源driver.quit()再次执行python script.py打开screenshot.png你会看到所有机器人检测测试均已通过如果上述方案无效怎么办反机器人系统关注的不仅是浏览器设置IP 信誉同样关键。仅靠免费库更换 IP 往往无效你需要在 Selenium 中集成代理。即便浏览器配置到位CAPTCHA 仍可能出现。对于基础的 reCAPTCHA v2可尝试 selenium-recaptcha-solver但这些库更新滞后、能力有限。面对 Cloudflare 等复杂系统基础方法会失效。更稳妥的方案是使用 Bright Data 的网页抓取工具支持 reCAPTCHA、hCaptcha、px_captcha、SimpleCaptcha、GeeTest、FunCaptcha、Cloudflare Turnstile、AWS WAF Captcha、KeyCAPTCHA 等。Bright Data 的 CAPTCHA Solver 可与任意 HTTP 客户端或浏览器自动化工具包括 Selenium配合使用。结论借助 Selenium Stealth可以覆盖 Chrome 的默认配置以降低被检测概率。但这并非万能方案高级反爬工具仍可能拦截你。更现实的做法是通过可解锁的 API 连接目标站点直接获取去除 CAPTCHA 的页面 HTML。其中一个选择是 Web Unlocker。该抓取 API 会在每次请求时自动通过代理轮换出口 IP并处理浏览器指纹、自动重试与 CAPTCHA 解决让处理 CAPTCHA 变得前所未有的轻松。立即注册开启免费试用。
返回列表