0

我正在编写一个脚本,它需要使用指定的公钥获得 reCAPTCHA 质询,所以如果我用以下命令打开它urllib2

chp = urllib.urlencode(dict({'k': key}))
chg = urllib2.urlopen('http://www.google.com/recaptcha/api/challenge', chp).read()

然后我可以从那里得到挑战并返回它,但是当它这样做时,我得到了错误:

urllib2.HTTPError: HTTP Error 405: HTTP method POST is not supported by this URL

我该如何解决这个问题?

4

1 回答 1

0

改用 GET 请求:

chp = urllib.urlencode(dict({'k': key}))
chg = urllib2.urlopen('http://www.google.com/recaptcha/api/challenge?' + chp).read()

正如urllib2文档所述:

data 可以是一个字符串,指定要发送到服务器的附加数据,或者如果不需要此类数据,则为 None。目前 HTTP 请求是唯一使用数据的请求;当提供数据参数时,HTTP 请求将是 POST 而不是 GET。

您通过将其作为第二个位置参数chp传递给方法来作为 POST 数据传入。urlopen使用 a 将其连接到 URL?会使其成为 GET 请求。

于 2012-06-12T15:38:57.533 回答