做了什么:
- 删除 generate_telemetry_node/browser/probe 三个伪造环境后端, 以及 apply_real_environment、
4 段拼接旧结构、human_dt_ms、generate_collect_pure (crypto.py 955 -> 389 行)
- 遥测只剩纯算: python_keyed = Node 仅提取 XTEA 密钥字 + Python 模板回填 + 教科书 XTEA
- 修复 crypto.py 重复的 xtea_encrypt_block (内置自测从失败到通过), 并并入 selftest
- 修复 glyph_solver 强校验: 改用集成得分矩阵行 argmax 自洽校验, 回归 5/8 -> 8/8
- 移除注释里无证据的 errorCode=12 归因; 移除 12 自动换 IP 重试
- extract_eks 不再写死变量名; UA 常量统一为 Chrome/155
- 文档对齐: ANALYSIS §8 修订 / PROGRESS 重写 / TOOLCHAIN_REPORT §三 更正
为什么:
- 本项目证据账本已证: 12 与遥测后端/出口 IP/静默时长均无关, 补环境无收益且引入脆弱面
- 强校验用单引擎 ocr_text 会误杀正确解 (实测 簿->垂 / 笆->芭 / 筹->努)
怎么验证:
- .venv/bin/python -m tcaptcha.selftest 全绿 (crypto_core + glyph 8/8 + xtea_key)
- 端到端纯算: python / python_keyed 均可解回 '{"cd":[' 开头明文, probe 模式被拒绝
65 lines
1.8 KiB
Python
65 lines
1.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""Tencent Captcha Package
|
|
|
|
核心能力:
|
|
* TencentCaptchaClient —— 纯协议客户端 (prehandle/PoW/tdc.js/图片/verify/getsig)
|
|
* TextClickSolver —— 文字点选 (2404) 求解器: 颜色分割 + OCR 集成指派
|
|
* CaptchaSolver —— 图标点选 (2408) 求解器: YOLOv8 + ResNet18
|
|
* EnsembleOcr —— ddddocr + PP-OCRv4 概率级集成识别
|
|
* generate_telemetry(_node) —— collect/eks 遥测密文生成 (Node 沙箱执行真实 tdc.js)
|
|
* OneMsAdapter —— 毫秒 1ms.run 业务适配器
|
|
"""
|
|
|
|
from .client import (
|
|
KIND_ICON_CLICK,
|
|
KIND_SLIDER,
|
|
KIND_TEXT_CLICK,
|
|
Challenge,
|
|
TencentCaptchaClient,
|
|
classify_challenge,
|
|
)
|
|
from .crypto import (
|
|
encrypt_string,
|
|
extract_eks,
|
|
extract_xtea_key,
|
|
generate_collect_success,
|
|
generate_telemetry,
|
|
)
|
|
from .glyph_solver import Glyph, SolveResult, TextClickSolver, parse_instruction
|
|
from .ocr_engines import DdddOcrEngine, EnsembleOcr, PpOcrEngine
|
|
from .one_ms_adapter import OneMsAdapter
|
|
from .proxy import check_proxy, fetch_proxy, parse_proxies
|
|
from .slicer import slice_prompt_image
|
|
from .solver import CaptchaSolver
|
|
|
|
__all__ = [
|
|
# 协议客户端
|
|
"TencentCaptchaClient",
|
|
"Challenge",
|
|
"classify_challenge",
|
|
"KIND_TEXT_CLICK",
|
|
"KIND_ICON_CLICK",
|
|
"KIND_SLIDER",
|
|
# 求解器
|
|
"TextClickSolver",
|
|
"SolveResult",
|
|
"Glyph",
|
|
"parse_instruction",
|
|
"CaptchaSolver",
|
|
"slice_prompt_image",
|
|
"EnsembleOcr",
|
|
"DdddOcrEngine",
|
|
"PpOcrEngine",
|
|
# 遥测 / 加密 (纯算: 模板回填 + XTEA, Node 仅提取密钥)
|
|
"generate_collect_success",
|
|
"generate_telemetry",
|
|
"extract_eks",
|
|
"extract_xtea_key",
|
|
"encrypt_string",
|
|
# 业务适配 / 代理
|
|
"OneMsAdapter",
|
|
"fetch_proxy",
|
|
"parse_proxies",
|
|
"check_proxy",
|
|
]
|