6

为什么 recaptcha v3 会抛出错误?...当我在同一页面上第二次检查访问者的人性时?

令牌显然不是重复的。...那么什么是重复?

第一个令牌:

03AEMEkEl76Kn0nMhKlgY8dMOAD2g3zGIHoGOqz95jEFKl8A24gADw-2gBipDYcU7G_TWSqpuWyNa62CIk-tYdreevde0p1lJg_3wwZlmD9giDSdPb_He-mTsIqv0tMuEroJLLArCI4vfbZjcCZ6BYokYEhYbCU-Qqdx9YbqgRG1JJDxE8LRagR0cPY8mfQZ5bZ7KGK8Dfqe8avqOy18RvIcYk-H6s9Bhq28s5YRIkHid163c-yqpeY8U5j9U70aveSuEcLz-UMlgsQ8MaYhHIIv7cJpag2RJFAgGxOZnWONEk2Z9-IK_Ea_4

重新验证 v3 响应:

{
"score":0.1,
"hostname":"localhost",
"success":true,
"challenge_ts":"2018-07-17T21:24:03Z",
"action":"AW___________LGOZCKiH_oQBEJnwwYcD"
}

同一页面上具有相同标签的第二个标记:

03AEMEkEk-CVItfMmzYErG97inmxzf7mIeWuAgEXmwncu8AvMGP0ofXnwCMFNdBpa7CY8MCkVZ_skiF1HwmGhKBgayFm-fM3VM_QfM5LRNDbxLLyCF8lGclmBBlihmkeT1PsvW9LrVfp2VdikuHxeqvviGnI2NKQHbclvaDnuu5rwy3HS_EiPrn7eJb3z892f8oIOMkVg6tTsCNPCTnH5QuvAIw2DlI3EiRFDSqIjXp4vJdzJIGn10K6Noi1JIPOCzJ8OUshn_yFROWvNNpYNFn3E7tSHk3j0LU9-KDy1RiSoEf2I1VcVEKTE

重新验证 v3 响应:

 {"error-codes":["timeout-or-duplicate"],"success":false}
4

4 回答 4

2

是的,这是我们在两种情况下得到的错误代码。1)当我们为两个请求发送相同的令牌时 2)令牌每 3 分钟过期一次。因此,如果用户在 3 分钟内没有提交表单,那么令牌就会过期,我们会收到此错误消息。

于 2019-01-17T08:16:09.247 回答
1

令牌可能已超时。它也发生在我身上。在页面渲染时,生成了一个令牌,但我在很长一段时间后执行了一个操作。然后它给了我这个错误。但是,如果令牌是在执行操作时生成的,那么它可以正常工作。

于 2018-08-02T13:13:14.000 回答
0

我有一个类似的问题,但我意识到这不是一个很好的理解。在以下情况下会出现此错误消息: 1. 令牌已经过验证,因此它变为“重复”。

  1. 令牌在验证之前执行了 3 分钟或更长时间,因此变为“超时”。

关于第二种情况,想法是在执行动作时验证动作。意思是,如果你想验证一个submit操作,那么你可能需要在提交时生成令牌来验证,而不是在 grecaptcha 对象准备好之后。

在线文档有一个示例,其中在executegrecaptcha 准备好后立即调用方法,但是当您想立即验证该执行时就是这种情况。在公式的情况下,execute 方法应该放在表单提交的同一个例程中,有意义吗?可能我弄错了,但我已经能够验证点击操作、表单提交操作、关闭弹出操作,你可以命名它们。

于 2019-04-09T16:39:43.340 回答
0

在页面加载时生成怪物验证码绝对不是一个好主意,因为它会在 2 分钟后过期。如果您仍然必须这样做,则必须在一段时间后使用 JavaScript 中的“setinterval”更新令牌。

因此,在按钮提交“执行”上生成令牌会更好地完成您的工作。您可以调用ajax 或java 脚本来调用execute 方法。请参阅 google reCAPTCHA v3 文档了解更多信息。

于 2020-09-18T09:49:09.257 回答