使用此代码,我可以轻松地将用户名和密码自动粘贴到facebook.com上。
其目的是自动粘贴用户选择的每个站点的用户名和密码。很多应用程序都是这样做的,但我还没有找到解决办法。谢谢你的帮忙
@Override
public void onPageFinished(WebView view, String url) {
    super.onPageFinished(view, url);
    progressBar.setVisibility(View.GONE);
    String user = "user";
    String pwd = "pass";
    view.loadUrl("javascript:(function(){document.getElementsByName('email')[0].value='"
            + user
            + "';document.getElementsByName('pass')[0].value='"
            + pwd + "';document.getElementsByTagName('form')[0];})()");
}发布于 2018-05-09 11:51:42
正如Speditz所说,并非每个登录页面都使用相同的name / id元素。
通常,大多数网站要么使用type="email"或type="text"作为用户名,要么使用type="password"作为密码登录,而且您可以在网页加载之后进行一些字段存在性检查和执行注入。
view.loadUrl(
    "javascript:window.onload= (function(){"
    + "var selectElementName = document.querySelector('input[type=\"email\"]');"
    +"if(selectElementName){selectElementName.value =  \"" + user + "\";}"
    +"var selectElementName = document.querySelector('input[type=\"text\"]');"
    +"if(selectElementName){selectElementName.value =  \"" + user + "\";}"
    +"var selectElementpassword = document.querySelector('input[type=\"password\"]');"
    +"if(selectElementpassword){selectElementpassword.value =  \"" + pwd + "\";}"
    +"})();"
);这是在JavaScript之上的纯文本,以便更容易理解:
window.onload= function(){
            var selectElementName = document.querySelector('input[type="email"]');
            if(selectElementName){selectElementName.value =  "username";}
            var selectElementName = document.querySelector('input[type="text"]');
            if(selectElementName){selectElementName.value =  "username";}
            var selectElementpassword = document.querySelector('input[type="password"]');
            if(selectElementpassword){selectElementpassword.value =  "password";}
 };发布于 2018-05-09 06:39:29
您的代码目前在facebook.com中工作。但是在引入多个站点时,您应该为这些特定站点实现URL检查,因为您不应该使用所有用户名和密码在WebView上运行所有可能的脚本。e.g
if(url.contains("facebook.com")){ your facebook username & password injection code here }并非每个页面都对登录元素使用相同的元素名称/ID,因此出现了多个脚本。
如果您想让它在其他站点上工作,您需要单独检查和定义这些站点(在您的应用程序中),以查看元素使用的名称/ it (据我所知,无法从不同站点自动找到登录表单),然后为每个站点进行相同类型的注入。
作为额外的提示,您还可以简化您的JavaScript,因为您可能不会在相同的页面加载中再次调用该函数。
view.loadUrl("javascript:document.getElementsByName('email')[0].value='"+ user+ "';document.getElementsByName('pass')[0].value='"+ pwd + "';document.getElementsByTagName('form')[0];");https://stackoverflow.com/questions/50122248
复制相似问题