首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android JavaScript自动完成表单WebView

Android JavaScript自动完成表单WebView
EN

Stack Overflow用户
提问于 2018-05-01 18:58:05
回答 2查看 1.4K关注 0票数 3

使用此代码,我可以轻松地将用户名和密码自动粘贴到facebook.com上。

其目的是自动粘贴用户选择的每个站点的用户名和密码。很多应用程序都是这样做的,但我还没有找到解决办法。谢谢你的帮忙

代码语言:javascript
运行
复制
@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];})()");
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-09 11:51:42

正如Speditz所说,并非每个登录页面都使用相同的name / id元素。

通常,大多数网站要么使用type="email"type="text"作为用户名,要么使用type="password"作为密码登录,而且您可以在网页加载之后进行一些字段存在性检查和执行注入

代码语言:javascript
运行
复制
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之上的纯文本,以便更容易理解:

代码语言: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";}
 };
票数 3
EN

Stack Overflow用户

发布于 2018-05-09 06:39:29

您的代码目前在facebook.com中工作。但是在引入多个站点时,您应该为这些特定站点实现URL检查,因为您不应该使用所有用户名和密码在WebView上运行所有可能的脚本。e.g

代码语言:javascript
运行
复制
if(url.contains("facebook.com")){ your facebook username & password injection code here }

并非每个页面都对登录元素使用相同的元素名称/ID,因此出现了多个脚本。

如果您想让它在其他站点上工作,您需要单独检查和定义这些站点(在您的应用程序中),以查看元素使用的名称/ it (据我所知,无法从不同站点自动找到登录表单),然后为每个站点进行相同类型的注入。

作为额外的提示,您还可以简化您的JavaScript,因为您可能不会在相同的页面加载中再次调用该函数。

代码语言:javascript
运行
复制
view.loadUrl("javascript:document.getElementsByName('email')[0].value='"+ user+ "';document.getElementsByName('pass')[0].value='"+ pwd + "';document.getElementsByTagName('form')[0];");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50122248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档