使用Python登录Google?

20 投票
4 回答
36757 浏览
提问于 2025-04-16 21:52

我刚接触网页编程,为了尝试一下,我想用Python程序登录谷歌账号,而不是用常规的代码,但这似乎不太可能。有没有人之前试过这个?能帮帮我吗?

相关问题:

4 个回答

1

2020年关于Python 3的更新:

import urllib.request

def unread_messages(user, passwd):
    auth_handler = urllib.request.HTTPBasicAuthHandler()
    auth_handler.add_password(
        realm='New mail feed',
        uri='https://mail.google.com',
        user='%s@gmail.com' % user,
        passwd=passwd
    )
    opener = urllib.request.build_opener(auth_handler)
    urllib.request.install_opener(opener)
    feed = urllib.request.urlopen('https://mail.google.com/mail/feed/atom')
    return feed.read()


print(unread_messages('username', 'password'))
1

虽然这可能不是你想要的内容,但我找到了一些类似的代码,来自一个帖子,这个代码对我来说是可以运行的。


import urllib2

下面的代码是一个函数,叫做get_unread_msgs,它的作用是获取未读邮件:

def get_unread_msgs(user, passwd):
auth_handler = urllib2.HTTPBasicAuthHandler() # 创建一个处理身份验证的工具
auth_handler.add_password(
realm='New mail feed', # 这里是一个描述,告诉你要登录的内容
uri='https://mail.google.com', # 这是你要登录的网址
user='%s@gmail.com' % user, # 这里是你的邮箱,格式是你的用户名加上@gmail.com
passwd=passwd # 这里是你的密码
)
opener = urllib2.build_opener(auth_handler) # 创建一个打开网页的工具,并加上身份验证
urllib2.install_opener(opener) # 安装这个工具,让后面的请求都用它
feed = urllib2.urlopen('https://mail.google.com/mail/feed/atom') # 打开未读邮件的链接
return feed.read() # 返回获取到的内容

最后一行代码是用来调用这个函数的,你只需要把你的用户名和密码放在引号里:

print get_unread_msgs("put-username-here","put-password-here")

参考链接:
如何用Python自动登录Gmail的Atom Feed?

28

我写了一个Python类,可以处理谷歌登录,并且能够访问任何需要用户登录的谷歌服务页面:

class SessionGoogle:
    def __init__(self, url_login, url_auth, login, pwd):
        self.ses = requests.session()
        login_html = self.ses.get(url_login)
        soup_login = BeautifulSoup(login_html.content).find('form').find_all('input')
        my_dict = {}
        for u in soup_login:
            if u.has_attr('value'):
                my_dict[u['name']] = u['value']
        # override the inputs without login and pwd:
        my_dict['Email'] = login
        my_dict['Passwd'] = pwd
        self.ses.post(url_auth, data=my_dict)

    def get(self, URL):
        return self.ses.get(URL).text

这个想法是去登录页面找到一个叫GALX的隐藏输入值,然后把它和登录名和密码一起发送给谷歌。这个过程需要用到两个模块:requestsbeautifulSoup

使用示例:

url_login = "https://accounts.google.com/ServiceLogin"
url_auth = "https://accounts.google.com/ServiceLoginAuth"
session = SessionGoogle(url_login, url_auth, "myGoogleLogin", "myPassword")
print session.get("http://plus.google.com")

希望这对你有帮助。

撰写回答