chrome http Request Header 修改插件
chrome http Request Header 修改插件
2013-05-31 11:03:03| 分类: JavaScript | 标签:chrome extensions change http header |举报|字号 订阅
C:\Users\YouName\AppData\Local\Google\Chrome\User Data\Default\Extensions
{
"name": "Change Request Header",
"description": "Change Http/Https Request Header!",
"version": "1.0",
"browser_action": {
"default_title": "Change Request Header",
"dafault_icon": "./icons/icon.png",
"default_popup": "./html/popup.html"
},
"icons": {
"16": "./icons/icon.png",
"32": "./icons/icon.png",
"48": "./icons/icon.png",
"128": "./icons/icon.png"
},
"background": {
"scripts": ["./js/background.js"]
},
"permissions": ["tabs", "webRequestBlocking", "webRequest", "<all_urls>"],
"manifest_version": 2
}
<!DOCTYPE html>
<html>
<head>
<title>Change Request Header Setting</title>
<link href="../css/popup.css" rel="stylesheet" type="text/css">
<script src="../js/jquery.js"></script>
<script src="../js/popup.js"></script>
</head>
<body>
<div id="main">
<h3>Change Request Header Setting</h3>
<hr />
<div id="setting">
<span class="text">X-Forward-For:</span><input type="text" class="input" id="xForward" name="XForward" /> <input type="checkbox" class="checkbox" id="randomip" /> Random IP<br />
<span class="text">Referer:</span><input type="text" class="input" id="referer" name="referer" /> <input type="checkbox" class="checkbox" id="targeturl" /> Target URL<br />
<span class="text">User-Agent:</span><input type="text" class="input" id="userAgent" name="Uagent" /><br />
<span class="text">Cookie:</span><textarea class="input" cols="input" id="cookieArea" name="Cookie" placeholder="If the input is null, then it will use the origin value."></textarea>
<hr />
<input type="radio" id="exceptUrl" checked="checked"/> Except HOST: <input type="text" id="exceptUrltext" value=".google.com;.baidu.com;.qq.com" /><br />
<input type="radio" id="includeUrl" /> Include URL: <input type="text" id="includeUrltext" disabled="disabled" placeholder="Target site is ok" /><br />
<hr />
<div id="divButton">
<input type="button" class="button" id="enter" value="Enter" /><input type="button" class="button" id="reset" value="Reset" />
</div>
</div>
</div>
</body>
</html>
$(document).ready(function() {
$('#xForward').val(localStorage['xForward']);
$('#referer').val(localStorage['referer']);
$('#userAgent').val(localStorage['userAgent']);
$('#cookieArea').val(localStorage['cookie']);
if(localStorage['isChange'] == 'true'){
$('#enter').attr({'disabled': true});
}
$('#randomip').change(function() {
//alert($('#randomip').is(':checked'));
$('#xForward').attr({'disabled':$('#randomip').is(':checked')});
$('#xForward').val('');
});
$('#targeturl').change(function() {
//alert($('#randomip').is(':checked'));
$('#referer').attr({'disabled':$('#targeturl').is(':checked')});
$('#referer').val('');
});
$('#exceptUrl').change(function() {
$('#includeUrl').attr({'checked': !$('#exceptUrl').is(':checked')});
$('#includeUrltext').attr({'disabled':$('#exceptUrl').is(':checked')});
$('#exceptUrltext').attr({'disabled':!$('#exceptUrl').is(':checked')});
});
$('#includeUrl').change(function() {
$('#exceptUrl').attr({'checked': !$('#includeUrl').is(':checked')});
$('#exceptUrltext').attr({'disabled':$('#includeUrl').is(':checked')});
$('#includeUrltext').attr({'disabled':!$('#includeUrl').is(':checked')});
});
$('#enter').click(function() {
var xForward = $('#xForward').val();
var referer = $('#referer').val();
var userAgent = $('#userAgent').val();
var cookie = $('#cookieArea').val();
var randomip = $('#randomip').is(':checked');
var targeturl = $('#targeturl').is(':checked');
var exceptUrl = $('#exceptUrl').is(':checked');
var includeUrl = $('#includeUrl').is(':checked');
var exceptUrltext = $('#exceptUrltext').val();
var includeUrltext = $('#includeUrltext').val();
localStorage['xForward'] = xForward;
localStorage['referer'] = referer;
localStorage['userAgent'] = userAgent;
localStorage['cookie'] = cookie;
localStorage['randomip'] = randomip;
localStorage['targeturl'] = targeturl;
localStorage['exceptUrl'] = exceptUrl;
localStorage['includeUrl'] = includeUrl;
localStorage['exceptUrltext'] = exceptUrltext;
localStorage['includeUrltext'] = includeUrltext;
localStorage['isChange'] = true;
$('#enter').attr({'disabled': true});
$('#reset').attr({'disabled':false});
})
$('#reset').click(function(){
$('#xForward').val('');
$('#referer').val('');
$('#userAgent').val('');
$('#cookieArea').val('');
$('#exceptUrltext').val('.google.com;.baidu.com;.qq.com');
$('#includeUrltext').val('');
$('#exceptUrl').attr({'checked':true});
$('#includeUrl').removeAttr('checked');
localStorage['xForward']='';
localStorage['referer']='';
localStorage['userAgent']='';
localStorage['cookie']='';
localStorage['randomip']=false;
localStorage['targeturl']=false;
localStorage['isChange']=false;
localStorage['exceptUrl']=true;
localStorage['includeUrl']=false;
localStorage['exceptUrltext']='.google.com;.baidu.com;.qq.com';
localStorage['includeUrltext']='';
$('#enter').attr({'disabled':false});
})
});
console.log('backgroud');
chrome.webRequest.onBeforeSendHeaders.addListener(function(details) {
var url = details.url;
if (isChange(url)) {
var headers = details.requestHeaders;
console.log("start request url:" + url);
var blockingResponse = modifyHeader(headers, url);
return blockingResponse;
}
}, {
urls : ["http://*/*", "https://*/*"]
}, ["requestHeaders", "blocking"]);
function isChange(_url){
var host = _url.split('/')[2];
if (localStorage['isChange'] != 'true'){
return false;
}
if (localStorage['exceptUrl'] == 'true'){
var exceptHost = localStorage['exceptUrltext'].split(';');
for(var i=0; i<exceptHost.length; i++){
var reg = exceptHost[i].replace(/\./g,'\\\.');
if(host.match(reg) != null){
return false;
}
}
}
else if (localStorage['includeUrl'] == 'true'){
var includeUrl = localStorage['includeUrltext'].split(';');
for(var i=0; i<includeUrl.length; i++){
var reg = includeUrl[i].replace(/\./g,'\\\.');
if(host.match(reg) == null){
return false;
}
}
}
return true;
}
function modifyHeader(_headers, _url){
var blockingResponse = {};
var isxForward = false;
var isReferer = false;
var isuserAgent = false;
var iscookie = false;
for (var j = 0; j < _headers.length; j++){
//console.log(_headers[j].name + ':' + _headers[j].value);
if(_headers[j].name == "X-Forward-For" && (localStorage['xForward'].length > 6 || localStorage['randomip'] == 'true')){
if(localStorage['xForward'].length > 6){
_headers[j].value = localStorage['xForward'];
}
else if (localStorage['randomip'] == 'true') {
_headers[j].value = Math.floor(Math.random()*225)+'.'+Math.floor(Math.random()*255)+'.'+Math.floor(Math.random()*255)+'.'+Math.floor(Math.random()*255);
}
isxForward = true;
}
if(_headers[j].name =="Referer"&&(localStorage['referer'].length >6|| localStorage['targeturl']=='true')){
//console.log('referer:'+_headers[j].value);
if(localStorage['referer'].length >6){
_headers[j].value = localStorage['referer'];
}
elseif(localStorage['targeturl']=='true'){
_headers[j].value = _url;
}
isReferer =true;
}
if(_headers[j].name =="User-Agent"&& localStorage['userAgent'].length >10){
_headers[j].value = localStorage['userAgent'];
isuserAgent =true;
}
if(_headers[j].name =="Cookie"&& localStorage['cookie'].length >0){
_headers[j].value = localStorage['cookie'];
iscookie =true;
}
}
if(isxForward ==false){
if(localStorage['xForward'].length >6){
_headers.push({name:'X-Forwarded-For',value:localStorage['xForward']});
//_headers['X-Forward-For'] = localStorage['xForward'];
}
elseif(localStorage['randomip']=='true'){
_headers.push({name:'X-Forwarded-For',value:Math.floor(Math.random()*225)+'.'+Math.floor(Math.random()*255)+'.'+Math.floor(Math.random()*255)+'.'+Math.floor(Math.random()*255)});
}
isxForward =true;
}
if(isReferer ==false){
if(localStorage['referer'].length >6){
_headers.push({name:'Referer',value:localStorage['referer']});
}
elseif(localStorage['targeturl']=='true'){
_headers.push({name:'Referer',value:_url});
}
isReferer =true;
}
if(isuserAgent ==false){
if(localStorage['userAgent'].length >10){
_headers['User-Agent']= localStorage['userAgent'];
}
isuserAgent =true;
}
if(iscookie ==false){
if(localStorage['cookie'].length >0){
_headers['Cookie']= localStorage['cookie'];
}
iscookie =true;
}
blockingResponse.requestHeaders = _headers;
console.log(blockingResponse);
return blockingResponse;
}
最新文章
- Android按钮的各个样式设置
- [KOJ6997]旅行商问题二
- telnet: connect to address xxxxxxx: No route to host
- web开发利器 fiddler
- etcd raft如何实现成员变更
- Python使用Plotly绘图工具,绘制水平条形图
- 小程序——阿里服务器配置https及什么是IIS
- Python学习笔记二
- github第一次引用开源的库
- SQL Server 2000 字段类型 Delphi 数据类型对照
- log4j日志的使用
- python3 提示 name ‘reload’ is not defined
- jmeter之数据库相关
- 设计模式之策略模式(iOS开发,代码用Objective-C展示)
- MyBatis通用Mapper技巧
- Banner尺寸多大最好!
- 转:HL7 Tools suite
- Redis实现分布式锁1
- For-each Loop,Index++ Loop , Iterator 那个效率更高
- Xshell 或者 Xftp 突然连不上阿里云