根本原因
1. **浏览器上下文复用**:当前的实现中,同一个浏览器实例(`CustomBrowser`)在切换账号时会复用同一个浏览器上下文(`BrowserContext`)。
2. **Cookie覆盖机制**:在 `cookie_manager.py` 的 `set_browser_cookies` 方法中:
这个方法会**直接添加新cookies到同一个浏览器上下文**,而不是替换。
3. **域名冲突**:由于都是小红书的cookies(同一个域名 `.xiaohongshu.com`),新的cookie会与旧的cookie产生冲突,导致:
- 相同名称的cookie被覆盖
- 认证状态混乱
- 原有账号的登录状态失效
具体流程问题
```
账号1登录 → 设置Cookie1到浏览器上下文 → 切换到账号2 → 设置Cookie2到同一个上下文
→ Cookie1和Cookie2混合存在 → 认证冲突 → 两个账号都可能失效
```
## 解决方案
### 方案1:为每个账号创建独立的浏览器上下文(推荐)
需要修改 `xiaohongshu_agent.py` 中的账号切换逻辑:
```python
async def switch_account(self, account_id: str) -> bool:
"""切换账号时创建新的浏览器上下文"""
try:
# 1. 清理当前浏览器上下文
if self.browser_context:
await self.browser_context.close()
self.browser_context = None
# 2. 更新cookie文件路径
if hasattr(self, 'account_manager') and self.account_manager:
new_cookie_file = self.account_manager.get_account_cookie_file(account_id)
if new_cookie_file:
self.cookie_file_path = new_cookie_file
else:
logger.error(f"账号 {account_id} 的Cookie文件不存在")
&n