2013-07-24 57 views
0

我想驗證我的Python web應用程序中的reCAPTCHA,但我總是得到incorrect-captcha-sol錯誤,雖然響應是正確的。下面是驗證代碼:reCAPTCHA總是返回不正確的驗證碼

data = { 
    'privatekey': config.registry.settings['captcha_private_key'], 
    'remoteip': ip, 
    'challenge': challenge, 
    'response': response, 
} 
request = urllib2.Request('http://www.google.com/recaptcha/api/verify', 
          urllib.urlencode(data)) 
response = urllib2.urlopen(request) 
if response.readline() != 'true': 
    log.error('Captcha validation error, error_code=%s' % (response.readline())) 
    raise httpexceptions.HTTPUnauthorized() 

爲了得到挑戰和響應值,我用get_challenge()get_response() JavaScript函數,然後通過AJAX發送的值。

+0

你可以驗證'challenge'和'response'的值是否有效/正確?那'urllib.urlencode(data)'評估你想要的? – Ian

+0

@Ian我在js和python中打印了'challenge'和'response'字段,它們是有效和正確的。如果我刪除或修改了其他必需的字段,比如'remoteip'或'privatekey',我就會得到其他錯誤,所以我假設'urllib.urlencode(data)'正確地將'data'字典轉換爲字符串。 –

+0

它必須是輸入不正確。我只是設置了最簡單的Python服務器(使用CherryPy)和HTML表單(使用AJAX),並且它工作得很好(也使用您的代碼)。 – Ian

回答

0

解決了這個問題。看起來QUnit自動javascript測試以某種方式與導致incorrect-captcha-sol代碼的catpcha交互。