fix(v2.1.1): 修复执行问题记录中的真实 bug + 文档对齐

源码修复(5 项):
1. search.py --time-range choices 加入 week(对齐 SearXNG API 四档)
2. fetch.py stdlib 路径处理 gzip/deflate 解压(被沙箱伪响应掩盖的真实 bug,
   无 requests 环境抓取压缩服务器会全页 U+FFFD 乱码)
3. search.py --research 模式实现跨角度合并去重,输出 merged_results 字段
   (兑现文档承诺 "Results are merged and deduplicated")
4. search.py fetch_page 返回 error_code 字段 + AdaptiveThrottle 用
   E_RATE_LIMIT 结构化检测 429(原字符串匹配 "429" 会漏判
   "Too Many Requests")
5. search.py _retry_with_backoff 复用 compute_backoff_delay(60s 封顶)
   + 处理 Retry-After header,与 fetch.py 保持一致

增强(3 项):
- common.py 精确化 baidu 子域列表(pan.baidu.com/cloud.baidu.com 不再误伤)
- search.py expand_research_queries 根据主题语言切换中英文后缀
- search.py 新增 _warn_unresponsive_engines,识别实例侧引擎挂起并提示

文档/版本:
- _config.py VERSION 2.1.0 → 2.1.1
- SKILL.md 同步更新(time-range week、merged_results、error_code、baidu 精确化)
- README.md 同步更新 + 测试数量 503 → 539

测试: 539 个全部通过,含 6 个新增验证测试
This commit is contained in:
2026-08-03 12:54:27 +08:00
parent e94cbe0783
commit 0c8fdc1e45
9 changed files with 257 additions and 41 deletions
+5 -3
View File
@@ -751,6 +751,7 @@ def build_wayback_url(url: str) -> str:
# 3. 列表按域名匹配(子域名也算命中)
HARD_BLOCKED_DOMAINS = frozenset([
"www.baidu.com", # 百度搜索:强反爬 + Cookie 检测
"baike.baidu.com", # 百度百科:强反爬 + Cookie 检测
"zhidao.baidu.com", # 百度知道:同上
"tieba.baidu.com", # 百度贴吧:同上
@@ -764,15 +765,16 @@ HARD_BLOCKED_DOMAINS = frozenset([
"www.douban.com", # 豆瓣主站
"book.douban.com", # 豆瓣读书
"movie.douban.com", # 豆瓣电影
"tieba.baidu.com", # 百度贴吧(重复,确保子域匹配)
])
# 部分域名需要子域匹配(如 *.zhihu.com, *.weibo.com, *.douban.com
# 需要子域匹配的域名(如 *.zhihu.com, *.weibo.com, *.douban.com
# 注意:baidu.com 不在此列——其反爬子域(www/baike/zhidao/wenku/tieba)已在
# 上方精确列表中,而 pan.baidu.com(网盘)/cloud.baidu.com(智能云)等
# 子域可正常抓取,整体匹配会误伤。zhihu/weibo/douban 的子域基本都被墙。
_SUBDOMAIN_BLOCKED = frozenset([
"zhihu.com",
"weibo.com",
"douban.com",
"baidu.com",
])