尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

ChatGPT Work:用大模型实现安全自动化登录的工程实践

ChatGPT Work:用大模型实现安全自动化登录的工程实践 这次我们看一个比较实用的落地场景用 ChatGPT 这类大模型能力做一个可以安全登录网站账号的自动化工作流。项目叫 ChatGPT Work它解决的核心问题很直接——很多网站后台、内部控制台、第三方管理系统都需要登录而人工处理登录表单、会话维护、多账号切换非常浪费时间。如果能把登录动作交给 AI 自动化同时保证账号密码不被泄露、会话状态可控、操作可审计这就是一个高价值的工程化工具。先说结论这类项目的关键不在于大模型能不能写代码而在于登录链路中的三个细节——表单识别是否稳定、凭证是否加密存储、会话是否可恢复。从项目定位来看ChatGPT Work 把 LLM 的网页理解能力和浏览器自动化框架结合让 AI 负责分析登录页面结构、提取输入项、判断登录结果同时把密码、Token、Cookie 这类敏感信息独立管理不在提示词里裸奔。这篇文章会带你把整个流程走一遍先给核心能力速览和适用边界再讲环境准备、安装部署、功能测试、API 与批量任务最后补充资源占用观察、常见问题排查和最佳实践。如果你有网站后台维护、账号批量授权、内部系统自动登录这类需求可以直接对照着做验证。1. 核心能力速览能力项说明项目类型基于 ChatGPT/大语言模型的网站账号自动化登录工具核心功能登录表单识别、账号密码填充、会话保持、登录结果判断、多账号管理安全机制凭证加密存储、环境变量隔离、日志脱敏、操作审计浏览器自动化底层依赖 Playwright / Selenium 这类浏览器控制框架具体需按项目实现确认是否需要大模型 API需要可用 OpenAI API 或本地部署的兼容接口具体模型版本按实际环境配置启动方式命令行启动 Web 服务模式具体以项目 README 为准是否支持 API支持可对外暴露 HTTP 接口供其他系统调用是否支持批量任务支持批量账号登录和定时巡检需要自己搭任务队列推荐运行环境Linux / Windows / macOS 均可建议使用独立虚拟环境适合场景内部系统后台登录、网站账号批量授权、登录态持续维护、账号安全巡检从材料看这个项目主要面向有真实账号访问权限的技术人员而不是用来做撞库或绕过认证。部署难度中等核心工作集中在浏览器自动化环境准备和凭证管理配置上。2. 适用场景与使用边界2.1 适合谁用运维和开发人员需要批量登录服务器面板、云控制台做健康巡检。测试工程师需要准备多账号测试环境反复登录不同角色账号。运营人员管理多个内容平台账号需要统一登录并保持会话有效。安全审计人员在授权范围内验证账号登录链路是否有异常。2.2 能解决什么问题把重复的登录操作从人工点击变成脚本驱动。把账号密码从明文配置升级为加密存储。把登录结果从肉眼判断变成结构化输出方便后续对接。把多账号登录从手工切换变成批量队列处理。2.3 不适合什么场景没有合法授权的账号登录任何自动化都不应该用来绕过访问控制。网站明确禁止自动化访问的服务条款场景需要先确认合规性。涉及验证码风控的登录流程如果网站方不允许自动破解不能强行绕过。对安全要求极高、需要物理隔离操作的金融核心系统不建议直接用自动化工具除非有明确授权和审计方案。2.4 版权、隐私与安全边界这里必须强调登录过程涉及账号密码、Token、Cookie、手机号等敏感信息。项目在设计和部署时必须满足以下几点——凭证不能出现在日志文件里不能明文存放在配置文件中不能发送到未经授权的第三方接口每次登录操作要有审计记录涉及多人共用的系统要按最小权限原则设置访问范围。文章中所有示例都不会涉及真实账号只做流程说明。3. 环境准备与前置条件无论项目具体实现是 Python 还是 Node.js建议先准备一套干净的运行环境。下面是通用检查清单。3.1 基础软件依赖建议版本用途Python3.10 或更高运行自动化脚本和 API 服务Node.js18 LTS 或更高部分浏览器自动化工具和前端依赖Git最新稳定版拉取项目代码浏览器Chrome / Edge / Chromium自动化登录的实际运行容器CUDA可选如果使用本地大模型做页面分析可能用到 GPU具体以模型要求为准3.2 Python 虚拟环境建议使用 venv 或 conda 创建独立环境避免依赖冲突。# 创建虚拟环境 python -m venv .venv # 激活虚拟环境 # Windows .venv\Scripts\activate # Linux / macOS source .venv/bin/activate3.3 浏览器驱动如果你使用的是 Playwright直接安装浏览器内核即可pip install playwright playwright install chromium如果你使用的是 Selenium需要下载对应版本的 chromedriver并确保浏览器版本和驱动版本匹配。3.4 大模型接口项目依赖大模型来理解登录页面。可以选择OpenAI 兼容 API配置OPENAI_API_KEY和OPENAI_BASE_URL。本地大模型使用 Ollama 或 vLLM 部署一个支持页面分析与 JSON 输出的模型。两种方式对项目本身没有本质区别核心是模型能返回结构化的表单字段和操作指令。本地模型的好处是数据不出内网适合有隐私要求的场景。3.5 配置示例以下是一个通用配置模板实际字段需要按项目调整# config.yaml llm: provider: openai_compatible base_url: http://127.0.0.1:8000/v1 api_key: ${LLM_API_KEY} model: your-model-name browser: headless: true timeout_ms: 30000 credential: storage: keyring # keyring 或 vault按项目支持情况选择 session: save_path: ./sessions expire_hours: 24 api: host: 127.0.0.1 port: 8800这里的关键点是api_key通过环境变量引用不直接写在文件里。如果你用的是 Windows 系统环境变量配置方式参考第 4 章。4. 安装部署与启动方式4.1 拉取项目git clone https://your-project-repo/chatgpt-work.git cd chatgpt-work如果项目还没有发布到公开仓库直接用你本地的项目目录即可。4.2 安装依赖pip install -r requirements.txt如果项目有 Node 端依赖额外执行npm install4.3 配置环境变量在项目根目录创建.env文件或者在系统环境中设置以下变量# Linux / macOS export LLM_API_KEYyour-api-key export CREDENTIAL_PASSWORDyour-credential-password export API_HOST127.0.0.1 export API_PORT8800:: Windows PowerShell $env:LLM_API_KEYyour-api-key $env:CREDENTIAL_PASSWORDyour-credential-password $env:API_HOST127.0.0.1 $env:API_PORT8800CREDENTIAL_PASSWORD是用于加密本地凭证库的密码不要和 API Key 混用。4.4 初始化凭证库首次使用前需要初始化凭证存储目录python -m chatgpt_work init --credential-storage keyring这个命令会创建加密的凭证存储空间。实际命令名以项目文档为准。4.5 启动服务有两种启动方式取决于你要做交互测试还是接口对接。方式一命令行交互模式python -m chatgpt_work login --site https://admin.example.com --profile work这个命令会打开浏览器或 headless 模式调用大模型分析登录页面然后尝试自动登录。登录成功后会话信息会保存到./sessions目录。方式二API 服务模式python -m chatgpt_work serve --host 127.0.0.1 --port 8800启动后可以看到类似输出INFO: Uvicorn running on http://127.0.0.1:8800 INFO: Click here to open the API docs.如果端口被占用服务会启动失败日志里会明确提示端口冲突换一个端口启动即可。4.6 验证服务状态启动服务后用浏览器访问接口文档页面确认服务可正常响应。如果页面打不开按第 8 章排查。5. 功能测试与效果验证5.1 测试目标不需要一口气验证所有功能。先跑通最小链路目标网站 一个测试账号 一次登录 一次会话恢复。5.2 测试用例设计用例输入预期结果判断标准登录表单识别一个标准账号密码登录页面返回表单字段清单包含用户名、密码输入框位置字段类型和 name/id 识别准确凭证读取测试账号的加密凭证能解密出账号信息且日志中不出现明文日志中密码显示为***执行登录测试账号 目标站点登录成功或返回明确失败原因页面跳转或返回特定标识元素会话保持登录后的 Cookie/Token会话持久化到本地可恢复再次访问时无需重新输入密码登录结果判断含验证码/风控页面返回需要人工处理而不是死循环重试任务状态标记为manual_intervention5.3 测试步骤先启动 API 服务python -m chatgpt_work serve --host 127.0.0.1 --port 8800然后创建登录任务curl -X POST http://127.0.0.1:8800/api/v1/login \ -H Content-Type: application/json \ -d { site: https://admin.example.com, profile: test_profile, mode: auto }返回结果示例{ task_id: 8f3a2c1e9b, status: pending, message: login task created }之后通过任务 ID 查询结果curl http://127.0.0.1:8800/api/v1/tasks/8f3a2c1e9b5.4 判断成功的标准登录后页面包含登录成功的标志元素例如用户名、控制台名称。会话文件成功写入./sessions目录。API 日志中没有明文密码和敏感 Token。重复登录时不再请求凭证库解密而是直接复用会话。5.5 常见失败原因页面是前端渲染的单页应用大模型看不到真实 DOM 结构。网站有风控检测到自动化浏览器后拦截登录。登录按钮不是标准的 submit 按钮需要额外点击事件。凭证库密码错误导致解密失败。目标网站使用了非标准输入框例如自定义控件或 iframe 嵌套。遇到这些情况先手动确认浏览器自动化工具能否正常打开目标页面再考虑是否需要为特定网站编写自定义登录器。6. 接口 API 与批量任务项目价值主要体现在接口化。登录能力封装成 API 后可以被巡检系统、测试平台、自动化工作流直接调用。6.1 接口设计建议接口路径方法说明/api/v1/loginPOST创建登录任务/api/v1/tasks/{task_id}GET查询任务状态和结果/api/v1/sessions/{profile}GET查询某个账号配置的会话状态/api/v1/sessions/{profile}DELETE登出并清理会话/api/v1/profilesGET列出所有本地账号配置6.2 Python 调用示例import requests BASE_URL http://127.0.0.1:8800 # 创建登录任务 payload { site: https://admin.example.com, profile: test_profile, mode: auto } response requests.post(f{BASE_URL}/api/v1/login, jsonpayload, timeout30) task response.json() print(Task ID:, task[task_id]) # 轮询任务状态 import time for _ in range(10): result requests.get( f{BASE_URL}/api/v1/tasks/{task[task_id]}, timeout10 ).json() print(Status:, result[status]) if result[status] in (success, failed, manual_intervention): break time.sleep(3)6.3 批量登录任务批量场景需要两个能力账号配置分组和失败重试。建议目录结构profiles/ work/ config.yaml test/ config.yaml sessions/ work/ cookie.json test/ cookie.json logs/ batch_20250101.log批量任务执行命令示例python -m chatgpt_work batch \ --profiles ./profiles/work \ --sites ./sites.txt \ --retry 2 \ --interval 10核心逻辑是先读取所有账号配置按站点分组逐批执行登录每批间隔 10 秒失败任务最多重试 2 次。实际命令参数需要按项目调整。6.4 批量任务队列设计简单轮询排队的实现可以用 Redis 或数据库表。建议任务表包含这些字段字段类型说明task_idstring任务唯一 IDprofilestring账号配置名sitestring目标站点statusenumpending / running / success / failedretry_countint已重试次数last_errorstring最近一次错误信息created_atdatetime创建时间updated_atdatetime更新时间失败重试需要注意如果目标网站服务本身不稳定连续重试只会增加风控风险。建议失败后先隔 5 分钟再考虑二次重试。6.5 API 调用失败排查返回 401API Token 或密钥配置错误。返回 404接口路径不对检查服务版本。返回 500脚本内部异常看服务端日志。超时目标网站响应慢或浏览器启动失败。7. 资源占用与性能观察登录自动化主要消耗三类资源浏览器进程内存、CPU、以及大模型 API 调用的网络和额度。7.1 资源观察方法启动服务后用任务管理器或top观察# Linux top -u your_username # 查看 Python 进程和浏览器进程的 CPU/内存占比 ps aux | grep -E chatgpt_work|chromium|chrome浏览器启动后通常会占用 200MB 到 500MB 内存登录多个页面时会更高具体取决于页面复杂度和是否启用 headless。如果是本机部署建议内存不小于 8GB。7.2 影响性能的因素启动的浏览器实例数量批量任务建议串行或控制在 3 个并发以内。页面加载时长JS 重的大型管理后台等待时间会比普通站点长。大模型响应时长每次页面分析都要调用一次模型接口批量场景会明显放大耗时。会话文件读写频率每次登录成功都会写会话文件磁盘 IO 也是一个潜在瓶颈。7.3 如何降低占用能复用会话就复用会话减少重复登录。使用 headless 模式时关闭图片加载和多余插件。批量任务控制并发数避免一次性拉起太多浏览器。对大模型接口做结果缓存在页面结构没有变化时复用分析结果。7.4 端口冲突和进程残留如果启动入口脚本报 Port already in use先查找占用进程# Linux / macOS lsof -i :8800 # Windows netstat -ano | findstr :8800确认是残留进程后结束它再重启kill -9 pid8. 常见问题与排查方法问题现象可能原因排查方式解决方案服务启动后页面打不开端口被占用或服务崩溃查看启动日志、检查端口占用更换端口或杀掉残留进程后重启依赖安装失败Python 版本不匹配或缺少编译工具查看错误日志中的包名升级 Python或安装对应系统依赖库浏览器启动失败浏览器内核未安装或驱动版本不匹配运行 playwright install 检查重新安装浏览器内核确认驱动版本模型接口返回超时API 地址不可达或模型负载高curl 测试 API 地址换更快的模型服务或增加超时时间登录后提示验证码拦截网站风控检测到自动化访问手动打开页面确认在合法授权前提下考虑人工介入或降低请求频率凭证解密失败凭证库密码错误或存储方式不兼容确认 CREDENTIAL_PASSWORD 配置重置凭证库或恢复密码会话无法恢复Cookie 过期或站点要求重新认证查看会话文件时间戳重新执行登录流程批量任务卡住不执行队列积压或任务重试逻辑异常查看任务状态字段和日志手动终止任务调整队列并发数日志中出现明文密码日志配置未脱敏检查日志输出格式配置敏感字段替换规则8.1 ChatGPT 桌面版与 Codex CLI 启动失败的延伸排查如果你在使用 ChatGPT 桌面版或 Codex CLI 时遇到类似下面这些报错这里也整理了一份排查思路。近期有不少同学反馈启动 ChatGPT 桌面版时出现了ChatGPT failed to start. Unable to locate the Codex CLI binary这类问题的本质是客户端找不到 Codex CLI 可执行文件或环境变量没有正确指向。问题现象可能原因排查方式解决方案提示Unable to locate the Codex CLI binary客户端未安装 Codex CLI或CODEX_CLI_PATH未设置确认codex命令是否存在检查安装目录bin/codex安装并配置 Codex CLI或设置环境变量CODEX_CLI_PATH指向可执行文件提示无法加载 config.toml且涉及model字段配置文件损坏或模型名配置错误打开 config.toml检查model字段是否被改为不存在的模型名修改或恢复model配置必要时删除配置文件重新生成提示spawn EINVAL启动参数无效常见于 Windows 路径含特殊字符或终端编码问题检查终端编码和路径中的空格、中文清理路径使用管理员终端重新启动桌面端创建沙箱环境耗时过长首次运行需要初始化运行环境等待或查看网络连接保证网络稳定必要时清理旧沙箱状态这些错误本质上都是环境配置问题。只要明确报错信息中提到的路径、文件和模型名基本都能定位。9. 最佳实践与使用建议9.1 凭证管理是第一优先密码和 Token 必须加密存储不要出现在配置文件、环境变量以外的位置。不同的站点使用不同的凭证配置避免一个泄露全部暴露。定期轮换密码特别是内部系统账号。凭证库的主密码和 API Key 分开管理。9.2 最小可运行配置把下面这套配置固定下来作为团队的基线模板# baseline.yaml llm: timeout_sec: 30 max_retries: 2 browser: headless: true viewport: width: 1280 height: 800 credential: max_fail_attempts: 3 batch: concurrency: 2 retry_count: 1 interval_sec: 159.3 目录与日志规范chatgpt-work/ profiles/ sessions/ logs/ backups/日志中必须做敏感信息脱敏。可以增加一个简单的 Python 过滤器import logging SENSITIVE_KEYS [password, token, cookie, secret] class SensitiveFilter(logging.Filter): def filter(self, record): msg record.getMessage() for key in SENSITIVE_KEYS: if key in msg.lower(): record.msg ****** sensitive content filtered ****** record.args () return True9.4 批量任务要加失败隔离单一账号登录失败不应该阻塞整个批量队列。建议在任务表中增加last_error和retry_count超过重试次数后标记为failed记录失败原因让其他任务继续执行。9.5 接口服务要限制访问API 服务默认绑定127.0.0.1不要对外网暴露。如果确实需要远程调用要加 API Token 校验和来源 IP 白名单。9.6 合规底线登录自动化只允许用于自己拥有合法权限的网站账户。不用于撞库、不绕过认证、不传播他人凭证、不破坏网站服务。部署到团队时要确保每个账号都有对应的授权说明和使用审批记录。10. 总结与下一步ChatGPT Work 这类工具最有价值的点是把大模型的网页理解能力和传统浏览器自动化结合把“登录一个网站账号”这个看似简单但重复性很高的操作做成了可编程、可审计、可批量调用的服务。安全登录是它的核心卖点而凭证加密、会话恢复和日志脱敏恰恰是很多自制脚本最容易忽略的部分。第一次尝试时建议先用一个测试站点跑通最小链路不要直接上生产账号。重点验证三件事大模型能否准确识别登录表单、凭证库能否正常加解密、会话能否在不重新输入密码的情况下恢复。最容易踩的坑是验证码风控和单页应用的动态渲染遇到这些问题先看日志再决定是加人工介入流程还是写自定义登录器。接下来可以往两个方向扩展一是把登录后的操作做成可编排工作流比如登录后自动执行某个后台任务二是接入统一凭证管理平台让多环境、多账号的权限审批和审计更完整。这套能力的核心稳定之后对团队自动化水平和账号安全管理都会是明显提升。建议收藏备用先用测试站点验证完再考虑生产环境接入。
返回列表