Commit Graph

5 Commits

Author SHA1 Message Date
浅念 70e1355489 feat(site-import): 行为骨架模板与 few-shot 语料
- template/ 四件套:system/extractor/evaluator 骨架 + placeholders.json 占位符清单
  (system 15 个占位符,固定段与 jiancai 原文逐字一致——行级来源审计 0 缺失)
- fewshot/ 语料摘录:yotaienergys/televicsic 两生产租户四件套行业化片段
  (10592 字节 ≤18000 上限),README 含来源声明与数据治理记档
- tests/test_site_import_template.py:行业残留黑名单/占位符对称/红线锚点/
  行级来源/fewshot 尺寸与用途段守卫,7 条

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-20 19:35:08 +08:00
浅念 74c2915f25 fix(site-import): extract 清洗未闭合块/style 守卫/logo 日期钉位
评审收口三项:clean_html 配对块清理后兜底删 EOF 未闭合块(>500KB
截断防 script/style 泄漏误判 is_thin,顺序钉死配对先行);style 属性
正则补 \s 守卫(data-style 不参与配色计数);FIXTURE_WP 旧日期 logo
前置使日期优先真被甄别(首现即胜的伪绿不再成立)。

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-20 19:06:57 +08:00
浅念 00614876d8 feat(site-import): HTML 清洗与抽取纯函数
spec §3.1 Task 3:clean_html(去 script/style/nav/footer/header/注释 +
空白折叠 + 8K 截断)、extract_color(内联 style+CSS 合并计数,白黑灰
排除,平票首现)、extract_logo_url(/YYYY/MM/ 日期新者胜出)、
extract_contacts(wa.me 归一 E164 + mailto)、find_residue(模板残留
清单)、discover_links(同源绝对化去锚去询,关键词稳定排前)、is_thin。
零新依赖(stdlib regex),纯函数无 IO,15 测试钉位。

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-20 18:51:04 +08:00
浅念 2a2485fc07 fix(site-import): BLOCKED_NETS 补 v6 未指定/组播/保留段与 NAT64
- ::/128(v6 版 0.0.0.0,此前两层防线均放行)+ 224.0.0.0/4(组播)
  + 240.0.0.0/4(保留/广播,含 255.255.255.255)+ 64:ff9b::/96(NAT64)
  + 198.18.0.0/15(基准段)
- 测试 +9:六段参数化钉位、http://[::]/x URL 层拒绝、重定向协议切换
  (302→ftp://)第二跳拦截、DNS rebinding 端到端(真实 client 仅打桩
  getaddrinfo 返 10.x,证明连接层校验先于连接发生)

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-20 18:37:05 +08:00
浅念 9f556ebe95 feat(site-import): SSRF 连接层校验 fetch 原语
- ValidatingBackend:connect_tcp 处 anyio.getaddrinfo 解析→禁段校验→
  只连已验 IP 字面量(anyio 对 IP 字面量跳过 DNS,闭合 rebinding TOCTOU;
  TLS/SNI 由 httpcore 以原 hostname 包,证书校验不受影响)
- 双层防线:fetch URL 层预检(scheme/host/端口白名单+IP 字面量禁段)
  + 连接层逐跳 DNS 后校验;手动重定向 ≤5 跳每跳重校验
- 私有口(_pool 替换/AnyIOStream/异常映射)由版本探针测试钉位
- tests/test_safe_fetch.py 29 条:禁段参数化/连接层拒绝/重定向私网拦截/
  上限边界/请求真实路由经校验后端(anyio 层打桩离线全链路)

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-20 18:17:19 +08:00