Files

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 已就绪');