我在工作中编写了很多 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/