簡體   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