我正在按照文档中的说明实现不可见的 reCAPTCHA:reCAPTCHA V2 文档
我已经成功地实现了它,没有任何问题。但是,我想知道的是我是否可以模拟成为一个机器人来进行测试?
有没有办法强制 reCAPTCHA 做出响应,就好像我是机器人一样?
预先感谢您的帮助。
在开发工具中,打开
Settings
,然后打开 Devices
,添加一个自定义设备,其名称和用户代理等于 Googlebot/2.1
。
最后,在顶部栏左侧的设备模式中,选择设备(默认为
Responsive
)。
您可以在 https://www.google.com/recaptcha/api2/demo?invisible=true
测试验证码(这是Invisible Recaptcha的演示。您可以删除url
invisible
参数来使用验证码按钮进行测试)
您可以使用 Chrome 插件(例如“修改标头”)并添加用户代理(例如 Googlebot/2.1 (+http://www.google.com/bot.html))。
对于 Firefox,如果您不想安装任何附加组件,您可以轻松地手动更改用户代理:
我用 Recaptcha v3 尝试过,它确实返回了 0.1 的分数
完成测试后,不要忘记从 about:config 中删除这一行!
我在这里找到了这个方法(这是一篇Apple OS文章,但Firefox方法也适用于Windows):http://osxdaily.com/2013/01/16/change-user-agent-chrome-safari-firefox /
是的,出于测试目的,可以强制重新验证 v2 失败。
有两种方法可以做到这一点
第一种方法:
您需要有 Firefox 浏览器,只需发出一个简单的表单请求 然后等待响应,收到响应后单击刷新按钮,Firefox 将提示一个框,显示“要显示此页面,Firefox 必须发送将重复之前执行的任何操作(例如搜索或订单确认)的信息。”然后点击“重新发送”
通过执行此操作,浏览器将发送之前的“g-recaptcha-response”密钥,这将使您的 recaptcha 失败。
第二种方式
您可以通过任何应用程序发出任何简单的 POST 请求,例如在 Linux 中,您可以使用 CURL 来发出 POST 请求。
只需确保您指定了所有提交的表单以及请求的标头,最重要的是,将一个字段名称发布为“g-recaptcha-response”,并为此字段提供任意随机值
我发现如果您单击 reCaptcha 徽标而不是文本框,它往往会失败。
这是因为机器人检测可点击的点击框,并且由于复选框是图像,以及“我不是机器人”文本,并且机器人无法正确地将图像处理为文本,但它们可以处理可点击的点击框,这reCaptcha 告诉他们点击,只是没有告诉他们在哪里。
将鼠标光标保持在 reCaptcha 上,并尽可能远离复选框进行单击。那么你很可能会失败。 (它只会显示您必须识别图片的内容)。
图片放在那里是因为就像我说的,机器人无法处理图像并识别汽车之类的东西。
所有建议的答案都不适合我。我刚刚编写了一个简单的 Node.js 脚本,它打开一个带有页面的浏览器窗口。 ReCaptcha 检测自动浏览器并显示挑战。脚本如下:
const puppeteer = require('puppeteer');
let testReCaptcha = async () => {
const browser = await puppeteer.launch({ headless: false });
const page = await browser.newPage();
await page.goto('http://yourpage.com');
};
testReCaptcha();
不要忘记通过运行
npm i puppeteer
安装 puppeteer 并将 yourpage.com
更改为您的页面地址
截至 2023 年,这个问题的新正确答案比人们想象的要简单一些。用户代理和设备模拟不再触发 Recaptcha,但为了触发验证,人们所要做的就是像机器人一样行动。
这里是隐形 Recaptcha 演示页面:https://www.google.com/recaptcha/api2/demo?invisible=true
提交该表格约 10 次,它将开始向您显示验证信息。该表格已预先填写,因此只需提交、返回、提交、返回即可。然后,您可以返回到您正在测试的网站,Google 会将您识别为需要验证的同一个人。
如果您只想模拟在后端获得的内容,那么可以选择暂时禁用浏览器中的 JavaScript。
这会导致 reCAPTCHA 不会显示在您的网页上。然后,当您在页面上执行某些操作时,导致 POST,后端代码将不会收到
g-recaptcha-response
表单字段,并且验证码验证将失败。