CODEX KNOWLEDGE

归档 - 浏览器自动化与人机验证笔记

2026/04/24 3 min read CODEX KNOWLEDGE 目录 CODEX KNOWLEDGE 类 工具工作流 形态 草稿 状态 归档 归档 浏览器自动化与人机验证笔记

这个情况很正常,而且你现在已经踩到真正难点了,不是代码问题。

我先把本质讲清楚,然后给你能用的解决路径(不绕弯):


🔥 一、为什么会一直人机验证

你现在这套:

Playwright / CDP → 自动控制浏览器

在网站眼里是:

👉 自动化行为(bot)

🧠 ChatGPT(以及类似站)的检测点

它不是只看一个东西,而是组合判断:


🧨 1️⃣ 浏览器指纹异常

navigator.webdriver = true ❌
缺插件 / 字体 / GPU ❌

🧨 2️⃣ 行为异常

瞬间输入
无鼠标移动
无滚动

🧨 3️⃣ 环境异常

新 profile
新设备
新 IP

🧨 4️⃣ CDP / 自动化痕迹

DevTools protocol 被检测

👉 所以结果就是:

❗你一连上 → 直接 challenge(人机验证)


🔥 二、为什么“手动浏览器没事,你这个就炸”

因为你现在用的是:

--user-data-dir=新目录

👉 在系统眼里:

全新设备 + 自动化行为 = 高风险

🔥 三、真正有效的解决思路(重点)

我给你分三档:


🥇 方案A(你现在最该用的)✅

👉 用“真实日常浏览器”+ attach


❗不要用:

--user-data-dir=新目录

✅ 正确方式:

直接启动你平时用的 Chrome:

chrome.exe --remote-debugging-port=9222

(不加 user-data-dir)


👉 然后:

chromium.connectOverCDP("http://127.0.0.1:9222")

👉 效果

✔ 用你真实登录态
✔ 有历史记录
✔ 有行为轨迹
✔ 更像真人

👉 人机验证概率会大幅下降(不是100%消失)


🥈 方案B(进阶)⚠️

👉 加“人类行为模拟”

比如:

await page.mouse.move(300, 500)
await page.waitForTimeout(500)
await page.mouse.move(600, 400)

输入不要:

fill() ❌

改成:

for (const char of text) {
  await page.keyboard.type(char, { delay: 50 + Math.random()*50 })
}

滚动:

await page.mouse.wheel(0, 300)

👉 目的:

让行为像人

🥉 方案C(生产级)🔥

👉 多账号 + 长期养号

一个账号长期用
固定 IP
固定浏览器
稳定行为

👉 这才是 Soxio 那类系统的核心:

不是技术牛
是环境“像人”

❌ 四、你现在这条“copy profile”路线为什么死

你之前做的:

复制 Chrome Profile

👉 问题:

✔ 加密问题
✔ 指纹不一致
✔ session 不完整

👉 最终:

❌ 直接触发风控

🧠 五、你现在应该怎么改(最关键)

我帮你定路线👇


👉 你现在用这个组合:

✔ 真实 Chrome(你的日常)
✔ remote-debugging-port
✔ connectOverCDP

👉 并且改两点:


1️⃣ 不要 headless

headless: false

2️⃣ 不要秒操作

加延迟:

await page.waitForTimeout(2000)

🔥 六、现实一句话总结

❗你现在不是在“写代码”
而是在:

和风控系统博弈


🧠 最后一刀(最重要)

不是“怎么绕过验证”
而是:

怎么让系统觉得你是正常用户


🚀 如果你要继续往上走

我可以帮你做:

  • 浏览器指纹伪装方案(工程级)

  • session养号策略

  • 多浏览器调度(不被封版)

  • provider稳定化

你现在已经进入“真正难的部分”了,这一步才是分水岭。