是否可以使用 Python 请求填写表单?

Is it possible to fill out forms with Python Requests?

提问人:MiniSkoot32 提问时间:11/14/2023 最后编辑:MiniSkoot32 更新时间:11/16/2023 访问量:48

问:

我正在制作一个 Python 库来登录 Google 帐户,但一直想知道我是否可以在 python 请求中做到这一点。我只是想填写它要求您发送电子邮件的空间。这是我到目前为止的代码。由于技术原因,我无法在 Chromebook 上使用 Google API。

import requests

def submit_form(timeout=10, check_status_code=True):
    try:
        google_login = requests.get("https://accounts.google.com/ServiceLogin?elo=1", timeout=timeout, allow_redirects=True, verify=True)
        if check_status_code:
            print(google_login.status_code)
    except requests.exceptions.RequestException as e:
        print(f"An error occurred: {e}")

submit_form(timeout=10, check_status_code=True)
python-3.x python-requests google-colaboratory google-account

评论

3赞 Sayse 11/14/2023
API 与本地计算机有什么关系?
0赞 tripleee 11/14/2023
更详细地说,如果您能够使用 运行 Python,那么您已经在使用 API。你可能有别的意思,但我们猜不到是什么。requests
0赞 alec_djinn 11/14/2023
我想你想用这个方法。在请求文档中查看它。requests.post()

答:

1赞 Rick 11/14/2023 #1

通常,表单仅存在于浏览器中。

用户的典型工作流是,用户的浏览器将对包含表单的页面发出 GET 请求。此表单将包含一些与之关联的 html,这些 html 将告诉浏览器如何呈现每个表单项,以及在哪里提交表单(操作)以及使用哪种数据表示(application/x-www-form-urlencoded 或 multipart/form-data)。 用户做他们的事情,然后最终点击提交按钮。 此时,浏览器将转换所有表单数据,并将 POST 请求提交到使用表单中的数据指定的位置。

作为 python 脚本,您不需要浏览器,如果您已经知道有关表单的详细信息,那么您甚至不需要获取表单。您需要做的就是提交 POST 请求。

现在,如果网站对自动化友好,那么它们的形式可能非常一致且易于使用。这实际上意味着他们的表单是一个 API,指定需要提交哪些数据。

然而,一些网站真的不希望机器人使用他们的表单,所以他们动态地改变他们的表单,因此尝试从中提取 API 是很困难的。Goggle 做了很多事情来确保它真的是人类在浏览器中填写表单,而不是机器人。而且谷歌也让授权机器人很容易使用专用的 API。

所以你应该使用他们的专用 API,我保证如果你能使用 python,你就可以使用他们的 API。

评论

0赞 Rick 11/14/2023
如果您尝试使用他们的 API 并遇到问题,请四处搜索。如果你不能弄清楚,问一个新问题,问你尝试过什么,问为什么它不起作用/对替代方案的建议。
0赞 MiniSkoot32 11/16/2023
我无法使用 API,因为我无法创建谷歌云帐户
0赞 Rick 11/16/2023
@MiniSkoot32除非您未成年,否则您实际上可以创建一个 Google Cloud 帐户。如果您未成年,请让您的监护人制作一个供您使用。