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

标签 javascript http authentication greasemonkey http-authentication

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

有什么方法可以让我使用 GreaseMonkey 自动登录到这个站点吗?

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

最佳答案

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

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

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

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,如果我没有登录,它会自动让我登录。

关于javascript - 使用 HTTP 身份验证自动登录的 GreaseMonkey 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49158/

相关文章:

python - 并行获取文件

Python Flask POST 400 错误请求错误

c# - 在 Microsoft Azure 中对用户进行身份验证并管理其资源

c# - 在 ASP.NET 中转发身份验证

javascript - 当我提交新文件时,husk 不执行预提交

javascript - ExtJS:有没有办法处理内存管理

javascript - 更改中心的 HTML5 视频按钮

http - 如何使用 Tyrus java 客户端在初始 WebSocket 客户端请求中包含 cookie?

authentication - 为 SQL Server 2008 Express 创建数据库身份验证

javascript - 加载后自动放大 highcharts