[英]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.