Google Recaptcha v3问题

时间:2018-07-17 21:42:20

标签: recaptcha recaptcha-v3

为什么Recaptcha v3会引发错误? ...当我第二次在同一页面上检查访客的人格吗?

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

第一个令牌:

  

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

recaptcha 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

recaptcha v3响应:

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

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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

关于第二种情况,其想法是在执行动作时验证动作。意思是,如果要验证submit操作,则可能需要生成令牌以在提交时进行验证,而不是在grecaptcha对象准备就绪后立即进行验证。

Online documentation的示例中,在grecaptcha准备好后立即调用execute方法,但是当您要立即验证执行情况时就是这种情况。在使用公式的情况下,execute方法应该放在表单提交的同一例程中,对吗?可能是我弄错了,但是我已经能够验证点击操作,表单提交操作,关闭弹出窗口操作,为它们命名。

答案 3 :(得分:0)

页面加载时生成monstor captcha令牌绝对不是一个好主意,因为它会在2分钟后失效。如果仍然要这样做,则必须在一段时间后使用JavaScript中的“ setinterval”来更新令牌。

因此,要在按钮上生成令牌,然后提交“执行”,将会使您的工作做得更好。您可以调用ajax或Java脚本来调用execute方法。有关更多信息,请参阅google reCAPTCHA v3文档。