常见问题与故障排除

常见问题解答,以及针对用户最常遇到问题的快速解决方案。

访问 HTTPS 网站时出现证书错误

该设备或工具尚未信任 BlankTrail Proxy 根证书 (CA)。请通过控制面板中的 CA 证书按钮进行安装,然后重启浏览器或工具。在 Windows 上,安装程序通常会为您自动完成这一步;其他设备则需要手动安装。

“端口已被占用”或 409 错误

打开端口失败(POST /api/v1/ports/open)会返回 409——调试采集端口除外:它在进入端口管理器之前就被处理器拒绝,返回的是 403。原因不止一种——请阅读响应文本,它会直接说明原因。下面列出常见的几种;其中只有前两种可以通过更换端口号解决。

响应文本该怎么做
port N is already open该端口号已在本应用中打开。请换一个端口号——或使用控制面板推荐的端口(GET /api/v1/ports/suggest 的作用相同)。
port N is busy: listen tcp …: bind: …该端口号被其他程序占用:监听未能建立,“bind:”之后的内容是操作系统给出的原文。请换一个端口号——或使用控制面板推荐的端口(GET /api/v1/ports/suggest)。
serving suspended: license inactive许可未激活:订阅已结束,或已有一天未连接授权服务器。换任何端口号都无济于事——请恢复连接或续订。
port limit reached已达到您的套餐允许的同时打开端口上限。请关闭多余端口或升级套餐。
the debug fingerprint port requires a Pro license🔴 本表中唯一返回 403 而非 409 的一行:该拒绝由打开端口的处理器在端口管理器之前给出。调试采集端口需要 Pro 套餐。普通端口可以打开,调试端口不行。

以上并非全部:同样以 409 返回的端口管理器原文还包括 port N is already being opened(同一端口号正在被打开)、serving suspended during open: license inactive — port not started(打开过程中许可失效),以及拦截冲突的拒绝:系统拦截已被其他端口占用、该应用已被其他端口拦截。

端口在我打开后自行消失了

无流量的端口会在 30 分钟后自行关闭——这是全局空闲超时。计时从打开端口那一刻开始,而不是最后一次请求:打开端口后去配置脚本,一小时后回来,端口已经不在了,而应用本身一切正常。

  • 可以为单个端口设置自己的值:PUT /api/v1/port/{port}/idle,请求体为 {"seconds": 0} 表示永不关闭,{"seconds": null} 表示恢复为全局超时。
  • 全局超时可通过 PUT /api/v1/idle_timeout 修改,或在 config.yaml 中通过 portmanager.idle_timeout 设置。
  • 🔴 对该端口任何接口的调用都会被计为活动并重置计时。每分钟轮询 GET /status 的监控会让端口永不关闭——而提前打开端口的场景反而会丢失它。
  • 对于容器与服务器,有一个正式的解决办法:config.yaml 中的 portmanager.startup_ports 列表。产品会自行打开这些端口并保持开启,并在与授权服务器恢复连接后重新打开它们。

我的许可无法激活

先排除显而易见的问题:邮箱与密码属于 blanktrail.com 账户,机器可以访问互联网,若启用了双因素确认则需完成票据步骤。

警告🔴 若消息显示 “auth server unavailable” 而网络明显正常——请检查机器的时钟。客户端会用自己的时钟核对令牌上的时间,并容忍任一方向最多五分钟的偏差。超出之后令牌即被拒绝:慢超过五分钟会把它视为“来自未来”,快超过五分钟则会视为已过期,因为令牌有效期为五分钟。两种情况下门控都会报告服务器不可用,在服务器完全正常时把您引向去排查网络。解决办法是时间同步(NTP)。不足五分钟的偏差由客户端自行吸收,不会破坏激活。

许可与设备绑定,且席位数量有限。因此会出现若干不同的拒绝原因,各有对应的解决办法——相关文本会显示在控制面板、托盘提示以及 GET /api/v1/license/status 的响应中。

拒绝文本发生了什么、该怎么做
device limit reached许可席位已用尽。请在账户中释放一个设备——通常是旧机器,或被视为新设备的重装系统。
another copy of this device is running同一设备的第二个副本已在运行:例如克隆的虚拟机,或产品被启动了两次。
device key mismatch该安装在别处被重新识别。通常是在未迁移密钥的情况下迁移了状态——请重新激活。
device key required — reinstall the client设备密钥已丢失:状态文件损坏或被删除。请重新安装客户端。
device deactivated in your account该设备已在账户中被停用——请重新启用它或释放该席位。
client build is below the minimum allowed构建版本过旧。请更新客户端——具体做法见关于更新的解答。
subscription expired订阅已到期:请在账户中续订。
no active license for this account该账户没有有效许可——您登录了错误的账户,或尚未购买许可。

问题仍未解决?请从您的账户联系支持,并附上报告:控制面板可自行生成(问题报告按钮),其中已包含日志与端口状态。

代理对部分站点返回 403

如果控制面板顶部在套餐名称下方显示“仅限以下域名:…”,说明您使用的是服务套餐:端口只放行列出的域名,对其他地址一律返回空响应体的 403 Forbidden(SOCKS5 为 “connection not allowed by ruleset”,且根本不会授予 UDP ASSOCIATE)。这既不是代理故障,也不是上游出口的问题——更换上游没有用。同一份列表也会通过 GET /api/v1/license/status 响应中的 allowed_domains 字段返回。不带前缀的条目覆盖该域名及其全部子域,以 “=” 开头的条目只精确匹配该名称,裸 IP 永远不会匹配。若需要其他域名,请在账户中随套餐一起变更。

忘记了控制面板密码

密码通过重新激活许可来重置:在机器本机上打开 /recover,使用 blanktrail.com 账户登录,并在此处设置新的控制面板密码。无需重装产品,状态会保留。

警告恢复只能在机器本机上进行——即通过 127.0.0.1。控制服务器监听所有网络接口,而网络中的邻居不应能够重置他人安装的密码:一次成功的重置还会重新绑定许可。若机器为远程,请把端口转发到本地,例如 ssh -L 8891:127.0.0.1:8891 you@host,然后在本地打开 http://127.0.0.1:8891/recover。

API 密钥不受控制面板密码管理:它是独立的;若丢失的是它,可通过 GET /api/v1/auth/apikey 获取,或通过 POST /api/v1/auth/apikey/rotate 重新签发。

站点要求通过验证——该怎么办?

当普通 HTTP 请求不足、站点出现验证墙时,将由 Challenge Breaker 接手:它自行完成验证,把就绪会话交回同一端口,应用随后继续以普通请求工作。该功能在“编辑”对话框中按端口启用,并需要 MITM。自 Pro 套餐起可用;解题器占用的进程数可在“概览”标签页查看。

如何确保代理没有泄漏?

在打开端口之前,请使用“打开端口”对话框中的预检泄漏检查,或调用 /upstream/test API 并带上 “leak” 检查。它会将 DNS 解析器与出口 IP 进行比对,并探测是否存在 IPv6 逃逸路径,从而在一开始就发现存在泄漏的出口。

在哪里可以找到我的 API 密钥?

打开控制面板,点击齿轮图标进入设置,即可复制其中显示的 API 密钥。如果密钥可能已泄露,也可以在同一处进行轮换。在调用 API 时,将其作为 X-API-Key 请求头发送。

代理端口要求用户名和密码

若设置中启用了代理端口鉴权,您的应用中所填写的地址必须携带凭据——否则连接会被拒绝,看上去就像“代理不工作”。

示例 (curl)
# 不带鉴权
curl -x socks5://127.0.0.1:20134 https://example.com

# 带代理端口鉴权
curl -x socks5://proxyuser:proxypass@127.0.0.1:20134 https://example.com
  • 在推荐的 Docker 启动命令中,代理密码是默认设置的——容器会对外发布端口,而没有密码的开放代理等于向整个网络开放。
  • “接受来自局域网的连接”这一设置同样如此:开启后端口就交给了网络中的邻居,密码不再只是形式。
  • 用户名与密码可在控制面板的设置页面设置,或通过 PUT /api/v1/settings/network 的 proxy_auth_enabled、proxy_auth_user 与 proxy_auth_pass 字段设置。缺少用户名或密码则无法开启该验证。

如何更新?

应用会自行发现更新,但不会自动安装:有新版本时,控制面板会显示“有新版本可用”的横幅与按钮。在点击之前,仍会继续运行旧版本。

点击后,更新会被下载、按签名校验并替换可执行文件,随后应用会自行重启。许可、设置与密码都会保留。

有两种状态下按钮不会生效,且都不是故障。“需要手动安装”——本机无法替换文件(例如应用位于不可写位置);旁边会出现下载链接,需手动运行安装程序。“更新失败”——旁边有“重试”按钮。多数情况下,尝试在替换文件之前中断(下载、签名校验),磁盘上的旧版本未受影响。较少见的情况是替换已经完成、只是重启失败:此时应用已经收尾停止工作,磁盘上放的是新版本,手动启动后运行的就是新版本。因此看到该状态时,请重启应用并核对版本:在控制面板中查看,或通过 GET /api/v1/update/status(current 字段)查询。

在 Windows 上也可以重新运行安装程序并选择“更新——保留许可、设置与密码”。在 Linux 上,更新通过软件包服务分发。用代码查询状态:GET /api/v1/update/status;触发更新:POST /api/v1/update。

如何获取帮助?

登录您在 blanktrail.com 的账户并打开支持渠道(Telegram 或网页聊天)。如果您在应用中遇到问题,设置对话框中有一个“报告问题”选项,在您同意的前提下,它会将一份经过脱敏处理的诊断包发送给我们的团队。