公众号旧文

有些链接明明是在浏览器里点击的,为什么电脑却打开了本地软件?

作者:胖子阅读 —

比如百度网盘,点击网页右上角的:

图片

浏览器就会弹窗提示,是否要打开百度网盘客户端。

图片

但浏览器并没有启动软件的权限。

那这是怎么做到的?

一、浏览器首先会判断:这是什么协议?

当你打开一个网址时:

https://openai.com

浏览器会先解析最前面的部分:

https://

这叫协议。

因为 https 是浏览器原生支持的协议,所以浏览器会自己处理:

  • 建立 HTTPS 连接
  • 联网获取网页
  • 渲染 HTML
  • 显示页面

整个过程都由浏览器完成。

但如果浏览器看到的是:

steam://run/730

情况就不一样了。

浏览器会发现不认识 steam 这个协议。

于是它不会自己处理,而是把这个请求交给操作系统。

二、操作系统里有协议关联机制

Windows、macOS、Linux 都有类似机制。

系统会记录某个协议应该由哪个程序处理。

例如:

协议 对应程序
http:// 浏览器
mailto: 邮件客户端
tg:// Telegram
steam:// Steam
vscode:// VS Code

这有点像文件关联。

比如:

  • .mp4 用什么播放器打开
  • .txt 用什么编辑器打开

但这里关联的不是文件,而是协议。

三、浏览器真正做的事:问操作系统

例如用户点击:

tg://resolve?domain=durov

浏览器发现 tg:// 不是自己支持的协议,于是:

  1. 调用系统接口
  2. 询问操作系统:谁负责处理 tg:// ?

系统会回答:Telegram

随后,系统启动 Telegram,并把完整 URL 一起传过去。

四、软件收到 URL 后,会自己解析

Telegram 启动后,会解析:

resolve?domain=durov

于是就知道:

  • 要打开哪个频道
  • 进入哪个聊天
  • 跳转哪个群组

这类机制有个名字:深链接(Deep Link)

现代 APP 非常依赖它。

例如:

  • weixin://
  • alipays://
  • spotify://
  • `discord://`````

网页、二维码、其它 APP,都可以通过深链接直接拉起目标应用,手机生态尤其依赖这个机制。

五、为什么浏览器会弹确认框?

因为网页虽然不能直接控制电脑,但它能请求系统启动本地程序。

如果没有限制,恶意网站就可能疯狂拉起各种软件。

因此现代浏览器会增加确认步骤,避免网页滥用协议调用。

六、手机上的更多例子

例如:

  • taobao://
  • weixin://
  • `bilibili://`````

当你扫码或点击链接时:

  1. 浏览器识别协议
  2. Android/iOS 查询关联
  3. 系统拉起对应 APP
  4. APP 跳转到指定页面

这就是现代移动生态里最核心的机制之一:APP 间跳转。

很多打开 APP 领取优惠券、跳转支付页面、打开直播间,都依赖深链接。

七、URL 的意义已经变了

互联网刚出现时,URL 原本只是定位网络资源

比如:

https://example.com/file.zip

但后来,它逐渐演化成了整个操作系统的资源入口。

如今 URL 不仅能:

  • 打开网页
  • 启动本地软件
  • 拉起 APP
  • 打开游戏
  • 跳转系统功能

甚至 Windows 还有:

ms-settings:

可以直接打开系统设置页面。

也就是说 URL 早就不只是网址了。

它已经变成了操作系统里的统一资源定位入口。