响应头中缺少'Verifytype'字段导致无法爬取小红书
⚠️ 提交前确认
- [√ ] 我已经仔细阅读了项目使用过程中的常见问题汇总
- [√ ] 我已经搜索并查看了已关闭的issues
- [ √] 我确认这不是由于滑块验证码、Cookie过期、Cookie提取错误、平台风控等常见原因导致的问题
❓ 问题描述
爬取小红书遇到了无法爬取的问题,如果是未登录状态,登录后会报错退出。再次打开爬取会出现小红书账号已经登录,但是程序继续等待登录窗出现的问题。
🔍 使用场景
- 目标平台:小红书
- 使用功能:关键词搜索
💻 环境信息
- 操作系统: windows11
- Python版本: 3.14.0
- 是否使用IP代理: 否
- 是否使用VPN翻墙软件:否
- 目标平台(抖音/小红书/微博等): 小红书
📋 错误日志
PS E:\tools\MediaCrawler> uv run E:\tools\MediaCrawler\main.py
2025-11-24 15:04:01 MediaCrawler INFO (core.py:74) - [XiaoHongShuCrawler] 使用CDP模式启动浏览器
2025-11-24 15:04:06 MediaCrawler INFO (cdp_browser.py:142) - [CDPBrowserManager] 检测到浏览器: Google Chrome (Unknown Version)
2025-11-24 15:04:06 MediaCrawler INFO (cdp_browser.py:145) - [CDPBrowserManager] 浏览器路径: C:\Program Files\Google\Chrome\Application\chrome.exe
2025-11-24 15:04:06 MediaCrawler INFO (cdp_browser.py:185) - [CDPBrowserManager] 用户数据目录: E:\tools\MediaCrawler\browser_data\cdp_xhs_user_data_dir
2025-11-24 15:04:06 MediaCrawler INFO (browser_launcher.py:163) - [BrowserLauncher] 启动浏览器: C:\Program Files\Google\Chrome\Application\chrome.exe
2025-11-24 15:04:06 MediaCrawler INFO (browser_launcher.py:164) - [BrowserLauncher] 调试端口: 9222
2025-11-24 15:04:06 MediaCrawler INFO (browser_launcher.py:165) - [BrowserLauncher] 无头模式: False
2025-11-24 15:04:06 MediaCrawler INFO (browser_launcher.py:195) - [BrowserLauncher] 等待浏览器在端口 9222 上准备就绪...
2025-11-24 15:04:07 MediaCrawler INFO (browser_launcher.py:204) - [BrowserLauncher] 浏览器已在端口 9222 上准备就绪
2025-11-24 15:04:08 MediaCrawler INFO (cdp_browser.py:159) - [CDPBrowserManager] CDP端口 9222 可访问
2025-11-24 15:04:08 MediaCrawler INFO (cdp_browser.py:78) - [CDPBrowserManager] 清理处理器已注册
2025-11-24 15:04:08 MediaCrawler INFO (cdp_browser.py:223) - [CDPBrowserManager] 获取到浏览器WebSocket URL: ws://localhost:9222/devtools/browser/87681267-8d29-4f86-b019-77ef721d6d47
2025-11-24 15:04:08 MediaCrawler INFO (cdp_browser.py:242) - [CDPBrowserManager] 正在通过CDP连接到浏览器: ws://localhost:9222/devtools/browser/87681267-8d29-4f86-b019-77ef721d6d47
2025-11-24 15:04:09 MediaCrawler INFO (cdp_browser.py:248) - [CDPBrowserManager] 成功连接到浏览器
2025-11-24 15:04:09 MediaCrawler INFO (cdp_browser.py:249) - [CDPBrowserManager] 浏览器上下文数量: 1
2025-11-24 15:04:09 MediaCrawler INFO (cdp_browser.py:274) - [CDPBrowserManager] 使用现有的浏览器上下文
2025-11-24 15:04:09 MediaCrawler INFO (core.py:437) - [XiaoHongShuCrawler] CDP浏览器信息: {'version': '142.0.7444.163', 'contexts_count': 1, 'debug_port': 9222, 'is_connected': True}
2025-11-24 15:04:11 MediaCrawler INFO (core.py:359) - [XiaoHongShuCrawler.create_xhs_client] Begin create xiaohongshu API client ...
2025-11-24 15:04:11 MediaCrawler INFO (client.py:230) - [XiaoHongShuClient.pong] Begin to pong xhs...
2025-11-24 15:04:15 MediaCrawler ERROR (client.py:237) - [XiaoHongShuClient.pong] Ping xhs failed: RetryError[<Future at 0x14c5abbd350 state=finished raised DataFetchError>], and try to login again...
2025-11-24 15:04:15 MediaCrawler INFO (login.py:71) - [XiaoHongShuLogin.begin] Begin login xiaohongshu ...
2025-11-24 15:04:15 MediaCrawler INFO (login.py:151) - [XiaoHongShuLogin.login_by_qrcode] Begin login xiaohongshu by qrcode ...
2025-11-24 15:04:16 MediaCrawler INFO (login.py:184) - [XiaoHongShuLogin.login_by_qrcode] waiting for scan code login, remaining time is 120s
2025-11-24 15:04:31 MediaCrawler INFO (login.py:192) - [XiaoHongShuLogin.login_by_qrcode] Login successful then wait for 5 seconds redirect ...
2025-11-24 15:04:36 MediaCrawler INFO (core.py:127) - [XiaoHongShuCrawler.search] Begin search xiaohongshu keywords
2025-11-24 15:04:36 MediaCrawler INFO (core.py:134) - [XiaoHongShuCrawler.search] Current search keyword: 河北冬季旅游线路推荐
2025-11-24 15:04:36 MediaCrawler INFO (core.py:144) - [XiaoHongShuCrawler.search] search xhs keyword: 河北冬季旅游线路推荐, page: 1
2025-11-24 15:04:39 MediaCrawler INFO (cdp_browser.py:374) - [CDPBrowserManager] 浏览器连接已断开
2025-11-24 15:04:39 MediaCrawler INFO (browser_launcher.py:255) - [BrowserLauncher] 正在关闭浏览器进程...
2025-11-24 15:04:39 MediaCrawler INFO (browser_launcher.py:285) - [BrowserLauncher] 浏览器进程已关闭
Traceback (most recent call last):
File "E:\tools\MediaCrawler\.venv\Lib\site-packages\tenacity\_asyncio.py", line 50, in __call__
result = await fn(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\tools\MediaCrawler\media_platform\xhs\client.py", line 142, in request
verify_type = response.headers["Verifytype"]
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
File "E:\tools\MediaCrawler\.venv\Lib\site-packages\httpx\_models.py", line 302, in __getitem__
raise KeyError(key)
KeyError: 'Verifytype'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "E:\tools\MediaCrawler\main.py", line 154, in <module>
asyncio.get_event_loop().run_until_complete(main())
File "C:\Users\Lenovo\AppData\Roaming\uv\python\cpython-3.11.14-windows-x86_64-none\Lib\asyncio\base_events.py", line 654, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "E:\tools\MediaCrawler\main.py", line 85, in main
await crawler.start()
File "E:\tools\MediaCrawler\media_platform\xhs\core.py", line 113, in start
await self.search()
File "E:\tools\MediaCrawler\media_platform\xhs\core.py", line 147, in search
notes_res = await self.xhs_client.get_note_by_keyword(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\tools\MediaCrawler\media_platform\xhs\client.py", line 286, in get_note_by_keyword
return await self.post(uri, data)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\tools\MediaCrawler\media_platform\xhs\client.py", line 195, in post
return await self.request(
^^^^^^^^^^^^^^^^^^^
File "E:\tools\MediaCrawler\.venv\Lib\site-packages\tenacity\_asyncio.py", line 88, in async_wrapped
return await fn(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\tools\MediaCrawler\.venv\Lib\site-packages\tenacity\_asyncio.py", line 47, in __call__
do = self.iter(retry_state=retry_state)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\tools\MediaCrawler\.venv\Lib\site-packages\tenacity\__init__.py", line 326, in iter
raise retry_exc from fut.exception()
tenacity.RetryError: RetryError[<Future at 0x14c5ac45d90 state=finished raised KeyError>]
📷 错误截图
出现滑块验证了
出现滑块验证了
并不是,我打开的浏览器界面并没有发现滑块验证。
出现滑块验证了
并不是,我打开的浏览器界面并没有发现滑块验证。
接口触发验证了,可能xhs又更新风控了,待处理,从下面的逻辑看就是的
https://github.com/NanmiCoder/MediaCrawler/blob/1da347cbf813ae288baeec2683eee71cbc4cc37a/media_platform/xhs/client.py#L140-L146
出现滑块验证了
出现上面的问题后,我重新运行。能保留登录状态,但是为什么程序还是要求登录啊?
PS E:\tools\MediaCrawler> uv run main.py 2025-11-24 15:45:25 MediaCrawler INFO (core.py:74) - [XiaoHongShuCrawler] 使用CDP模式启动浏览器 2025-11-24 15:45:30 MediaCrawler INFO (cdp_browser.py:142) - [CDPBrowserManager] 检测到浏览器: Google Chrome (Unknown Version) 2025-11-24 15:45:30 MediaCrawler INFO (cdp_browser.py:145) - [CDPBrowserManager] 浏览器路径: C:\Program Files\Google\Chrome\Application\chrome.exe 2025-11-24 15:45:30 MediaCrawler INFO (cdp_browser.py:185) - [CDPBrowserManager] 用户数据目录: E:\tools\MediaCrawler\browser_data\cdp_xhs_user_data_dir 2025-11-24 15:45:30 MediaCrawler INFO (browser_launcher.py:163) - [BrowserLauncher] 启动浏览器: C:\Program Files\Google\Chrome\Application\chrome.exe 2025-11-24 15:45:30 MediaCrawler INFO (browser_launcher.py:164) - [BrowserLauncher] 调试端口: 9222 2025-11-24 15:45:30 MediaCrawler INFO (browser_launcher.py:165) - [BrowserLauncher] 无头模式: False 2025-11-24 15:45:30 MediaCrawler INFO (browser_launcher.py:195) - [BrowserLauncher] 等待浏览器在端口 9222 上准备就绪... 2025-11-24 15:45:30 MediaCrawler INFO (browser_launcher.py:204) - [BrowserLauncher] 浏览器已在端口 9222 上准备就绪 2025-11-24 15:45:31 MediaCrawler INFO (cdp_browser.py:159) - [CDPBrowserManager] CDP端口 9222 可访问 2025-11-24 15:45:31 MediaCrawler INFO (cdp_browser.py:78) - [CDPBrowserManager] 清理处理器已注册 2025-11-24 15:45:32 MediaCrawler INFO (cdp_browser.py:223) - [CDPBrowserManager] 获取到浏览器WebSocket URL: ws://localhost:9222/devtools/browser/87d60bc8-13cf-42bf-8fac-3c3809a4f9a1 2025-11-24 15:45:32 MediaCrawler INFO (cdp_browser.py:242) - [CDPBrowserManager] 正在通过CDP连接到浏览器: ws://localhost:9222/devtools/browser/87d60bc8-13cf-42bf-8fac-3c3809a4f9a1 2025-11-24 15:45:32 MediaCrawler INFO (cdp_browser.py:248) - [CDPBrowserManager] 成功连接到浏览器 2025-11-24 15:45:32 MediaCrawler INFO (cdp_browser.py:249) - [CDPBrowserManager] 浏览器上下文数量: 1 2025-11-24 15:45:32 MediaCrawler INFO (cdp_browser.py:274) - [CDPBrowserManager] 使用现有的浏览器上下文 2025-11-24 15:45:32 MediaCrawler INFO (core.py:437) - [XiaoHongShuCrawler] CDP浏览器信息: {'version': '142.0.7444.163', 'contexts_count': 1, 'debug_port': 9222, 'is_connected': True} 2025-11-24 15:45:35 MediaCrawler INFO (core.py:359) - [XiaoHongShuCrawler.create_xhs_client] Begin create xiaohongshu API client ... 2025-11-24 15:45:35 MediaCrawler INFO (client.py:230) - [XiaoHongShuClient.pong] Begin to pong xhs... 2025-11-24 15:45:37 MediaCrawler ERROR (client.py:237) - [XiaoHongShuClient.pong] Ping xhs failed: RetryError[<Future at 0x23866cd9ad0 state=finished raised KeyError>], and try to login again... 2025-11-24 15:45:37 MediaCrawler INFO (login.py:71) - [XiaoHongShuLogin.begin] Begin login xiaohongshu ... 2025-11-24 15:45:37 MediaCrawler INFO (login.py:151) - [XiaoHongShuLogin.login_by_qrcode] Begin login xiaohongshu by qrcode ... Page.wait_for_selector: Timeout 30000ms exceeded. Call log: waiting for locator("//img[@class='qrcode-img']") to be visible
2025-11-24 15:46:07 MediaCrawler INFO (login.py:160) - [XiaoHongShuLogin.login_by_qrcode] login failed , have not found qrcode please check ....
2025-11-24 15:46:38 MediaCrawler INFO (cdp_browser.py:374) - [CDPBrowserManager] 浏览器连接已断开
2025-11-24 15:46:38 MediaCrawler INFO (browser_launcher.py:255) - [BrowserLauncher] 正在关闭浏览器进程...
2025-11-24 15:46:38 MediaCrawler INFO (browser_launcher.py:285) - [BrowserLauncher] 浏览器进程已关闭
Traceback (most recent call last):
File "E:\tools\MediaCrawler\main.py", line 154, in
出现滑块验证了
出现上面的问题后,我重新运行。能保留登录状态,但是为什么程序还是要求登录啊?
出现验证之后就会直接踢你下线的 不要跑了 现在有问题了
出现滑块验证了
出现上面的问题后,我重新运行。能保留登录状态,但是为什么程序还是要求登录啊?
出现验证之后就会直接踢你下线的 不要跑了 现在有问题了
过段时间小红书的风控能好吗?还是我可以换一个账号试试,上午还能正常跑,我就是换了一个账号后出的问题。
不用换账号了,js签名不行了,修复会通知的
不用换账号了,js签名不行了,修复会通知的
好的,感谢大佬。
同样遇到了这个问题
遇到这个问题+1
使用了最新的xhshow之后,搜索接口已经恢复,但是其他接口仍不可使用。
使用了最新的xhshow之后,搜索接口已经恢复,但是其他接口仍不可使用。
最新的xhshow是0.1.3?为啥我这还是不行
使用了最新的xhshow之后,搜索接口已经恢复,但是其他接口仍不可使用。
问题已经能解决了?
使用了最新的xhshow之后,搜索接口已经恢复,但是其他接口仍不可使用。
最新的xhshow是0.1.3?为啥我这还是不行
参考这个:https://github.com/Cloxl/xhshow/issues/64
使用了最新的xhshow之后,搜索接口已经恢复,但是其他接口仍不可使用。
问题已经能解决了?
还没有。只有搜索的接口可用,其他的几个接口不可用。参考:https://github.com/Cloxl/xhshow/issues/64
fix/xhs-sign-20251127 这个分支更新了一个版本,搜索接口 帖子详情接口 一级评论接口可以用,二级评论和创作者还是不行,有需要的可以切换到这个分支
fix/xhs-sign-20251127 这个分支更新了一个版本,搜索接口 帖子详情接口 一级评论接口可以用,二级评论和创作者还是不行,有需要的可以切换到这个分支
还是先合到main分支了,后续看看能不能修复这个问题,如果感兴趣的也可以去看看那里有问题,我也比较好奇为啥通过浏览器 window.mnsv2这个函数去获取二级评论和创作者主页的接口有问题
fix/xhs-sign-20251127 这个分支更新了一个版本,搜索接口 帖子详情接口 一级评论接口可以用,二级评论和创作者还是不行,有需要的可以切换到这个分支
还是先合到main分支了,后续看看能不能修复这个问题,如果感兴趣的也可以去看看那里有问题,我也比较好奇为啥通过浏览器
window.mnsv2这个函数去获取二级评论和创作者主页的接口有问题
好的感谢大佬
fix/xhs-sign-20251127 这个分支更新了一个版本,搜索接口 帖子详情接口 一级评论接口可以用,二级评论和创作者还是不行,有需要的可以切换到这个分支
还是先合到main分支了,后续看看能不能修复这个问题,如果感兴趣的也可以去看看那里有问题,我也比较好奇为啥通过浏览器
window.mnsv2这个函数去获取二级评论和创作者主页的接口有问题
你好,我想请问下为什么之前CDP 模式正常能用,最近CDP 模式几个平台都用不了了,我拉取了最新的版本CDP 模式还是启动失败
fix/xhs-sign-20251127 这个分支更新了一个版本,搜索接口 帖子详情接口 一级评论接口可以用,二级评论和创作者还是不行,有需要的可以切换到这个分支
还是先合到main分支了,后续看看能不能修复这个问题,如果感兴趣的也可以去看看那里有问题,我也比较好奇为啥通过浏览器
window.mnsv2这个函数去获取二级评论和创作者主页的接口有问题你好,我想请问下为什么之前CDP 模式正常能用,最近CDP 模式几个平台都用不了了,我拉取了最新的版本CDP 模式还是启动失败
![]()
看样子好像是 websocket 没连上,我本地没有出现你这个问题,你是有梯子这些代理网络了吗?
该问题已修复,GET请求编码问题,使用playwright去调用sign的方法还是可以
具体代码修改的细节: https://github.com/NanmiCoder/MediaCrawler/pull/793