我正在编写一个自动登录Chrome扩展程序。 要登录我定位的网站,您需要输入: 用户名,密码和学生证。 由于Chrome浏览器自动完成功能仅保存用户名和密码,因此我开发了一个小的扩展程序,可以插入学生证,然后按登录按钮。
我决定让我的扩展程序仅处理不会由chrome自动保存的学生ID,并让chrome浏览器确保用户和密码的安全。即使我将所有内容都保留在本地存储中。并且没有服务器端
我注意到的是,即使自动完成功能也会插入值, 并且它们出现在屏幕上,用户必须按下任意键盘/鼠标按钮,以便这些值将触发“更改”事件,并且输入将具有正确的值。
我正在尝试通过调用焦点/选择/更改事件来模拟它,但遗憾的是没有成功。
我的background.js:
var bgUserIDKey="OUAL_USER_ID"
var currentURL="";
var sendClick = "document.getElementsByTagName('input')[3].click();";
var triggerOnChange="$('#p_sisma').trigger('keydown');$('#p_user').trigger('keydown');";
function BackgroundLogin(){
if (currentURL.includes("sso.apps.openu.ac.il/SheiltaPortalLogin?"))
{
this.SendScriptIntoActiveTab({code:"document.getElementById('p_mis_student').value="+GetUserID()+";"});
setTimeout(function(){
this.SendScriptIntoActiveTab({code:sendClick});
this.SendScriptIntoActiveTab({code:this.triggerOnChange});
this.SendScriptIntoActiveTab({code:"document.getElementById('p_mis_student').value="+GetUserID()+";"});
BackgroundLogin();
},350);
console.log("OUAL Auto logged in.")
}
}
它正在注入ID,并且您可以看到它尝试每350ms登录一次, 当模拟“提交”按钮时,网站将无法识别用户名和密码,并且只有在按下键盘或鼠标单击页面上的任何软件后才能正常工作。
在没有任何用户输入的情况下,即使插入用户名和密码,表单也只能“看到”学生证,而无需用户名和密码。 我尝试了多种在网上找到的解决方案,但似乎无济于事。
有什么想法吗?