什么是 CAPTCHA?
CAPTCHA,全称为 “Completely Automated Public Turing test to tell Computers and Humans Apart”(完全自动化的公共图灵测试以区分计算机和人类),是一种用于识别网站访问者是否为真实人的测试。
这是一种在加载请求页面之前必须解决的干扰,有多种形式。网站使用它们来测试用户的准确性,从而确定你是实际用户还是机器人。
不用担心!他们不会使用复杂的生物识别技术和面部识别进行身份验证。
CAPTCHA 验证通常发生在以下情况下:
- 同一用户在短时间内流量突然激增。
- 可疑的互动。例如,访问很多页面但没有滚动。
- 随机检查。因为一些高安全性的防火墙会进行检查以防万一。
CAPTCHA 如何工作?
CAPTCHA 通过生成对人类来说容易识别但对计算机来说难以解析的挑战来工作。这些挑战通常涉及识别扭曲的文本、选择包含特定物体的图像或解决简单的逻辑问题。
以下是 CAPTCHA 工作的主要步骤和机制:
1. 生成挑战:
- 文本 CAPTCHA。生成包含扭曲或模糊文本的图像,通常包括随机排列的字母和数字。
- 图像选择。提供一组图像,并要求用户选择包含特定物体的图像(例如,交通灯、汽车、行人等)。
- 逻辑问题。提出简单的数学或逻辑问题,并要求用户回答。
- 音频 CAPTCHA。播放包含随机字母或数字的音频,用户需要听并输入。
2. 显示挑战:
当用户访问需要验证的网页时,CAPTCHA 系统会生成并显示一个挑战。用户需要在指定的字段中输入答案或选择图像。
3. 用户响应验证:
用户提交答案后,系统会将用户的输入或选择与预期答案进行比较。验证成功则允许用户继续,验证失败则提示用户重试。
4. 生成新挑战:
如果用户多次验证失败,系统可能会生成一个新挑战,以确保尝试通过验证的是人类用户。
Nstbrowser 轻松绕过 CAPTCHA 认证以解锁网站。
立即免费试用!
6 种主要类型的 CAPTCHA
文本 CAPTCHA
随机生成一串字符并进行扭曲、旋转、颜色变化等处理,使 OCR(光学字符识别)算法难以解析。
3D CAPTCHA
这种新技术是文本挑战的一种进化,使用 3D 字符,这对计算机来说更难识别。
reCAPTCHA
谷歌提供的一种高级 CAPTCHA 系统,包含图像选择和文本识别组件。
利用用户验证的同时帮助改进图像识别和文本数字化技术。
数学挑战
用户需要解决数学方程或计算问题以通过验证。
图像选择 CAPTCHA
在登录时,系统显示一组图像并要求用户选择包含特定物体的图像。这种方法使用深度学习技术来分析用户的选择与预期答案的匹配程度。
音频 CAPTCHA
这种验证类型是为视力受损的用户设计的。验证系统播放一个包含字母或数字的音频片段,用户需要听并输入。
如何绕过 CAPTCHA?
方法 1. 避免 Honeypot 陷阱
Honeypot 陷阱是一种通过使用隐藏链接或表单来检测和标记自动化工具的策略,以防止机器人抓取内容。因此,如果点击这些陷阱,你将被标记为抓取器。
- 跳过隐藏元素
确保抓取脚本忽略具有 display: none
或 visibility: hidden
CSS 属性的元素。可以使用以下选择器过滤这些元素:
hidden_elements = driver.find_elements_by_css_selector("[style*='display:none'], [style*='visibility:hidden']")
- 检测隐藏表单
抓取器还应跳过隐藏的表单和输入框:
hidden_forms = driver.find_elements_by_css_selector("input[type='hidden']")
- 避免点击可疑链接
在点击链接之前,检查是否具有隐藏属性:
links = driver.find_elements_by_tag_name("a")
for link in links:
if "display:none" in link.get_attribute("style") or "visibility:hidden" in link.get_attribute("style"):
continue # 跳过隐藏链接
link.click() # 点击可见链接
- 使用
robots.txt
遵循网站的 robots.txt
文件中的规则,避免抓取禁止的部分。
- 模拟人机交互
模拟真实用户行为,如随机间隔点击和滚动,以避免被检测为抓取器。
- 日志分析
定期分析抓取器的日志,查看是否被阻止或重定向,以便调整策略。
方法 2. 使用真实的头信息
正确识别请求头信息是检测抓取器的一种常见方式,尤其是在使用 Selenium 和 Puppeteer 这样的无头浏览器时。为避免被识别为抓取器,可以修改 User-Agent 头信息以模仿真实用户的浏览器。
方法 3. IP 轮换或头信息轮换
同一个 HTTP 头信息在短时间内发出大量请求肯定是可疑的,对吧?
同一个 IP 地址发出大量请求也是可疑的!因为真实用户不可能在五分钟内访问 1000 个网页。
为了让网站相信你是一个真实用户,轮换你的头信息或 IP 地址,这样就不会被网站轻易识别。
方法 4. 使用 Nstbrowserless
Nstbrowserless 提供了一种高效的方式来运行无头浏览器自动化脚本,同时避免被检测为抓取器。这个基于云的无头浏览器服务模仿真实用户的行为,以帮助绕过 CAPTCHA 和其他反抓取机制。
Nstbrowser 通过 Selenium 和 Puppeteer 轻松解决 CAPTCHA 识别问题。允许你无缝访问和抓取网站。
方法 5. 禁用自动化指标
大多数浏览器自动化工具如 Selenium 和 Puppeteer 都有一些特定的标志,如 navigator.webdriver
,暴露了它们是自动化工具的事实。
这时你需要使用像 Puppeteer-stealth 这样的插件来有效隐藏这些痕迹。
方法 6. 模拟真实用户行为
最后,网站会跟踪用户的导航、悬停元素,甚至是点击坐标来分析用户行为。因此,模拟真实的浏览行为非常重要,以避免被检测。
你可以尝试设置的一些行为是:
- 随机化动作,如滚动。
- 点击。
- 打字。
- 在动作之间使用随机时间间隔。
结论
什么是 CAPTCHA,为什么会出现,以及如何绕过它?你已经在本文中学到了关于 CAPTCHA 的最全面的知识。轮换你的头信息和 IP 是避免 CAPTCHA 最有效和最简单的方法。
为了让你更容易进行网页抓取,使用 Nstbrowser 轻松解锁网站,智能轮换 IP,并绕过 CAPTCHA 验证。