# 常见程序运行出错问题

## 缺少node环境导致的问题
Q: 爬取抖音和知乎报错: `execjs._exceptions.ProgramError: SyntaxError: 缺少 ';'` <br>
A: 该错误为缺少 nodejs 环境，这个错误可以通过安装 nodejs 环境来解决，版本大于等：`v16` <br>

Q: 使用Cookie爬取抖音报错: execjs._exceptions.ProgramError: TypeError: Cannot read property 'JS_MD5_NO_COMMON_JS' of null
A: windows电脑去网站下载`https://nodejs.org/en/blog/release/v16.8.0` Windows 64-bit Installer 版本，一直下一步即可。

## xhs登录出现滑块一直验证不通过问题

Q: 小红书扫码登录成功后，浏览器一直在验证滑块，无法登录？<br>
A: 小红书平台风控非常严格，**强烈建议使用 CDP 模式连接自己的真实浏览器**（默认配置），不要使用无痕浏览器或标准 Playwright 模式。连接真实浏览器可以复用已有的 Cookie、登录状态和浏览历史，大幅降低被风控检测的概率。如果仍然出现滑块问题，可以尝试删除项目目录下的`brower_data`文件夹，重新走登录流程。<br>

## 如何指定关键词
Q: 可以指定关键词爬取吗？<br>
A: 在config/base_config.py 中 KEYWORDS 参数用于控制需要爬取的关键词 <br>

## 如何指定帖子
Q: 可以指定帖子爬取吗？<br>
A：在config/base_config.py 中 XHS_SPECIFIED_ID_LIST 参数用于控制需要指定爬取的帖子ID列表 <br>

## 爬取失效
Q: 刚开始能爬取数据，过一段时间就是失效了？<br>
A：出现这种情况多半是由于你的账号触发了平台风控机制了，❗️❗️请勿大规模对平台进行爬虫，影响平台。<br>

## 如何更换另一个账号
Q: 如何更换登录账号？<br>
A：删除项目根目录下的 brower_data/ 文件夹即可 <br>

## playwright超时问题
Q: 报错 `playwright._impl._api_types.TimeoutError: Timeout 30000ms exceeded.`<br>
A: 出现这种情况检查下开梯子没有<br>

## 如果配置playwright浏览器驱动过滑块验证
Q: 小红书扫码登录成功后如何手动验证?
A: 打开 config/base_config.py 文件, 找到 HEADLESS 配置项, 将其设置为 False, 此时重启项目, 在浏览器中手动通过验证码<br>

## 词云图生成
Q: 如何配置词云图的生成?
A: 打开 config/base_config.py 文件, 找到`ENABLE_GET_WORDCLOUD` 以及`ENABLE_GET_COMMENTS` 两个配置项，将其都设为True即可使用该功能。<br>

## 词云图添加禁用词和自定义词组
Q: 如何给词云图添加禁用词和自定义词组？
A: 打开 `docs/hit_stopwords.txt` 输入禁用词(注意一个词语一行)。打开 config/base_config.py 文件找到 `CUSTOM_WORDS `按格式添加自定义词组即可。<br>

## CDP 连接已有浏览器相关问题

Q: 运行爬虫后提示无法连接到浏览器，报错 `Cannot connect to existing browser on port 9222`？<br>
A: 请检查以下几点：<br>
1. 确保 Chrome 浏览器已经打开并正在运行<br>
2. 在 Chrome 地址栏输入 `chrome://inspect/#remote-debugging`，确保已勾选 **"Allow remote debugging for this browser instance"**<br>
3. 页面上应显示 `Server running at: 127.0.0.1:9222`，如果没有显示说明远程调试未成功开启<br>
4. 确保 Chrome 版本 >= 144，低版本不支持此功能，在地址栏输入 `chrome://version` 查看版本号<br>

Q: 运行爬虫后浏览器弹出了确认对话框，需要怎么操作？<br>
A: 这是正常行为。Chrome 连接已有浏览器时会弹出确认对话框，点击"接受"即可。程序会等待用户确认，默认超时时间为60秒，在此期间点击确认即可。<br>

Q: 不想连接已有浏览器，想让程序自动启动一个新的浏览器怎么办？<br>
A: 在 `config/base_config.py` 中设置 `CDP_CONNECT_EXISTING = False`，程序会自动检测并启动一个新的 Chrome/Edge 浏览器实例。<br>

Q: 为什么推荐连接已有浏览器而不是启动新浏览器？<br>
A: 连接已有浏览器可以直接复用你浏览器中真实的 Cookie、登录状态、扩展插件和浏览历史，平台很难区分这是自动化操作还是真实用户行为，**大幅降低被平台风控检测的风险**。而启动新浏览器是一个"干净"的环境，更容易被平台识别为爬虫。<br>
