187 lines
5.2 KiB
JavaScript
187 lines
5.2 KiB
JavaScript
// General Auto - Content Script
|
|
console.log('General Auto 内容脚本已加载');
|
|
|
|
// 注入自定义脚本到页面
|
|
const script = document.createElement('script');
|
|
script.src = chrome.runtime.getURL('injected.js');
|
|
script.onload = function() {
|
|
this.remove();
|
|
};
|
|
(document.head || document.documentElement).appendChild(script);
|
|
|
|
// 监听页面消息
|
|
window.addEventListener('message', function(event) {
|
|
if (event.source !== window) return;
|
|
|
|
if (event.data.type && event.data.type === 'FROM_PAGE') {
|
|
console.log('Content script 收到页面消息:', event.data);
|
|
|
|
// 转发到 background script
|
|
chrome.runtime.sendMessage({
|
|
action: event.data.action,
|
|
data: event.data.data
|
|
}, response => {
|
|
if (response) {
|
|
window.postMessage({
|
|
type: 'FROM_EXTENSION',
|
|
action: event.data.action,
|
|
requestId: event.data.requestId,
|
|
data: response
|
|
}, '*');
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
// 提供 API 供外部调用
|
|
window.GeneralAuto = {
|
|
version: '1.0.0',
|
|
|
|
// 执行任务
|
|
executeTask: async function(task) {
|
|
return new Promise((resolve, reject) => {
|
|
chrome.runtime.sendMessage({
|
|
action: 'executeTask',
|
|
task: task
|
|
}, response => {
|
|
if (chrome.runtime.lastError) {
|
|
reject(new Error(chrome.runtime.lastError.message));
|
|
} else if (response && response.success) {
|
|
resolve(response.data);
|
|
} else {
|
|
reject(new Error(response ? response.error : '未知错误'));
|
|
}
|
|
});
|
|
});
|
|
},
|
|
|
|
// 执行自定义脚本
|
|
executeScript: async function(code) {
|
|
return new Promise((resolve, reject) => {
|
|
chrome.runtime.sendMessage({
|
|
action: 'executeScript',
|
|
code: code
|
|
}, response => {
|
|
if (chrome.runtime.lastError) {
|
|
reject(new Error(chrome.runtime.lastError.message));
|
|
} else if (response && response.success) {
|
|
resolve(response.data);
|
|
} else {
|
|
reject(new Error(response ? response.error : '未知错误'));
|
|
}
|
|
});
|
|
});
|
|
},
|
|
|
|
// 获取 Cookies
|
|
getCookies: async function(url) {
|
|
return new Promise((resolve, reject) => {
|
|
chrome.runtime.sendMessage({
|
|
action: 'getCookies',
|
|
url: url || window.location.href
|
|
}, response => {
|
|
if (chrome.runtime.lastError) {
|
|
reject(new Error(chrome.runtime.lastError.message));
|
|
} else if (response && response.success) {
|
|
resolve(response.cookies);
|
|
} else {
|
|
reject(new Error(response ? response.error : '未知错误'));
|
|
}
|
|
});
|
|
});
|
|
},
|
|
|
|
// 设置 Cookies
|
|
setCookies: async function(cookies) {
|
|
return new Promise((resolve, reject) => {
|
|
chrome.runtime.sendMessage({
|
|
action: 'setCookies',
|
|
cookies: cookies
|
|
}, response => {
|
|
if (chrome.runtime.lastError) {
|
|
reject(new Error(chrome.runtime.lastError.message));
|
|
} else if (response && response.success) {
|
|
resolve();
|
|
} else {
|
|
reject(new Error(response ? response.error : '未知错误'));
|
|
}
|
|
});
|
|
});
|
|
},
|
|
|
|
// 清除 Cookies
|
|
clearCookies: async function(url) {
|
|
return new Promise((resolve, reject) => {
|
|
chrome.runtime.sendMessage({
|
|
action: 'clearCookies',
|
|
url: url || window.location.href
|
|
}, response => {
|
|
if (chrome.runtime.lastError) {
|
|
reject(new Error(chrome.runtime.lastError.message));
|
|
} else if (response && response.success) {
|
|
resolve();
|
|
} else {
|
|
reject(new Error(response ? response.error : '未知错误'));
|
|
}
|
|
});
|
|
});
|
|
},
|
|
|
|
// 导航到指定 URL
|
|
navigateTo: async function(url) {
|
|
return new Promise((resolve, reject) => {
|
|
chrome.runtime.sendMessage({
|
|
action: 'navigateTo',
|
|
url: url
|
|
}, response => {
|
|
if (chrome.runtime.lastError) {
|
|
reject(new Error(chrome.runtime.lastError.message));
|
|
} else if (response && response.success) {
|
|
resolve();
|
|
} else {
|
|
reject(new Error(response ? response.error : '未知错误'));
|
|
}
|
|
});
|
|
});
|
|
},
|
|
|
|
// 获取请求日志
|
|
getRequestLogs: async function() {
|
|
return new Promise((resolve, reject) => {
|
|
chrome.runtime.sendMessage({
|
|
action: 'getRequestLogs'
|
|
}, response => {
|
|
if (chrome.runtime.lastError) {
|
|
reject(new Error(chrome.runtime.lastError.message));
|
|
} else if (response && response.success) {
|
|
resolve(response.logs);
|
|
} else {
|
|
reject(new Error(response ? response.error : '未知错误'));
|
|
}
|
|
});
|
|
});
|
|
},
|
|
|
|
// 清除请求日志
|
|
clearRequestLogs: async function() {
|
|
return new Promise((resolve, reject) => {
|
|
chrome.runtime.sendMessage({
|
|
action: 'clearRequestLogs'
|
|
}, response => {
|
|
if (chrome.runtime.lastError) {
|
|
reject(new Error(chrome.runtime.lastError.message));
|
|
} else if (response && response.success) {
|
|
resolve();
|
|
} else {
|
|
reject(new Error(response ? response.error : '未知错误'));
|
|
}
|
|
});
|
|
});
|
|
}
|
|
};
|
|
|
|
// 导出到全局
|
|
window.GA = window.GeneralAuto;
|
|
|
|
console.log('GeneralAuto API 已就绪');
|