新增通用的浏览器自动化扩展插件
This commit is contained in:
186
expand/general-auto/content.js
Normal file
186
expand/general-auto/content.js
Normal file
@@ -0,0 +1,186 @@
|
||||
// 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 已就绪');
|
||||
Reference in New Issue
Block a user