Files
hello_js_reverse_skill/tcaptcha/__init__.py
T
yml2213 344eea2194 refactor(结构): 分层重组 + 清除全部废弃路线
做了什么:
- 包改为分层: tcaptcha/{protocol,telemetry,solvers,ocr,adapters,models,tests}
  * protocol/  client.py  transport.py  proxy.py
  * telemetry/ crypto.py  values.py  key.py  opcodes.py
               disasm.py  program.py  layout.py  modules.py
  * solvers/   text_click.py  icon_click.py  icon_click_rotate.py  slider.py
  * ocr/       engines.py  slicer.py
  * adapters/  one_ms.py
- tools/ 里原本是**包运行时依赖**的 tdc_{disasm,program,layout,modules}.py 并入 telemetry/
  (放在 tools/ 属于分层倒置),tools/ 只留 CLI: tdc_key_pure.py / tdc_profile.py / cdp_*.js
- crypto.py 529 -> 340 行: 切除「成功样本模板回填」与「Node 插桩兜底」两条老路;
  generate_telemetry 只剩 python_values 一种模式,传别的会直接报错并说明原因
- 求解器改名分清: solver.py -> solvers/icon_click.py(client 实际在用的 YOLO+ResNet18 ONNX),
  icon_click_solver.py -> solvers/icon_click_rotate.py(仅测试在用,留作对照)
- pyproject: 去掉 ultralytics/onnx(训练栈已删),补上真正在用的 onnxruntime

删除了什么:
- 雨云整条线 + dist/rainyun_qinglong(104M 旧快照)
- 模板回填: models/success_collect_template.b64、tdc_worker.js、analyze_collect_layout.py
- 「补环境」时代浏览器 JS: chrome_fetch/manual_captcha/probe_captcha/solve_in_browser/tdc_browser
- 旧 VM 探索工具 10 个(tdc_collectgen/tdc_slotmap/tdc_lift/tdc_vm_run/tdc_query/tdc_probe 等)
  + 8 个基于它们的旧 verify 脚本
- 训练/标注/评估: train_classifier/train_detector/prepare_yolo/web_labeler/collector/
  siamese/evaluate/benchmark_verify
- tcaptcha/core_js/(60 个分析产物)、TOOLCHAIN_REPORT.md(整篇在描述已删工具)
- 3 个已无任何引用的 PyTorch 权重:icon_classifier.pt 43M / yolo_detector.pt 5.9M /
  siamese_matcher.pt 1.6M —— 线上只跑 onnx,tcaptcha/ 117M -> 66M

为什么:
- 项目后面要专门承载「滑块 / 文字点选 / 图标点选」三种求解器;扁平包 + 运行时依赖混在
  tools/ + 两条已废弃的 collect 生成路线,会让后续扩展持续踩坑

怎么验证:
- .venv/bin/python -m tcaptcha.selftest                    全绿
- scripts/verify/verify_offline.py                         逐槽全等 + 分段几何一致
- scripts/verify/verify_values.py                          4 份真机明文 152/152 逐槽全等
- scripts/verify/send_test.py --mode python_values         1ms 签到页文字点选 errorCode=0
- 回滚点: tag backup/pre-refactor-20261012
2026-10-12 12:34:57 +08:00

90 lines
2.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- coding: utf-8 -*-
"""Tencent Captcha —— 纯算还原 + 视觉求解。
分层(详见各子包 docstring):
* protocol/ TencentCaptchaClient —— prehandle / PoW / tdc.js / 题目图片 / verify
* telemetry/ collect 的**纯离线**生成(37 语义名 -> 38 槽 -> 4 段 XTEA)+ 密钥静态还原
* solvers/ 文字点选 / 图标点选 / 滑块 求解器
* ocr/ ddddocr + PP-OCRv4 集成识别、提示图切分
* adapters/ 站点业务适配(1ms.run)
"""
# ---- 协议层 ----
from .protocol.client import (
KIND_ICON_CLICK,
KIND_SLIDER,
KIND_TEXT_CLICK,
Challenge,
TencentCaptchaClient,
classify_challenge,
)
from .protocol.proxy import check_proxy, fetch_proxy, parse_proxies
# ---- 遥测层(纯算:零 Node、零真机明文)----
from .telemetry.crypto import (
build_collect,
encrypt_string,
extract_eks,
extract_xtea_key,
generate_telemetry,
split_collect_segments,
)
from .telemetry.key import extract_xtea_key_pure
from .telemetry.values import (
DEVICE_PROFILE,
Session,
generate_cd,
generate_collect,
trajectory_points,
)
# ---- 求解器层 ----
from .solvers.icon_click import CaptchaSolver
from .solvers.slider import SliderSolver
from .solvers.text_click import Glyph, SolveResult, TextClickSolver, parse_instruction
# ---- 识别基座 / 业务适配 ----
from .ocr.engines import DdddOcrEngine, EnsembleOcr, PpOcrEngine
from .ocr.slicer import slice_prompt_image
from .adapters.one_ms import OneMsAdapter
__all__ = [
# 协议客户端
"TencentCaptchaClient",
"Challenge",
"classify_challenge",
"KIND_TEXT_CLICK",
"KIND_ICON_CLICK",
"KIND_SLIDER",
# 求解器
"TextClickSolver",
"SolveResult",
"Glyph",
"parse_instruction",
"CaptchaSolver",
"SliderSolver",
# 识别基座
"slice_prompt_image",
"EnsembleOcr",
"DdddOcrEngine",
"PpOcrEngine",
# 遥测 / 加密(纯算)
"generate_telemetry",
"generate_collect",
"generate_cd",
"Session",
"DEVICE_PROFILE",
"trajectory_points",
"build_collect",
"split_collect_segments",
"extract_eks",
"extract_xtea_key",
"extract_xtea_key_pure",
"encrypt_string",
# 业务适配 / 代理
"OneMsAdapter",
"fetch_proxy",
"parse_proxies",
"check_proxy",
]