发布到ReCAPTCHA

时间:2012-05-02 23:41:33

标签: c# asp.net-mvc post recaptcha

我正试图发布以从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 merh +多“

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

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
    }
  );

2 个答案:

答案 0 :(得分: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地址,但您获得的当前错误是由于参数中的前导空格。

答案 1 :(得分:0)

reCAPTCHA规范明确指出&#34; remoteip&#34;参数确实是必需

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