""" 测试两种 Cookie 格式支持 """ import asyncio import json from xhs_publish import XHSPublishService # 格式1: Playwright 完整格式(从文件读取) playwright_cookies = [ { "name": "a1", "value": "19b11d16e24t3h3xmlvojbrw1cr55xwamiacluw3c50000231766", "domain": ".xiaohongshu.com", "path": "/", "expires": 1797066496, "httpOnly": False, "secure": False, "sameSite": "Lax" }, { "name": "web_session", "value": "030037ae088f0acf2c81329d432e4a12fcb0ca", "domain": ".xiaohongshu.com", "path": "/", "expires": 1797066497.112584, "httpOnly": True, "secure": True, "sameSite": "Lax" } ] # 格式2: 键值对格式(从数据库读取) keyvalue_cookies = { "a1": "19b11d16e24t3h3xmlvojbrw1cr55xwamiacluw3c50000231766", "abRequestId": "b273b4d0-3ef7-5b8f-bba4-2d19e63ad883", "acw_tc": "0a4ae09717655304937202738e4b75c08d6eb78f2c8d30d7dc5a465429e1e6", "gid": "yjDyyfyKiD6DyjDyyfyKd37EJ49qxqC61hlV0qSDFEySFS2822CE01888JqyWKK8Djdi8d2j", "loadts": "1765530496548", "sec_poison_id": "a589e333-c364-477c-9d14-53af8a1e7f1c", "unread": "{%22ub%22:%22648455690000000014025d90%22%2C%22ue%22:%2264b34737000000002f0262f9%22%2C%22uc%22:22}", "webBuild": "5.0.6", "webId": "fdf2dccee4bec7534aff5581310c0e26", "web_session": "030037ae088f0acf2c81329d432e4a12fcb0ca", "websectiga": "984412fef754c018e472127b8effd174be8a5d51061c991aadd200c69a2801d6", "xsecappid": "xhs-pc-web" } async def test_playwright_format(): """测试 Playwright 格式""" print("="*60) print("测试 1: Playwright 格式(完整格式)") print("="*60) try: publisher = XHSPublishService(playwright_cookies) print("✅ 初始化成功") print(f" 转换后的 Cookie 数量: {len(publisher.cookies)}") return True except Exception as e: print(f"❌ 初始化失败: {e}") return False async def test_keyvalue_format(): """测试键值对格式""" print("\n" + "="*60) print("测试 2: 键值对格式(数据库格式)") print("="*60) try: publisher = XHSPublishService(keyvalue_cookies) print("✅ 初始化成功") print(f" 转换后的 Cookie 数量: {len(publisher.cookies)}") # 显示转换后的一个示例 print("\n转换示例(第一个 Cookie):") print(json.dumps(publisher.cookies[0], ensure_ascii=False, indent=2)) return True except Exception as e: print(f"❌ 初始化失败: {e}") return False async def test_from_file(): """从文件读取测试""" print("\n" + "="*60) print("测试 3: 从 cookies.json 文件读取") print("="*60) try: with open('cookies.json', 'r', encoding='utf-8') as f: cookies = json.load(f) publisher = XHSPublishService(cookies) print("✅ 初始化成功") print(f" Cookie 数量: {len(publisher.cookies)}") return True except FileNotFoundError: print("⚠️ cookies.json 文件不存在,跳过此测试") return None except Exception as e: print(f"❌ 初始化失败: {e}") return False async def main(): print("\n🧪 Cookie 格式兼容性测试\n") # 测试1: Playwright格式 result1 = await test_playwright_format() # 测试2: 键值对格式 result2 = await test_keyvalue_format() # 测试3: 从文件读取 result3 = await test_from_file() # 总结 print("\n" + "="*60) print("测试总结") print("="*60) print(f"Playwright 格式: {'✅ 通过' if result1 else '❌ 失败'}") print(f"键值对格式: {'✅ 通过' if result2 else '❌ 失败'}") if result3 is not None: print(f"文件读取: {'✅ 通过' if result3 else '❌ 失败'}") else: print(f"文件读取: ⚠️ 跳过") if result1 and result2: print("\n🎉 所有格式测试通过!") print("\n💡 使用说明:") print(" - 从 Python 脚本保存的 cookies.json → Playwright 格式") print(" - 从数据库读取的 Cookie → 键值对格式") print(" - 两种格式都可以正常使用!") else: print("\n⚠️ 部分测试失败") if __name__ == "__main__": asyncio.run(main())