我正在尝试开发自定义密码管理器扩展并使用内容脚本注入我设法填充user_id和密码输入字段。然而,这适用于某些网页,而不是其他网页。对于不起作用的网页(chase.com),我甚至通过检查单个输入框并测试我是否可以填充这些字段来获取标记ID,但它不起作用。
我感觉这些字段是动态的并且以某种方式受到保护但是某种程度上chrome和其他浏览器能够通过保存的密码填充这些字段,因此必须有某种方式。有没有办法查看一些开源浏览器代码以更多地了解它?
这是我的manifest.jason
{
"manifest_version": 2,
"name": "My Chrome Plugin",
"description": "This extension will manage passwords",
"version": "1.0",
"browser_action": {
"default_icon": "icon.png"
},
"background": {
"scripts": ["eventPage.js"],
"persistent": false
},
"permissions": [
"activeTab",
"http://192.168.1.27/"
]
}
后台脚本:
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.getSelected(null, function(tab) {
chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
chrome.tabs.sendMessage(tabs[0].id, {id: "username", pass: "password"}, function(response) {});
});
chrome.tabs.executeScript(null, {file: "injected.js"});
});
}, false);
注入内容脚本:
chrome.extension.onMessage.addListener(function(msg, sender, sendResponse) {
fields = document.getElementsByTagName('input');
for (var i = 0; i < fields.length; i++) {
if (fields[i].type.indexOf("password") != -1) {
fields[i].setAttribute("value", msg.pass);
}
if (fields[i].name.indexOf("user") != -1) {
fields[i].setAttribute("value", msg.id)
}
}
});
当我在输入字段上调用setAttribute函数时,我会在控制台上获得以下日志。请建议可以做什么或如何进一步调试。
[sendMessageClient] Sending command <resize>
chase-ux.min.js:65 Sign In Button Log: Sign In Type [cpo]
chase-ux.min.js:65 [sendMessageClient] Sending command <resize>
chase-ux.min.js:65 Sign In Button Log: Sign In Type [cpo]