使用Python请求登录Google帐户

使用Python请求登录Google帐户,python,python-requests,Python,Python Requests,在多个登录页面上,需要谷歌登录才能继续。我想使用python中的请求库来登录。通常情况下,这对于请求库来说是很容易的,但是我一直无法让它工作。我不确定这是否是由于谷歌的一些限制(也许我需要使用他们的API?),或者是因为谷歌登录页面要求用户先输入电子邮件,然后按提交,然后输入密码,等等 这个问题以前在这里被问过,但没有一个解决方案对我有效。目前,我一直在使用此解决方案中提供的代码:如下所示: from bs4 import BeautifulSoup import requests my_em

在多个登录页面上,需要谷歌登录才能继续。我想使用python中的
请求
库来登录。通常情况下,这对于
请求
库来说是很容易的,但是我一直无法让它工作。我不确定这是否是由于谷歌的一些限制(也许我需要使用他们的API?),或者是因为谷歌登录页面要求用户先输入电子邮件,然后按提交,然后输入密码,等等

这个问题以前在这里被问过,但没有一个解决方案对我有效。目前,我一直在使用此解决方案中提供的代码:如下所示:

from bs4 import BeautifulSoup
import requests

my_email = "email_placeholder@gmail.com" # my email is here
my_pass = "my_password" # my password is here

form_data={'Email': my_email, 'Passwd': my_pass}
post = "https://accounts.google.com/signin/challenge/sl/password"

with requests.Session() as s:
    soup = BeautifulSoup(s.get("https://mail.google.com").text, "html.parser")
    for inp in soup.select("#gaia_loginform input[name]"):
        if inp["name"] not in form_data:
            form_data[inp["name"]] = inp["value"]
    s.post(post, form_data)
    html = s.get("https://mail.google.com/mail/u/0/#inbox").content

    print(my_email in s.get('https://mail.google.com/mail/u/0/#inbox').text) # Prints 'False', should print 'True'

如您所见,末尾的代码返回
False
。此外,如果我将html写入一个文件并在浏览器中打开该文件,我得到的页面就是默认的谷歌登录页面,表明它没有工作。

我很确定谷歌会不时改变他们的方法来阻止人们这样做,我想你必须做大量的反向工程才能让它工作(暂时如此)。有一次我注意到html中的类名并不总是一样的,我建议退出。一分钟是一回事,我重新加载了它,它随着增量发生了变化,例如,第一次某个地方的类名可能是myclass1,下次重新加载myclass2、myclass3等时,甚至增量也会随机变化:(