ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

从零实现hCaptcha视觉求解器:Gpt-Agreement-Payment三层决策架构揭秘

从零实现hCaptcha视觉求解器:Gpt-Agreement-Payment三层决策架构揭秘 从零实现hCaptcha视觉求解器Gpt-Agreement-Payment三层决策架构揭秘【免费下载链接】Gpt-Agreement-PaymentChatGPT Plus/Team/Pro 订阅协议端到端重放工具集 · hCaptcha 视觉求解器 · 反欺诈机制实证研究 / End-to-end protocol replay toolkit for ChatGPT Plus/Team/Pro subscription with from-scratch hCaptcha solver and empirical anti-fraud research项目地址: https://gitcode.com/gh_mirrors/gp/Gpt-Agreement-PaymentGpt-Agreement-Payment 是一个 ChatGPT Plus / Team / Pro 订阅协议的端到端重放工具集其中最硬核的组件是它从零实现的 hCaptcha 视觉求解器——一个约 4200 行的独立 solver不依赖任何打码平台用VLM 视觉大模型主路径 CLIP/OpenCV 启发式回退 Playwright 人类动作合成三层决策架构自动通过任意 hCaptcha 图形挑战题。本文带你完整拆解这套架构的设计思路与实现细节。 项目背景为什么需要 hCaptcha 视觉求解器Gpt-Agreement-Payment 覆盖Stripe Checkout → PayPal / GoPay / QRIS → ChatGPT 审批 → Codex OAuth PKCE整条订阅链路。在 Stripe 结算环节浏览器经常弹出 hCaptcha 图形挑战点选、拖拽类这是整条链路里最不稳定的一环。求解器的核心文件是 CTF-pay/captcha/solver.py旧路径 CTF-pay/hcaptcha_auto_solver.py 仍保留配套一个轻量桥接服务 CTF-pay/captcha/bridge.py。它的定位很清晰通用性对任意 hCaptcha bridge URL 生效不绑定 Stripe 单场景独立性ML 依赖CLIP/torch装在独立 venv因此由card.py通过 subprocess 拉起而非 import避免污染主环境可调试每一轮决策都会落盘截图 JSON 元数据方便逐题复盘。️ 三层决策架构总览整个求解流程是一个逐层降级 视觉反馈重试的状态机设计哲学一句话能用 VLM 就不用规则规则不匹配就交给执行器的重试环兜底。下面逐层拆解。 第 1 层VLM 决策——首选主路径VLM视觉语言模型层调用任何兼容 OpenAI/v1/chat/completions协议的端点把 challenge 截图、候选区域 overlay 和结构化 JSON 指令一起发给模型。它有两种工作模式候选框模式先用 OpenCV 提取候选点击/拖拽目标给每个候选框标注G1、G2、S1、T1等 ID 画到 overlay 图上VLM 只需从有限 ID 里选择输出如{action: click, selected_ids: [G1, G3]}或{action: drag, source_id: S1, target_id: T2}。把开放定位问题变成封闭选择题显著降低模型出错率。直出坐标模式当候选框提取失败图像布局非标准时自动降级VLM 直接返回归一化坐标如{action: click, coords: [[0.31, 0.42], [0.73, 0.41]]}。VLM 配置通过三个环境变量即可接入任意 OpenAI 兼容模型服务源码见 CTF-pay/captcha/solver.pyexport CTF_VLM_BASE_URLhttps://api.openai.com/v1 export CTF_VLM_API_KEYsk-... export CTF_VLM_MODELgpt-4o也支持--vlm-base-url/--vlm-api-key/--vlm-model命令行参数覆盖。VLM 超时或调用失败时流程自动滑向第 2 层不会卡死。 第 2 层CLIP / OpenCV 启发式 dispatcherVLM 不可用或失败时的回退路径按 prompt 关键词匹配题型路由到专用 solver。目前已覆盖12 种常见 hCaptcha 题型题型 prompt 关键词Solver 函数方法water travel/vehicle...watersolve_water_travel()CLIP 二分类3×3 grid 或 object 候选drag/complete the pairsolve_pair_drag()颜色聚类定位 source skeleton 匹配missing piece/complete the imagesolve_missing_pieces_drag()HSV 槽位检测 shape IoUfloat on watersolve_float_on_water()CLIP 二分类served hotsolve_hot_food()CLIP 二分类hop or jump/hoppingsolve_hop_animals()CLIP 滑窗 聚类 两阶段评分produce heat to worksolve_heat_work()CLIP 二分类shiny thingsolve_shiny_thing()CLIP 二分类单选kept outsidesolve_kept_outside()CLIP 二分类dissolve or meltsolve_dissolve_melt()CLIP 多标签分类hidden under the reference objectsolve_hidden_under_reference()边缘检测 连通组件complete the roadfinish linesolve_road_completion()边缘检测 连通组件候选区域提取采用两种互补策略按图像特征自动选择Grid 模式detect_label_grid针对标准 3×3 网格用行列像素方差/非白统计检测三个等分 band判定门槛是覆盖率 ≥ 72% 且均衡度 ≥ 55%Object 模式_build_object_candidates_generic非标准布局时回退用 Canny 边缘 连通组件 形态学去噪提取独立物体。️ 第 3 层Playwright 执行器答案只是坐标真正难的是像人一样点上去且不被检测到。执行层做了四件事1. 反检测通过init_script覆盖navigator.webdriver、navigator.platform、navigator.hardwareConcurrency等十余个指纹属性。2. 人类动作合成点击4 点 Bézier 曲线逼近鼠标轨迹 200–400ms 随机延迟拖拽3 段插值路径起/中/终点各加 jitter操作间停顿均值 800ms ± 300ms 的正态分布。3. 视觉反馈重试环每次交互后抓前后两帧计算changed_pixels与mean_diff两个指标判断点击是否落地。没落地就自动偏移重试——点击类按±10px / ±16px八方向 原点共 9 次拖拽类按5 starts × 5 ends 25种 jitter 组合。4. 多 raster 源 网络监听优先从 canvastoDataURL()拿原始位图canvas 空白图绘在 SVG 里时回退整页截图同时拦截hcaptcha.com域的/getcaptcha提取 prompt与/checkcaptcha提取 pass 状态响应元数据写入round_XX.json。 Variation 重试体系不赌单次答案solver 从不返回单一答案而是有序候选序列Click 类candidate_click_sets按 CLIP 置信度排序——先试强集全部置信度 ≥ 0.5再试中集≥ 0.3最后逐个单选提交Drag 类source jitter 五点 × target jitter 五点生成 25 种组合依次尝试图像哈希去重以(prompt, sha1(image_bytes))为 key 记录已耗尽的 variation同题重复出现时直接跳过失败方案。所有 variation 用尽后抛出drag_variations_exhausted/click_set_variations_exhausted异常见 CTF-pay/captcha/solver.py 的错误上报分支上层 daemon 接住后触发重跑当前轮而不是 solver 内无限重试——把重试责任按层级切分是这个架构的一大亮点。⚙️ 快速上手运行与调试 hCaptcha 求解器求解器可完全独立运行传入任意 bridge URL# 有头模式看着它干活 ~/.venvs/ctfml/bin/python CTF-pay/captcha/solver.py \ http://127.0.0.1:PORT/index.html --headed --timeout 300 # 关闭 VLM只跑启发式 ~/.venvs/ctfml/bin/python CTF-pay/captcha/solver.py \ http://127.0.0.1:PORT/index.html --no-vlm在完整 pipeline 中CTF-pay/card.pyshim背后的 card/_monolith.py 里的solve_stripe_hcaptcha_in_browser()会自动检测遇到非 invisible challenge 且未显式配置external_solver时自动补齐 solver 的 python 解释器、脚本路径、输出目录与 VLM 配置再通过 subprocess 拉起并自动抬高browser_challenge.timeout_ms防止外层超时误杀。solver 结果经本地 bridge 的/resultHTTP 端点回传。项目还附带一个本地 mock 网关 CTF-pay/relays/mock_gateway.py配合 CTF-pay/config.local-mock.json 可在无真实支付环境下演练整套流程。如果使用 Web UI配置向导的 Step 08/09打码 / VLM会把 VLM 端点写入CTF-pay/config.auto.json调试产物速查--out-dir默认/tmp/hcaptcha_auto_solver下每轮都会落盘文件含义round_XX.png每轮截图round_XX.json完整决策元数据prompt、候选框、VLM 响应、视觉反馈值checkcaptcha_pass_*.json通过那次的网络监听快照checkcaptcha_fail_*.json失败那次的快照session_meta_*.json整个会话元信息调试一道失败的题cat round_05.json | jq .就能看到 VLM 到底选了什么、坐标落在哪。 扩展新题型只需三步架构的开放性在于新增题型是纯增量开发写一个 prompt 匹配函数如is_carry_things_prompt写求解函数返回带candidate_click_sets的SolverResult在solve_bridge()的 dispatcherCTF-pay/captcha/solver.py加一个elif分支。官方建议每新增一种题型先攒 100–500 张该题型的round_XX.png截图找模式详见 docs/hcaptcha-solver.md 与 CONTRIBUTING.md。 总结Gpt-Agreement-Payment 的 hCaptcha 视觉求解器给出了一个可复用的解题系统范本VLM 优先把定位问题转成选择题/坐标题覆盖未知题型规则兜底12 种已知题型走专用 CLIP/OpenCV solver零 API 成本执行层拟人Bézier 轨迹 帧差视觉反馈 偏移重试环让坐标真的点中责任分层solver 耗尽 variation 就交棒给 daemon 重跑轮次任何一层失败都有出口。完整实现约 4200 行全部源码在 CTF-pay/captcha/ 目录下值得逐函数精读。【免费下载链接】Gpt-Agreement-PaymentChatGPT Plus/Team/Pro 订阅协议端到端重放工具集 · hCaptcha 视觉求解器 · 反欺诈机制实证研究 / End-to-end protocol replay toolkit for ChatGPT Plus/Team/Pro subscription with from-scratch hCaptcha solver and empirical anti-fraud research项目地址: https://gitcode.com/gh_mirrors/gp/Gpt-Agreement-Payment创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表