Javascript 使用HTTP身份验证自动登录的GreaseMonkey脚本
我在工作中编写了很多GreaseMonkey脚本,可以自动将我登录到我们这里的内部站点。除了使用HTTP身份验证的时间表应用程序之外,我几乎为这些站点中的每一个都编写了一个脚本 有没有一种方法可以让我使用GreaseMonkey自动登录到这个网站 编辑:我知道浏览器中的store password功能,但我的脚本更进一步,在加载站点时检查我是否登录(通过遍历HTML),然后向登录页面提交帖子。这就省去了加载站点、进入登录页面、输入我的凭据,然后点击提交的步骤。为什么不使用Firefox(我假设您使用的是Firefox)来使用密码管理器记住您的凭据呢Javascript 使用HTTP身份验证自动登录的GreaseMonkey脚本,javascript,http,authentication,greasemonkey,http-authentication,Javascript,Http,Authentication,Greasemonkey,Http Authentication,我在工作中编写了很多GreaseMonkey脚本,可以自动将我登录到我们这里的内部站点。除了使用HTTP身份验证的时间表应用程序之外,我几乎为这些站点中的每一个都编写了一个脚本 有没有一种方法可以让我使用GreaseMonkey自动登录到这个网站 编辑:我知道浏览器中的store password功能,但我的脚本更进一步,在加载站点时检查我是否登录(通过遍历HTML),然后向登录页面提交帖子。这就省去了加载站点、进入登录页面、输入我的凭据,然后点击提交的步骤。为什么不使用Firefox(我假设您
我找到了这个链接:。看起来您可以使用javascript进行HTTP身份验证。我认为当你第一次导航到一个URL时,你不可能有Greasemonkey中断。您可能需要设置某种启动点,以使greasemonkey自动重定向+登录。例如,您可以让本地页面在查询字符串中获取目标URL,让Greasemonkey自动执行authenticate+重定向。唯一的问题是,对于用作入口点的书签,您必须将站点书签与启动页面包装在一起。HTTP身份验证信息会在每次请求时发送,而不仅仅是登录。首次登录后,浏览器将缓存会话的登录信息。因此,如果您试图检查是否已登录,则不会真正保存任何内容 您也可以完全忘记greasemonkey,只需在url上登录,如下所示:
http://username:password@host/
当然,将其保存在书签中可能会带来安全风险,但不会比在浏览器中保存密码更大。可以通过设置“Authorization”HTTP头来使用HTTP身份验证登录,该头的值设置为字符串“basic username:password”,但设置为“username:password”字符串Base 64的一部分已编码 一点研究发现GreaseMonkey内置了一个函数,您可以向名为GM_xmlhttpRequest的服务器发送GET/POST请求 因此,将所有这些放在一起(并使用此JavaScript代码将字符串转换为base64),我得到以下结果 因此,当我现在访问该站点时,它会遍历DOM,如果我没有登录,它会自动让我登录。“IE不工作,FireFox工作正常。”
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,
}
});
}