mirror of
https://github.com/yaklang/yaklang-chrome-extension.git
synced 2026-09-22 03:10:43 +08:00
yakit mitm config
This commit is contained in:
@@ -132,6 +132,44 @@ class ProxyStore {
|
|||||||
// 忽略接收者不存在的错误
|
// 忽略接收者不存在的错误
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async addAndEnableProxy(config) {
|
||||||
|
try {
|
||||||
|
// 先禁用所有其他代理
|
||||||
|
const existingConfigs = await this.getProxyConfigs();
|
||||||
|
for (const existingConfig of existingConfigs) {
|
||||||
|
if (existingConfig.enabled) {
|
||||||
|
await this.saveProxyConfigs([{
|
||||||
|
...existingConfig,
|
||||||
|
enabled: false
|
||||||
|
}]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加并启用新代理
|
||||||
|
await this.saveProxyConfigs([config]);
|
||||||
|
|
||||||
|
// 应用新代理
|
||||||
|
await chrome.proxy.settings.set({
|
||||||
|
value: {
|
||||||
|
mode: config.proxyType,
|
||||||
|
rules: {
|
||||||
|
singleProxy: {
|
||||||
|
scheme: config.scheme,
|
||||||
|
host: config.host,
|
||||||
|
port: config.port
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
scope: 'regular'
|
||||||
|
});
|
||||||
|
|
||||||
|
return { success: true };
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error in addAndEnableProxy:', error);
|
||||||
|
return { success: false, error };
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const proxyStore = new ProxyStore();
|
export const proxyStore = new ProxyStore();
|
||||||
@@ -28,10 +28,12 @@
|
|||||||
"sidePanel",
|
"sidePanel",
|
||||||
"webRequest",
|
"webRequest",
|
||||||
"declarativeNetRequest",
|
"declarativeNetRequest",
|
||||||
|
"webNavigation",
|
||||||
"tabs"
|
"tabs"
|
||||||
],
|
],
|
||||||
"host_permissions": [
|
"host_permissions": [
|
||||||
"<all_urls>"
|
"<all_urls>",
|
||||||
|
"*://mitm/*"
|
||||||
],
|
],
|
||||||
|
|
||||||
"web_accessible_resources": [
|
"web_accessible_resources": [
|
||||||
|
|||||||
+51
-1
@@ -292,7 +292,54 @@ async function queueProxyLog(details, error = null) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 导出代理处理器设置函数
|
// 添加 URL 拦截处理
|
||||||
|
function setupUrlInterceptor() {
|
||||||
|
chrome.webNavigation.onBeforeNavigate.addListener(async (details) => {
|
||||||
|
try {
|
||||||
|
const url = new URL(details.url);
|
||||||
|
|
||||||
|
if (url.hostname === 'mitm') {
|
||||||
|
// 解析参数
|
||||||
|
const host = url.searchParams.get('host');
|
||||||
|
const port = parseInt(url.searchParams.get('port') || '0');
|
||||||
|
const scheme = url.searchParams.get('scheme');
|
||||||
|
|
||||||
|
if (host && port && scheme) {
|
||||||
|
// 创建新的代理配置
|
||||||
|
const newConfig = {
|
||||||
|
id: Date.now().toString(),
|
||||||
|
name: "Yakit MITM",
|
||||||
|
proxyType: 'fixed_servers',
|
||||||
|
scheme: scheme,
|
||||||
|
host: host,
|
||||||
|
port: port,
|
||||||
|
enabled: true
|
||||||
|
};
|
||||||
|
|
||||||
|
// 直接使用 proxyStore 实例的方法
|
||||||
|
const result = await proxyStore.addAndEnableProxy(newConfig);
|
||||||
|
|
||||||
|
if (result.success) {
|
||||||
|
// 重定向回 mitm 页面
|
||||||
|
chrome.tabs.update(details.tabId, {
|
||||||
|
url: "http://mitm/"
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
console.error('Failed to add and enable proxy:', result.error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error handling proxy URL:', error);
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
url: [{
|
||||||
|
hostEquals: 'mitm'
|
||||||
|
}]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改 setupProxyHandlers 函数
|
||||||
export function setupProxyHandlers() {
|
export function setupProxyHandlers() {
|
||||||
// 设置代理错误处理和认证
|
// 设置代理错误处理和认证
|
||||||
ProxyAuth.setupErrorHandler();
|
ProxyAuth.setupErrorHandler();
|
||||||
@@ -300,6 +347,9 @@ export function setupProxyHandlers() {
|
|||||||
|
|
||||||
// 设置代理请求监听器
|
// 设置代理请求监听器
|
||||||
setupProxyRequestListener();
|
setupProxyRequestListener();
|
||||||
|
|
||||||
|
// 设置 URL 拦截器
|
||||||
|
setupUrlInterceptor();
|
||||||
|
|
||||||
// 消息监听器
|
// 消息监听器
|
||||||
chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => {
|
chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => {
|
||||||
|
|||||||
@@ -8,5 +8,6 @@ export const ProxyActionType = {
|
|||||||
CLEAR_PROXY_LOGS: "CLEAR_PROXY_LOGS",
|
CLEAR_PROXY_LOGS: "CLEAR_PROXY_LOGS",
|
||||||
GET_PROXY_CONFIGS: "GET_PROXY_CONFIGS",
|
GET_PROXY_CONFIGS: "GET_PROXY_CONFIGS",
|
||||||
ADD_PROXY_CONFIG: "ADD_PROXY_CONFIG",
|
ADD_PROXY_CONFIG: "ADD_PROXY_CONFIG",
|
||||||
UPDATE_PROXY_CONFIG: "UPDATE_PROXY_CONFIG"
|
UPDATE_PROXY_CONFIG: "UPDATE_PROXY_CONFIG",
|
||||||
|
ADD_AND_ENABLE_PROXY: 'ADD_AND_ENABLE_PROXY'
|
||||||
};
|
};
|
||||||
Reference in New Issue
Block a user