#!/usr/bin/env python3 """ 验证知乎 Cookie 配置 """ import json import os import sys # 添加 src 目录到 Python 路径 sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'src')) from sources.zhihu_drission_extractor import ZhihuDrissionExtractor def verify_cookie_config(): """验证 Cookie 配置""" print("=" * 60) print("知乎 Cookie 配置验证") print("=" * 60) print() # 1. 检查 Cookie 文件路径 cookie_file = os.path.expanduser('~/.obsidian-kb/zhihu_cookies.json') print(f"1. Cookie 文件路径") print(f" {cookie_file}") if os.path.exists(cookie_file): print(f" ✅ 文件存在") else: print(f" ❌ 文件不存在") print(f" 请上传 Cookie 文件到此路径") print() return False print() # 2. 检查 Cookie 文件格式 print(f"2. Cookie 文件格式") try: with open(cookie_file, 'r', encoding='utf-8') as f: cookies = json.load(f) print(f" ✅ JSON 格式正确") print(f" Cookie 数量: {len(cookies)}") except json.JSONDecodeError as e: print(f" ❌ JSON 格式错误: {e}") return False except Exception as e: print(f" ❌ 读取失败: {e}") return False print() # 3. 检查关键 Cookie print(f"3. 关键 Cookie 检查") cookie_names = [c['name'] for c in cookies] required_cookies = ['z_c0', 'd_c0'] for cookie_name in required_cookies: if cookie_name in cookie_names: cookie = next(c for c in cookies if c['name'] == cookie_name) value_preview = cookie['value'][:10] + '...' if len(cookie['value']) > 10 else cookie['value'] print(f" ✅ {cookie_name}: {value_preview}") else: print(f" ⚠️ {cookie_name}: 未找到(可能影响登录状态)") print() # 4. 检查配置文件 print(f"4. 配置文件检查") config_file = os.path.join(os.path.dirname(__file__), 'config.yaml') if os.path.exists(config_file): print(f" ✅ config.yaml 存在") with open(config_file, 'r') as f: content = f.read() if 'zhihu_cookies.json' in content: print(f" ✅ Cookie 路径已配置") else: print(f" ⚠️ Cookie 路径未找到(可能是使用了其他配置)") else: print(f" ❌ config.yaml 不存在") print() # 5. 测试提取器初始化 print(f"5. 提取器初始化测试") try: # 加载配置文件并传递给提取器 import yaml with open(config_file, 'r', encoding='utf-8') as f: full_config = yaml.safe_load(f) print(f" 配置文件: {config_file}") print(f" zhihu 配置: {full_config.get('zhihu', {})}") # 提取 zhihu 配置并传递 zhihu_config = full_config.get('zhihu', {}) extractor = ZhihuDrissionExtractor(config=zhihu_config) print(f" ✅ ZhihuDrissionExtractor 初始化成功") # 测试 Cookie 加载 loaded_cookies = extractor._load_cookies() print(f" ✅ 成功加载 {len(loaded_cookies)} 个 Cookie") if len(loaded_cookies) == 0: print(f" ⚠️ 未加载到 Cookie,将使用未登录状态访问") print(f" 这可能导致提取失败或内容不完整") except Exception as e: print(f" ❌ 初始化失败: {e}") return False print() print("=" * 60) print("✅ 配置验证完成!") print("=" * 60) print() # 6. 下一步建议 print("下一步:") print("1. 如果 Cookie 文件格式正确,可以直接开始提取") print("2. 建议先测试一个简单的知乎回答链接") print() print("示例命令:") print(" python3 -c \"from src.sources.zhihu_drission_extractor import ZhihuDrissionExtractor; print(ZhihuDrissionExtractor().extract('https://www.zhihu.com/question/266309957/answer/2003427891925509507')['title'])\"") return True if __name__ == '__main__': success = verify_cookie_config() sys.exit(0 if success else 1)