Skip to content

抖音网页 xdg-open 弹窗问题排查与修复文档

🕒 Published at:

抖音网页 xdg-open 弹窗问题排查与修复文档 ​

问题描述 ​

在 Edge / Chrome 浏览器中访问抖音网页(https://www.douyin.com)时, 页面 JavaScript 会触发外部自定义协议,导致系统弹出 "xdg-open" 或 "是否打开 BitBrowser Blackhole" 对话框。

这不是浏览器 bug,而是字节跳动网页尝试唤起本地 App 的正常行为, 但因 Linux 系统上不存在对应客户端,最终 fallback 到 xdg-open, 弹出用户选择应用对话框。

根因分析 ​

触发的协议 ​

协议来源说明
bitbrowser://比特浏览器残留用户之前安装"比特浏览器"留下的自定义协议注册
snssdk1128://字节跳动抖音 SDK 的自定义协议
bytedance://字节跳动字节系通用协议
aweme://字节跳动抖音国际版协议
opencat://未知第三方可能是其他浏览器残留

触发链 ​

抖音页面 JS
  → 尝试 window.location = 'bitbrowser://cc/xxx'
  → 系统无对应应用处理
  → fallback 到 xdg-open
  → KDE 弹窗询问用户选择应用

修复方案 ​

修复分三层,层层递进:

第一层:清除浏览器内的协议绑定记录 ​

Edge Preferences 文件中记录了网站对协议的绑定,需要清除:

json
"protocol_handler": {
  "allowed_origin_protocol_pairs": {
    "https://www.douyin.com": {
      "bitbrowser": {}   // 删除这个
    }
  }
}

同时清除 safe_browsing.external_app_redirect_timestamps 中的 bitbrowser 相关时间戳。

第二层:注册黑洞处理程序 ​

让系统对未知的自定义协议静默处理,不弹任何对话框:

黑洞脚本:~/.local/bin/bitbrowser-blackhole.sh

bash
#!/bin/sh
exit 0  # 直接退出,不执行任何操作

桌面文件:~/.local/share/applications/{协议}-blackhole.desktop

ini
[Desktop Entry]
Name={协议} Blackhole
Exec=/home/a1/.local/bin/bitbrowser-blackhole.sh
Type=Application
NoDisplay=true
MimeType=x-scheme-handler/{协议};
Terminal=false

注册到 mimeapps.list:

ini
[Default Applications]
x-scheme-handler/bitbrowser=bitbrowser-blackhole.desktop
x-scheme-handler/snssdk1128=snssdk1128-blackhole.desktop
x-scheme-handler/bytedance=bytedance-blackhole.desktop
x-scheme-handler/aweme=aweme-blackhole.desktop
x-scheme-handler/opencat=opencat-blackhole.desktop

验证:

bash
xdg-open bitbrowser://test   # 应静默退出,无弹窗

第三层:Chrome Policy 封锁(最有效) ​

在系统级策略中直接封锁这些协议,浏览器不再向系统发送请求:

bash
sudo mkdir -p /etc/opt/chrome/policies/managed
sudo tee /etc/opt/chrome/policies/managed/block-protocol.json << 'EOF'
{
  "URLBlocklist": [
    "bitbrowser://*",
    "snssdk1128://*",
    "bytedance://*",
    "aweme://*",
    "opencat://*"
  ]
}
EOF

关闭所有 Chrome/Edge 进程后重新打开,浏览器层直接拦截,不会触发 xdg-open。

验证:打开 chrome://policy,确认 URLBlocklist 已生效。

涉及的修改文件 ​

文件修改内容
~/.config/mimeapps.list注册 5 个黑洞协议处理器
~/.local/bin/bitbrowser-blackhole.sh黑洞脚本(空操作)
~/.local/share/applications/*-blackhole.desktop5 个黑洞桌面文件
~/.config/microsoft-edge/Default/Preferences清除 douyin.com 的协议绑定
/etc/opt/chrome/policies/managed/block-protocol.jsonChrome Policy 封锁

参考 ​