GreaseMonkey脚本使用HTTP身份验证自动登录

时间:2008-09-08 04:11:49

标签: javascript http authentication greasemonkey http-authentication

我在我的工作中写了很多GreaseMonkey脚本,它会自动将我登录到我们这里的内部网站。除了我们的时间表应用程序(使用HTTP身份验证)之外,我已经设法为几乎每个站点编写脚本。

有没有办法可以使用GreaseMonkey自动登录我这个网站?

编辑:我知道浏览器中的商店密码功能,但我的脚本更进一步,检查我是否在加载时(通过遍历HTML)登录网站,然后将帖子提交到登录页面。这消除了必须加载站点,进入登录页面,输入我的凭据,然后点击提交

的步骤

4 个答案:

答案 0 :(得分:6)

可以通过设置“Authorization”HTTP标头使用HTTP身份验证登录,并将此标头的值设置为字符串“basic username:password”,但使用字符串的“username:password”部分Base 64编码。

http://frontier.userland.com/stories/storyReader$2159

一些研究发现GreaseMonkey内置了一个函数,您可以将GET / POST请求发送到名为GM_xmlhttpRequest的服务器

http://diveintogreasemonkey.org/api/gm_xmlhttprequest.html

所以把它们放在一起(并且还获得这个JavaScript代码将字符串转换为base64我得到以下

http://www.webtoolkit.info/javascript-base64.html

var loggedInText = document.getElementById('metanav').firstChild.firstChild.innerHTML;
if (loggedInText != "logged in as jklp") {
    var username = 'jklp';
    var password = 'jklpPass';
    var base64string = Base64.encode(username + ":" + password);

    GM_xmlhttpRequest({
        method: 'GET',
        url: 'http://foo.com/trac/login',
        headers: {
            'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey/0.3',
            'Accept': 'application/atom+xml,application/xml,text/xml',
            'Authorization':'Basic ' + base64string,
        }
    });
}

因此,当我现在访问该网站时,它会遍历DOM,如果我没有登录,它会自动登录我。

答案 1 :(得分:2)

每次请求都会发送HTTP身份验证信息,而不仅仅是登录。浏览器会在您第一次登录后缓存会话的登录信息。因此,您不会通过尝试检查您是否已登录来保存任何内容。

你也可以完全忘记关于greasemonkey的问题,只需在你的网址上登录就可以了:

http://username:password@host/

当然,将其保存在书签中可能存在安全风险,但不会比在浏览器中保存密码更多。

答案 2 :(得分:1)

为什么不使用Firefox(我假设您使用的是Firefox)使用密码管理器记住您的凭据?

我找到了这个链接:HTTP Authentication with HTML Forms。看起来你可以使用javascript来进行HTTP身份验证。当你第一次导航到URL时,我认为你不能让Greasemonkey中断。您可能必须设置某种启动点,您可以使用该启动点使greasemonkey自动重定向+登录。例如,您可以在查询字符串中使用目标URL的本地页面,让Greasemonkey自动执行身份验证+重定向。唯一的问题是,您必须使用您用作入口点的书签的启动页面来包装网站书签。

答案 3 :(得分:0)

http://username:password@host/”在IE上不起作用,FireFox正常工作。