This commit is contained in:
cilame 2022-12-01 02:10:21 +08:00
parent 516b5d7b26
commit ca94c6c780
3 changed files with 83 additions and 14 deletions

View File

@ -39,10 +39,10 @@ chrome.contextMenus.create({
function init_edit_function(){
chrome.storage.local.get(["config-request_hook"], function (res) {
try{
var code = res["config-request_hook"]
// TODO
window.eval(res["config-request_hook"])
}catch(e){
console.log(e)
change_request = undefined;
console.log('evaluate code init change_request func err.', e)
}
})
}
@ -132,16 +132,45 @@ chrome.debugger.onEvent.addListener(function (source, method, params){
}else{
var options = { requestId: params.requestId }
if (edit_request){
var url = params.request.url
var method = params.request.method
var postData = params.request.postData
var headers = params.request.headers
// console.log(method, url, headers, postData)
var { url, method, postData, headers } = params.request
var config = { url, method, postData, headers }
if (typeof change_request != 'undefined'){
try{
change_request(config)
}catch(e){
console.log('run change_request err.', e)
}
}
var { url, method, postData, headers } = config
function base64(str){
return CryptoJS.enc.Utf8.parse(str).toString(CryptoJS.enc.Base64)
}
// 这里处理更新操作
// options.url = url
// options.method = method
// options.postData = postData
// options.headers = headers // 这里直接放进去似乎还会有问题
try{
if (url){
options.url = url
}
if (method){
options.method = method
}
if (postData){
options.postData = base64(postData)
}
if (headers){
var keys = Object.keys(headers)
var headers_list = []
for (var i = 0; i < keys.length; i++) {
headers_list.push({name:keys[i], value:headers[keys[i]]})
}
options.headers = headers_list
}
}catch(e){
console.log('set change request err.', e)
}
console.log('change request options:', options)
}
sendCommand("Fetch.continueRequest", options, source);
break;

View File

@ -139,8 +139,9 @@
<table id="response_changer"></table>
<h2 style="margin-bottom: 0px;margin-top: 50px;">动态修改请求包</h2>
<button id="default_code_dyn_change_request">默认代码模板</button>
<hr>
<textarea id='fetch_hook' data-key="config-request_hook" style="width: 100%; height: 500px"></textarea>
<textarea id='request_hook' data-key="config-request_hook" style="width: 100%; height: 500px"></textarea>
<h2 style="margin-bottom: 0px;margin-top: 50px;">动态修改被调试页面的所有js代码</h2>
<hr>

View File

@ -487,10 +487,49 @@ var fetch_hook = document.getElementById('fetch_hook');
chrome.storage.local.get([fetch_hook.dataset.key], function (result) {
fetch_hook.value = result[fetch_hook.dataset.key] || '';
})
fetch_hook.addEventListener("change", function(v){
function change_fetch_hook(v){ console.log('change_fetch_hook')
chrome.storage.local.set({
[v.target.dataset.key]: v.target.value
})
}
fetch_hook.addEventListener("input", change_fetch_hook)
fetch_hook.addEventListener("change", change_fetch_hook)
fetch_hook.addEventListener("blur", change_fetch_hook)
var request_hook = document.getElementById('request_hook')
chrome.storage.local.get([request_hook.dataset.key], function (result) {
request_hook.value = result[request_hook.dataset.key] || '';
})
function change_request_hook(v){ console.log('change_request_hook')
chrome.storage.local.set({
[v.target.dataset.key]: v.target.value
})
}
request_hook.addEventListener("input", change_request_hook)
request_hook.addEventListener("change", change_request_hook)
request_hook.addEventListener("blur", change_request_hook)
var default_code_dyn_change_request = document.getElementById('default_code_dyn_change_request')
default_code_dyn_change_request.addEventListener('click', function(e){
request_hook.value =
`/*
* 在固定的函数名字里面编写你需要对特定参数修改的处理方式
* 请勿修改下面函数的名字需要的处理在函数内部处理即可
* change_request 这个函数用于修改 Request 请求中的数据
* 将修改后的值赋值给 config 就可以修改内容
*/
function change_request(config){
var { url, method, postData, headers } = config
var new_url = url
var new_method = method
var new_postData = postData
var new_headers = headers
// do something in here.
console.log('new_postData', new_postData)
config.postData = new_postData
}`
request_hook.focus()
})
var myinject = document.getElementById('myinject');