用 Codex 控制 Chrome 完成 CSDN 验证码登录——一次 AI 浏览器自动化实录(TaoToken 统一 Key 通道版)

发布时间:2026/10/15 18:46:16
用 Codex 控制 Chrome 完成 CSDN 验证码登录——一次 AI 浏览器自动化实录(TaoToken 统一 Key 通道版)
1. 为什么我要让 Codex 去点 CSDN 的登录按钮先说清楚这件事到底在做什么Codex 是 OpenAI 推出的编码智能体桌面版内置了浏览器控制能力能通过扩展接管你本机已经打开的 Chrome读取页面元素、点击按钮、填表单、截图确认状态。CSDN 验证码登录就是打开 passport.csdn.net从默认的微信扫码切到「验证码登录」填手机号、过滑块、收短信、填 6 位码、点登录这一整套流程。适合谁适合已经在用 Codex 写代码、想顺手把「打开网页—填表—提交」这类重复动作交给 AI 的人也适合想搞清楚浏览器自动化链路到底怎么搭的开发者。我自己的动机很朴素每天要开好几个后台登录动作重复到烦。与其写一堆 Selenium 脚本维护选择器不如让 Codex 直接读页面语义去操作。但真跑起来才发现链路里有两个坑必须先填平——一是 Codex 的模型通道要稳定二是 Chrome 的接管方式要选对。前者我用 TaoToken 的统一 Key 解决一个 Key 打通对话和编码模型后者用远程调试端口启动 Chrome。下面把整条链路拆开每一步都给可复制的配置。需要提前说明边界滑块拼图这类人机验证Codex 按安全规范不会擅自绕过会停下来问你。这不是缺陷是设计。所以本文的流程是「AI 干繁琐的人干关键的」短信验证码和滑块由你亲自完成。2. TaoToken 统一 Key 通道给 Codex 接上稳定模型Codex 要能理解页面、规划点击顺序背后得有模型在跑。如果你直接用官方通道会遇到两个现实问题一是不同模型要配不同的 Key 和 Base URL管理起来碎二是网络波动时请求容易断自动化跑到一半卡住很尴尬。TaoToken 的思路是把这些收敛成一个统一入口——一个 API Key一个 Base URL模型 ID 按需切换。它的官网入口是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 根地址是 https://taotoken.net/api 注意 API 地址不带 UTM 参数配置时别把推广参数拼进去否则部分客户端会报路径错误。具体怎么拿 Key进控制台 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 在 API Keys 页面新建一个复制出来。这个 Key 同时能用于模型对话和编码类模型不用为 Codex 单独再申请一个。想先验证模型通不通可以去模型对话页 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite 发一条消息试试能正常返回就说明 Key 和通道都没问题。这里有个概念要讲清楚不然小白容易懵Base URL 是「请求发到哪」API Key 是「你是谁」Model ID 是「用哪个模型」。三者缺一不可而且必须配套。很多人报 401 不是 Key 错了是 Base URL 还留着旧地址报 model not found 不是模型下线了是 Model ID 拼错了。后面第 5 节我会把这些报错逐个对照。如果你打算长期跑编码和 Agent 类任务可以考虑 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 它面向的就是这种持续调用的场景比按次计费更省心。不过本文的浏览器自动化演示用普通 Key 就够了。3. 可复制配置Codex Chrome 接管三件套这一节是全文的核心配置片段都能直接抄。分两块Codex 侧的模型配置和 Chrome 侧的启动参数。先说 Codex 侧。Codex 的配置通常放在用户目录下的配置文件中不同版本路径略有差异常见的是~/.codex/config.tomlmacOS/Linux或%USERPROFILE%\.codex\config.tomlWindows。写入下面这段# ~/.codex/config.toml model claude-sonnet-4-20250514 model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY wire_api chat然后在环境变量里放 Key别硬编码进配置文件# macOS / Linux写进 ~/.zshrc 或 ~/.bashrc export TAOTOKEN_API_KEYsk-你的Key # Windows PowerShell setx TAOTOKEN_API_KEY sk-你的Key如果你用的是auth.json形式的凭据文件部分 Codex 版本走这个内容长这样{ OPENAI_API_KEY: sk-你的Key, OPENAI_BASE_URL: https://taotoken.net/api }注意三件套要齐全Base URL 是https://taotoken.net/apiKey 是刚才复制的Model ID 按你实际要用的填。三者对不上后面必报错。再说 Chrome 侧。Codex 桌面版接管 Chrome 靠的是扩展 远程调试端口。你得用一个带调试端口的独立用户目录启动 Chrome别用你日常那个否则扩展可能冲突# macOS /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \ --remote-debugging-port9222 \ --user-data-dir$HOME/.chrome-codex-profile # Windows C:\Program Files\Google\Chrome\Application\chrome.exe ^ --remote-debugging-port9222 ^ --user-data-dir%USERPROFILE%\.chrome-codex-profile # Linux google-chrome --remote-debugging-port9222 \ --user-data-dir$HOME/.chrome-codex-profile启动后访问http://127.0.0.1:9222/json/version能看到返回 JSON 就说明调试端口通了。这一步是整个自动化的地基端口没通Codex 再聪明也够不着浏览器。配置写完后重启 Codex让它重新读取配置。此时你可以在 Codex 里发一句「列出当前可用的浏览器标签页」如果它能返回你刚启动的 Chrome 里的页面说明接管成功。4. 逐步验证从打开登录页到登录态确认配置通了开始跑真实流程。我按实际操作顺序拆成六步每步都给你验证动作。第一步让 Codex 新建标签页打开 CSDN 登录页。指令可以写「用 Chrome 打开 passport.csdn.net等页面加载完成后截图」。验证点截图里能看到登录框默认是微信扫码。如果截图空白多半是页面还没加载完让它等 2 秒再截。第二步切换到验证码登录。指令「点击页面上的『验证码登录』标签」。验证点表单变成手机号输入框 6 位验证码框 「获取验证码」按钮。这一步 Codex 靠读页面元素语义定位不是写死的坐标所以页面改版也不容易崩。第三步填手机号并点获取验证码。指令「在手机号输入框填入 182****8389然后点击获取验证码」。验证点CSDN 弹出滑块拼图。第四步滑块处理。这是关键的人机分界点。Codex 会停下来问你「检测到人机验证是否由我尝试完成」我的建议是选「自己来」在 Chrome 窗口里手动拖滑块。拖完按钮会变成「47s 后重新获取」短信随即发出。为什么不让 AI 硬上一是安全规范不允许二是滑块轨迹检测本来就针对机器行为硬绕成功率低还容易触发风控。第五步填验证码提交。把收到的 6 位码告诉 Codex「验证码是 123456填入输入框并点击登录」。验证点页面跳转到 CSDN 首页。第六步确认登录态。指令「截图当前页面确认顶部是否显示已登录」。验证点截图里顶部头像出现、登录按钮消失。到这一步整条链路闭环。整个过程的体感是AI 负责打开页面、切标签、填表、点击、截图确认这些机械动作你负责滑块和短信码这两个安全节点。分工清晰跑起来不别扭。5. 常见报错排查清单401、local proxy failed、reading choices自动化跑不顺八成卡在这几个报错上。我按实际遇到的频率排一下。401 Unauthorized。最常见原因基本是 Key 或 Base URL 不匹配。检查顺序环境变量TAOTOKEN_API_KEY是否真的生效echo $TAOTOKEN_API_KEY看有没有值配置文件里的base_url是不是https://taotoken.net/api别多写斜杠也别带 UTM 参数Key 有没有复制时带空格。三件套里任意一个错位都会 401。local proxy failed / connection refused。这个报错指向本地代理或调试端口。先确认 Chrome 是不是用--remote-debugging-port9222启动的再访问http://127.0.0.1:9222/json/version看通不通。如果端口通但 Codex 还报这个错检查是不是有别的程序占了 9222换个端口比如 9223 重试。另外如果你本机装了会改系统代理的软件也可能干扰本地回环请求临时关掉再试。reading choices of undefined。这是响应结构解析失败通常发生在模型返回格式和客户端预期不一致时。检查wire_api配置项Codex 走 chat 接口就填chat别填成responses。另外确认 Model ID 是通道实际支持的拼错的模型名有时不报 404 而是返回一个空结构客户端一读choices就崩。OAuth / 登录态相关报错。如果你在 Codex 里配了 OAuth 流程又同时用 API Key两者会打架。用 Key 通道就把 OAuth 相关配置清掉别混用。浏览器侧的登录态则是另一回事CSDN 的登录 Cookie 存在你指定的--user-data-dir里下次用同一个目录启动 Chrome登录态还在不用重复登录。滑块过不去 / 验证码不发送。先确认你是不是让 AI 去拖滑块了改回手动。再确认手机号格式没被输入框截断。如果点了获取验证码但没反应看页面有没有报「操作过于频繁」等一分钟再试。排查的通用思路先看是模型通道的问题401、choices还是浏览器接管的问题proxy、端口两类问题的排查路径完全不同别混着查。6. 把这条链路用起来从登录到日常自动化跑通一次登录只是起点。真正省时间的是把这套链路固化下来。我的做法是Chrome 用固定的--user-data-dir启动登录态持久化下次直接跳过登录Codex 侧把常用指令存成片段比如「打开 XX 后台并截图」「填这个表单并提交」需要时直接调用。如果你要跑更重的任务比如让 Codex 连续操作多个页面、读取数据再写回文件建议走 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 持续调用场景下更稳。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 配置细节和参数说明都在里面遇到不确定的字段先查文档再改。Key 管理统一在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 要轮换或加权限在这里操作。最后留一个我踩过的坑别把日常用的 Chrome 用户目录拿来做自动化扩展和登录态会互相污染出问题很难定位。单独开一个 profile干净、可丢弃、随时重置这才是长期跑自动化的正确姿势。