File size: 3,654 Bytes
1766992 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | # 故障排除指南
## 403 Access Denied 错误
### 问题描述
在使用一段时间后,服务突然开始返回 `403 Access Denied` 错误:
```
ERRO[0131] Cursor API returned non-OK status status_code=403
ERRO[0131] Failed to create chat completion error="{\"error\":\"Access denied\"}"
```
### 原因分析
1. **Token 过期**: `x-is-human` token 缓存时间过长,导致 token 失效
2. **频率限制**: 短时间内发送过多请求触发了 Cursor API 的速率限制
3. **重复 Token**: 使用相同的 token 进行多次请求被识别为异常行为
### 解决方案
#### 1. 已实施的自动修复
最新版本已经包含以下改进:
- **动态浏览器指纹**: 每次请求使用真实且随机的浏览器指纹信息
- 根据操作系统自动选择合适的平台配置 (Windows/macOS/Linux)
- 随机 Chrome 版本 (120-130)
- 随机语言设置和 Referer
- 真实的 User-Agent 和 sec-ch-ua headers
- **缩短缓存时间**: 将 `x-is-human` token 缓存时间从 30 分钟缩短到 1 分钟
- **自动重试机制**: 遇到 403 错误时自动清除缓存并重试(最多 2 次)
- **指纹刷新**: 403 错误时自动刷新浏览器指纹配置
- **错误恢复**: 失败时自动清除缓存,确保下次请求使用新 token
- **指数退避**: 重试时使用递增的等待时间
#### 2. 手动解决步骤
如果问题持续存在:
1. **重启服务**:
```bash
# 停止当前服务 (Ctrl+C)
# 重新启动
./cursor2api-go
```
2. **检查日志**:
查看是否有以下日志:
- `Received 403 Access Denied, clearing token cache and retrying...` - 自动重试
- `Failed to fetch x-is-human token` - Token 获取失败
- `Fetched x-is-human token` - Token 获取成功
3. **等待冷却期**:
如果频繁遇到 403 错误,建议等待 5-10 分钟后再使用
4. **检查网络**:
确保能够访问 `https://cursor.com`
#### 3. 预防措施
1. **控制请求频率**: 避免在短时间内发送大量请求
2. **监控日志**: 注意 `x-is-human token` 的获取频率
3. **合理配置超时**: 在 `.env` 文件中设置合理的超时时间
### 配置建议
在 `.env` 文件中:
```bash
TIMEOUT=120 # 增加超时时间,避免频繁重试
MAX_INPUT_LENGTH=100000 # 限制输入长度,减少请求大小
```
### 调试模式
如果需要查看详细的调试信息,可以启用调试模式:
```bash
# 方式 1: 修改 .env 文件
DEBUG=true
# 方式 2: 使用环境变量
DEBUG=true ./cursor2api-go
```
这将显示:
- 每次请求的 `x-is-human` token (前 50 字符)
- 请求的 payload 大小
- 重试次数
- 详细的错误信息
## 其他常见问题
### Cloudflare 403 错误
如果看到 `Cloudflare 403` 错误,说明请求被 Cloudflare 防火墙拦截。这通常是因为:
- IP 被标记为可疑
- User-Agent 不匹配
- 缺少必要的浏览器指纹
**解决方案**: 检查 `.env` 文件中的浏览器指纹配置(`USER_AGENT`、`UNMASKED_VENDOR_WEBGL`、`UNMASKED_RENDERER_WEBGL`)是否正确。
### 连接超时
如果频繁出现连接超时:
1. 检查网络连接
2. 增加 `.env` 文件中的 `TIMEOUT` 配置值
3. 检查防火墙设置
### Token 获取失败
如果无法获取 `x-is-human` token:
1. 检查 `.env` 文件中的 `SCRIPT_URL` 配置是否正确
2. 确保 `jscode/main.js` 和 `jscode/env.js` 文件存在
3. 检查 Node.js 环境是否正常安装(Node.js 18+)
## 联系支持
如果问题仍未解决,请提供以下信息:
1. 完整的错误日志
2. `.env` 文件配置(隐藏敏感信息如 `API_KEY`)
3. 使用的 Go 版本和 Node.js 版本
4. 操作系统信息
|