2

我想制作一个命令行帐户制造商(在 python 中)。它会向您显示 ReCapatcha 的使用情况PIL.Image.Image.show(),并在您输入所有信息后将请求提交给 google。

我从来都不擅长 JavaScript 或 HTML,所以我无法在accounts.google.com/SignUp页面上对代码进行左右设置。

我将提交请求的 url 是什么,它将是什么请求?谢谢。

4

2 回答 2

5

The simple answer - you don't. There is no way around the bot-catcher. This is not the popular answer, but it is the only true one. Data for the ReCapatcha is stored on the server, not sent to the client (obviously; this is the whole point). I hate being that guy, but you don't need the url or the message because your task is impossible. Sorry.

于 2012-10-05T01:17:37.443 回答
0

就像 Code Monkey 说的那样,使用您当前的方法是不可能实现这一点的。但是,可能还有另一种方式。与其让用户在查询站点之前填写数据,不如让您的程序表现得像一个普通的网络浏览器。

您可以使用urllib.request模块打开帐户创建页面并下载原始 html。

from urllib.request import urlopen
html = urlopen("https://accounts.google.com/NewAccount").read().decode('utf-8')

从那里,使用正则表达式选择 ReCAPTCHA 图像的 URL。

import re
token = re.search("accounts.google.com/Captcha\?ctoken=([^\"]+)", html).group(1)
url = "https://accounts.google.com/Captcha?ctoken=" + token

然后,您可以从 URL 下载图像并将其显示给用户。

至于实际提交表单,我怀疑您需要使用用户提供的数据设置data参数urlopen并向另一个 URL 发出 POST 请求,但我尚未验证这一点。

我发现对这类东西非常有帮助的 Firefox 插件是Tamper Data。它可以让您准确地看到您的浏览器在做什么,包括显示 POST/GET 请求的样子、您正在访问的 URL 以及其他有用的信息。

或者:

  • 使用机械化库(示例
  • 只需打开一个 Web 浏览器窗口到注册页面,让您的用户按照 Google 的意图创建一个帐户。

我还应该补充一点,我不容忍通过创建大量帐户(出于垃圾邮件或其他目的)违反Google 的 TOS 。谷歌提供了很棒的服务。请不要滥用它。

于 2012-10-05T12:44:32.430 回答