繁体   English   中英

使用Javascript自动填充网页用户名密码

[英]Auto fill webpage username password using Javascript

我目前正在使用内置的Web浏览器开发应用程序。 为了让我们的客户更轻松,我们可以选择将他们网站的密码存储在他们的数据库中。 目前,我们正在使用Javascript在加载页面后将信息提取到浏览器中。

这是我们在需要加载用户/密码的页面上运行的脚本....

JavaScript的:

      var pwd="{0}";   //get password from vb.net app
      var usr="{1}";   //get username from vb.net app
      var inputs=document.getElementsByTagName("input");    //look for all inputs

      for(var i=0;i<inputs.length;i++){{    //for each input on document

            var input=inputs[i];     //look at whatever input

            if(input.type=="password"&&(input.name.toLowerCase().indexOf("auth")==-1)){
                    {input.value=pwd}
            }
            if(input.type=="text"&&(input.name.toLowerCase().indexOf("login")!=-1||input.name.toLowerCase().indexOf("user")!=-1||input.name=="AgentAccount")){
                    {input.value=usr}
            }
       }};
undefined;

我正在查看的其中一个页面是https://www.pagepluscellular.com/login/ - 我正在查看的表单的代码就是这个。

<div class="row">
    <label for="username">Username:</label>
    <input name="username" type="text" maxlength="75">
</div>
<div class="row">
    <label for="password">Password:</label>
    <input name="password" type="password" maxlength="50">
</div>

再次,这很好。 它填充密码/用户名字段就好了。

我的问题是为什么/如何,特别是关于.indexOf(“无论如何”)。 根据我的理解,当前脚本查找输入,检查它是否是密码字段或者您有什么,然后设置该字段...

但它实际上从未寻找过那些领域。 例如,在上面列出的pagepluscellular网站上,输入名称是“用户名”和“密码”,但在我们的脚本中,它实际上从未查找名称“用户名”或“密码”....所以它如何知道如何填写那些具体的输入?

我想要做的就是这个。 我们找到了一个不适用的网站。 https://www.boostmobilesales.com/boost-sales-portal/faces/login.jsp 此页面上的表单代码是......

<input id="loginform:username" type="text" name="loginform:username" "class="outputtext" size="20">
<input id="loginform:password" type="password" name="loginform:password" value="" size="20" class="inputSecret">

所以我99.99%肯定是因为这个名字是“loginform:whatever”。 我不知道的是如果名称实际上是“loginform:whatever”,如何告诉我的脚本包含这个。 我尝试将我的脚本改为此...(只是检查它是否等于“loginform:whatever”)

JavaScript的:

      var pwd="{0}";   //get password from vb.net app
      var usr="{1}";   //get username from vb.net app
      var inputs=document.getElementsByTagName("input");    //look for all inputs

      for(var i=0;i<inputs.length;i++){{    //for each input on document

            var input=inputs[i];     //look at whatever input

            if((input.type=="password"&&(input.name.toLowerCase().indexOf("auth")==-1)) || input.name.toLowerCase() == "loginform:password"){
                    {input.value=pwd}
            }
            if((input.type=="text"&&(input.name.toLowerCase().indexOf("login")!=-1||input.name.toLowerCase().indexOf("user")!=-1||input.name=="AgentAccount")) || input.name.toLowerCase() == "loginform:username"){
                    {input.value=usr}
            }
       }};
undefined;

但它没有给我所希望的行为,而是最终破坏了原来的行为,因此没有任何工作(pageplus网站停止提取用户名/密码)。 当我恢复原始脚本时,它又开始工作了。

有人可以向我解释这行代码背后的逻辑吗?

input.name.toLowerCase().indexOf("auth") == -1 // or !=-1 for "login", etc

我的理解是,您正在查看小写的输入名称,并查看它是否包含单词'auth'。 如果它在第一个空格中包含'auth',它应该填写密码....对吗?

对不起,很长的帖子,我只是想把我的想法放到某个地方并解释我到目前为止所做的一切。

input.name.toLowerCase().indexOf("auth")==-1表示输入名称根本包括字符序列auth (否则索引将是非负数)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM