如何合并两类Bookmarklet实现打开网页并自动完成登录操作
合并跳转+自动登录Bookmarklet的实现方案
核心结论
你没办法通过纯Bookmarklet实现完全一步式的跳转+自动填充登录,原因有两个:
- 当你执行
location.href跳转页面时,浏览器会立即卸载当前页面的JS执行上下文,跳转前的Bookmarklet代码会直接终止运行,后续的填充逻辑没有执行机会 - 浏览器同源策略会禁止你在其他域名下操作unt.edu页面的DOM元素
最优替代方案
你可以实现「点击同1个书签最多2次完成全部操作」的效果,无需保留两个独立书签,合并后的代码如下:
javascript:(function(){if(window.location.host!=='www.unt.edu'){window.location.href='http://www.unt.edu';return;}var d=document,s=d.querySelector;s.call(d,'input[name*=email]').value='YOUREMAIL@company.com';s.call(d,'input[name*=pass]').value='SECRETPASSWORDHERE';s.call(d,'button[id*=login],input[type=button][id*=login],.btn-login').click();})()
操作逻辑说明
- 如果你当前不在unt.edu站点下,第一次点击书签会自动跳转至目标网站
- 跳转完成加载后,再次点击同一个书签,就会自动填充账号密码并触发登录
- 如果你本来就已经在unt.edu的登录页面,点击一次即可直接完成登录
安全提示
请不要把明文账号密码直接存在Bookmarklet中,任何能访问你浏览器书签的人都可以直接获取你的凭证,优先使用浏览器自带的密码管理器保存敏感信息更安全。
完全一步式实现(需要额外工具)
如果确实需要点击一次就完成全部操作,可以搭配油猴脚本(Tampermonkey)实现:给unt.edu域名配置自动执行的登录填充脚本,Bookmarklet只负责跳转,跳转后油猴脚本会自动触发填充登录逻辑,就能做到完全一步操作。
内容的提问来源于stack exchange,提问作者Reza Nikfal
相关产品推荐
相关产品推荐

