2

我知道您可以使用 webbrowser 模块非常简单地打开网页,例如:

import webbrowser
webbrowser.open('http://www.google.com')

但是是否可以将登录凭据传递给这些网站?我想创建一个脚本来自动化我定期做的一些事情,例如,在 Firefox 中打开 gmail 以检查我的邮件。

此外,如果可以这样做,您能否以某种安全的方式在此脚本中提供您的密码?因此,与其在代码中明确地说:

pw = "defaultPass123"
webbrowser.sendPass(pw) # made up function, I don't think this actually works :)

你能以某种方式加密这些数据吗?

4

3 回答 3

0

是的,可以通过使用 OpenID 来实现。

http://openid.net/

OpenID 基本上是一种登录机制,允许用户/程序在不暴露其登录名和密码的情况下登录。据我所知,如果你有一个谷歌账户,你已经可以使用 OpenID,许多其他人也实现了 OpenID,比如 Yahoo Facebook MySpace Flickr 等

于 2011-08-11T06:53:53.010 回答
0

根据服务器处理身份验证的方式,您可能能够创建一个 GET 请求来解决问题:

from urllib import urlencode

credentials = {
    'username': 'bob',
    'password': 'secret'}
url = "http://example.com/login?" + urlencode(credentials)

这是否有效取决于您尝试访问的服务。您可能能够使用 POST 请求进行身份验证,但如果目标是在外部浏览器中打开站点,则没有任何一致的方法可以将 POST 请求详细信息传递给外部浏览器。


你可以加密密码,是的。但是由于脚本需要解密密码才能将其发送到服务器,因此任何有权访问该脚本的人都可能仍然可以读取您的密码。(尽管它可能会阻止非程序员窥探者读取您的密码。)

于 2011-08-11T06:50:33.720 回答
0

您的问题是关于访问 Google 的网站,还是一般的网站?如果是前者,那么 Google 会为其大部分服务提供 API,并且通常将 Python 作为受支持的语言。例如,要使用 Python 检查您的 Gmail,请按照http://code.google.com/p/google-mail-xoauth-tools/wiki/XoauthDotPyRunThrough上的说明进行操作

即使在 Google 世界之外,您应该问的第一个问题是“此站点是否公开了 api?”。如果是这样,那么这将比模拟 Web 浏览器或远程驱动浏览器更容易使用。

如果您决定只是想远程驱动浏览器,那么看看Selenium,因为它可以让您轻松地从单独的应用程序驱动几乎任何 Web 浏览器。

于 2011-08-11T08:01:02.003 回答