# General Auto - 浏览器自动化控制扩展 ## 简介 General Auto 是一个强大的 Chrome 浏览器自动化控制扩展,专为自动化测试和浏览器控制设计。 ## 功能特性 ### 核心功能 - ✅ 完整的页面元素操作(点击、输入、滚动等) - ✅ Cookie 管理(获取、设置、清除) - ✅ 请求拦截和日志记录(XHR、Fetch) - ✅ 模拟人类行为(随机延迟、自然输入) - ✅ 元素等待和检测 - ✅ 自定义脚本执行 - ✅ 任务队列管理 ### API 功能 #### Content Script API (window.GeneralAuto) ```javascript // 执行任务 await GeneralAuto.executeTask({ type: 'click', selector: 'button#submit', timeout: 5000 }); // 执行自定义脚本 await GeneralAuto.executeScript('document.title'); // Cookie 管理 const cookies = await GeneralAuto.getCookies(); await GeneralAuto.setCookies([...]); await GeneralAuto.clearCookies(); // 导航 await GeneralAuto.navigateTo('https://example.com'); // 获取请求日志 const logs = await GeneralAuto.getRequestLogs(); ``` #### Injected Script API (window.AutomationUtils) ```javascript // 模拟人类输入 await AutomationUtils.humanInput(element, 'Hello World'); // 模拟人类点击 await AutomationUtils.humanClick(element); // 等待元素 const el = await AutomationUtils.waitForElement('.selector', 5000); // 等待元素消失 await AutomationUtils.waitForElementRemoved('.loading'); // 随机延迟 await AutomationUtils.randomDelay(100, 500); // 监听请求 AutomationUtils.onRequest((data) => { console.log('Request:', data); }); // 监听响应 AutomationUtils.onResponse((data) => { console.log('Response:', data); }); ``` ## 任务类型 ### 支持的任务类型 | 类型 | 说明 | 参数 | |------|------|------| | `click` | 点击元素 | `selector` | | `input` | 输入文本 | `selector`, `value` | | `humanInput` | 模拟人类输入 | `selector`, `value` | | `getText` | 获取文本 | `selector` | | `getAttribute` | 获取属性 | `selector`, `value`(属性名) | | `scroll` | 滚动页面 | `value: {x, y}` | | `scrollToElement` | 滚动到元素 | `selector` | | `wait` | 等待指定时间 | `value`(毫秒) | | `waitForElement` | 等待元素出现 | `selector` | | `evaluate` | 执行 JavaScript | `value`(代码) | ### 任务示例 ```javascript // 点击按钮 await GeneralAuto.executeTask({ type: 'click', selector: 'button[data-testid="submit"]', timeout: 5000, waitVisible: true }); // 输入文本 await GeneralAuto.executeTask({ type: 'input', selector: 'input[name="username"]', value: 'myusername', timeout: 5000 }); // 模拟人类输入 await GeneralAuto.executeTask({ type: 'humanInput', selector: 'textarea', value: 'This is a human-like typing', timeout: 10000 }); // 获取文本 const result = await GeneralAuto.executeTask({ type: 'getText', selector: '.title' }); console.log(result.text); // 滚动 await GeneralAuto.executeTask({ type: 'scroll', value: { x: 0, y: 500 } }); // 等待元素 await GeneralAuto.executeTask({ type: 'waitForElement', selector: '.dynamic-content', timeout: 10000 }); ``` ## 安装说明 ### 1. 开发者模式安装 1. 打开 Chrome 浏览器 2. 访问 `chrome://extensions/` 3. 开启右上角的"开发者模式" 4. 点击"加载已解压的扩展程序" 5. 选择 `expand/general-auto` 文件夹 ### 2. 在 Rod/Chromedp 中使用 ```go // 使用 Rod browser := rod.New(). ControlURL(launcher.New(). Headless(false). Set("load-extension", "d:\\Project\\go-account-register\\expand\\general-auto"). MustLaunch()). MustConnect() ``` ## 使用示例 ### Go 代码中使用 ```go // 在浏览器启动时加载扩展 func OpenBrowserWithExtension() *rod.Browser { extensionPath := "d:\\Project\\go-account-register\\expand\\general-auto" browser := rod.New(). ControlURL(launcher.New(). Headless(false). Set("load-extension", extensionPath). MustLaunch()). MustConnect() return browser } // 在页面中执行自动化任务 func AutomateTwitterPost(page *rod.Page, content string) error { // 等待扩展加载 time.Sleep(2 * time.Second) // 执行任务 _, err := page.Eval(` (async () => { // 等待输入框 await GeneralAuto.executeTask({ type: 'waitForElement', selector: '[data-testid="tweetTextarea_0"]', timeout: 10000 }); // 输入内容 await GeneralAuto.executeTask({ type: 'humanInput', selector: '[data-testid="tweetTextarea_0"]', value: ` + "`" + content + "`" + `, timeout: 15000 }); // 点击发布按钮 await GeneralAuto.executeTask({ type: 'click', selector: '[data-testid="tweetButtonInline"]', timeout: 5000 }); return true; })() `) return err } ``` ### 页面控制台中使用 ```javascript // 1. 点击登录按钮 await GeneralAuto.executeTask({ type: 'click', selector: 'button.login-btn' }); // 2. 等待登录框出现 await GeneralAuto.executeTask({ type: 'waitForElement', selector: '#login-modal' }); // 3. 输入用户名 await GeneralAuto.executeTask({ type: 'humanInput', selector: 'input[name="username"]', value: 'myusername' }); // 4. 输入密码 await GeneralAuto.executeTask({ type: 'humanInput', selector: 'input[name="password"]', value: 'mypassword' }); // 5. 点击提交 await GeneralAuto.executeTask({ type: 'click', selector: 'button[type="submit"]' }); ``` ## 配置选项 ### 请求拦截配置 ```javascript // 控制请求拦截 window.GeneralAutoConfig = { interceptXHR: true, // 拦截 XHR 请求 interceptFetch: true, // 拦截 Fetch 请求 logRequests: true, // 记录请求日志 requestCallbacks: [], // 请求回调 responseCallbacks: [] // 响应回调 }; ``` ## 注意事项 1. 扩展需要在浏览器启动时加载 2. 某些网站可能检测自动化行为,建议使用人类模拟功能 3. 请求日志会占用内存,定期清理 4. 开发模式下扩展可能需要手动刷新 ## 更新日志 ### v1.0.0 (2025-01-21) - ✨ 初始版本发布 - ✅ 实现基础自动化功能 - ✅ 添加 Cookie 管理 - ✅ 添加请求拦截 - ✅ 添加人类行为模拟 ## 许可证 MIT License ## 支持 如有问题,请联系开发团队。