4

我正在尝试发布以从 c# 代码中重新捕获。

        var data = new NameValueCollection
        {
            { "privatekey", "my key" },
            { "remoteip ", "" },
            { "challenge ", model.recaptcha_challenge_field },
            { "response ", model.recaptcha_response_field }
        };

        using (var client = new WebClient())
        {

            var response = client.UploadValues("http://www.google.com/recaptcha/api/verify", data: data);

            var result = ASCIIEncoding.ASCII.GetString(response);

        }

当我这样做时,结果正在返回

false invalid-request-cookie

我需要设置远程IP吗?还有什么问题?

更新

https://developers.google.com/recaptcha/docs/verify说错误意味着:

https://developers.google.com/recaptcha/docs/verify

页面html的值如下:

<INPUT id=recaptcha_challenge_field value=03AHJ_VusdI2SY_P2iM3VICgLmOw-7CE7F6zmOwvwfya4L8Jeiok_rCwVmHFJwJHxlelhp8By_QTA7SNF58fwijij5rxBLqgpoI3nuWy6S0HGL7U7lk_35aazPfaMyVwbeWuWJyxJ0DqjwDwrByD4AY70O0qlaTnCUxQ type=hidden name=recaptcha_challenge_field />

在我发回的对象中,如下所示:

“recaptcha_challenge_field=03AHJ_VusdI2SY_P2iM3VICgLmOw-7CE7F6zmOwvwfya4L8Jeiok_rCwVmHFJwJHxlelhp8By_QTA7SNF58fwijij5rxBLqgpoI3nuWy6S0HGL7U7lk_35aazPfaMyVwbeWuWJyxJ0DqjwDwrByD4AY70O0qlaTnCUxQ&recaptcha_response_field=re嗯+很多”

当我在服务器上得到它时,值是

03AHJ_VusdI2SY_P2iM3VICgLmOw-7CE7F6zmOwvwfya4L8Jeiok_rCwVmHFJwJHxlelhp8By_QTA7SNF58fwijij5rxBLqgpoI3nuWy6S0HGL7U7lk_35aazPfaMyVwbeWuWJyxJ0DqjwDwrByD4AY70O0qlaTnCUxQ

因此,如果我们将所有 3 个值并排放置,我们将得到:

03AHJ_VusdI2SY_P2iM3VICgLmOw-7CE7F6zmOwvwfya4L8Jeiok_rCwVmHFJwJHxlelhp8By_QTA7SNF58fwijij5rxBLqgpoI3nuWy6S0HGL7U7lk_35aazPfaMyVwbeWuWJyxJ0DqjwDwrByD4AY70O0qlaTnCUxQ 
03AHJ_VusdI2SY_P2iM3VICgLmOw-7CE7F6zmOwvwfya4L8Jeiok_rCwVmHFJwJHxlelhp8By_QTA7SNF58fwijij5rxBLqgpoI3nuWy6S0HGL7U7lk_35aazPfaMyVwbeWuWJyxJ0DqjwDwrByD4AY70O0qlaTnCUxQ 
03AHJ_VusdI2SY_P2iM3VICgLmOw-7CE7F6zmOwvwfya4L8Jeiok_rCwVmHFJwJHxlelhp8By_QTA7SNF58fwijij5rxBLqgpoI3nuWy6S0HGL7U7lk_35aazPfaMyVwbeWuWJyxJ0DqjwDwrByD4AY70O0qlaTnCUxQ

通过调用以下命令生成页面上的重新捕获:

Recaptcha.create("pub key",
    "myDiv",
    {
        theme: "clean",
        callback: Recaptcha.focus_response_field
    }
  );
4

2 回答 2

4

您在 remoteip、challenge 和 response 参数中留有空格。它应该是

var data = new NameValueCollection
        {
            { "privatekey", "my key" },
            { "remoteip", "192.168.1.111" },
            { "challenge", model.recaptcha_challenge_field },
            { "response", model.recaptcha_response_field }
        };

还需要 IP 地址,但您得到的当前错误是因为参数中的前导空格。

于 2013-02-14T07:26:07.747 回答
0

reCAPTCHA 规范明确指出确实需要“remoteip”参数:

https://developers.google.com/recaptcha/docs/verify

于 2012-08-07T20:35:30.920 回答