JetBrains 官网点击安装插件, idea 自动弹出安装窗口,这是怎么做到的?

2020-05-09 11:23:46 +08:00
 1oNflow

并没有在官网登陆我的账号,也不是 Chrome 提示想要打开 idea 那种调用,这是怎么知道我本机安装的什么版本,并能通知 ide 进行安装?

3862 次点击
所在节点    问与答
30 条回复
wysnylc
2020-05-09 11:29:38 +08:00
没用过 QQ 的 web 加群还是没用过 tg 的加群?
t298
2020-05-09 11:32:02 +08:00
@wysnylc 没明白,
RubyJack
2020-05-09 11:33:38 +08:00
url protocol
Ultraman
2020-05-09 11:34:19 +08:00
用 telegram 吗?
用的话点一下这里 https://t.me/nCoV2019
Ziya
2020-05-09 11:34:49 +08:00
直接搜索:URL Schemes
了解更多
wysnylc
2020-05-09 11:42:39 +08:00
@t298 #2 他的问题和 QQ 通过 web 加群还有 tg 加群是一样的,注册表注册然后通过 url 拉起本地注册的客户端进行交互
t298
2020-05-09 11:46:08 +08:00
@wysnylc 啊哦,谢谢
also24
2020-05-09 11:53:32 +08:00
@wysnylc #1
@RubyJack #3
@Ultraman #4
@Ziya #5

你们应该仔细看一下楼主的帖子内容的,楼主已经专门讲了 『也不是 Chrome 提示想要打开 idea 那种调用』,说明并不是 URL Schemes 方式。


我去 https://plugins.jetbrains.com/ 看了下,实际上那个页面是通过请求本地的 WebServer 传递的消息。
也就是 IDE 其实一直开着一个 WebServer 来接收外部指令,前端页面只是在请求这个接口而已。


这是具体的请求:
https://i.loli.net/2020/05/09/LbKEMOmHpXRlFPD.png


可以在源码中看到一些请求相关的内容:
https://i.loli.net/2020/05/09/o5q3aZnjudJIiVk.png
wysnylc
2020-05-09 12:02:33 +08:00
@also24 #8 这种方式有弊端,ide 不开就失效
miao1007
2020-05-09 12:08:37 +08:00
这种方案 相当于后门了
1oNflow
2020-05-09 12:08:57 +08:00
@also24 感谢分析,这种方法用户体验的确好,就是担心一直开着 server,更加占用资源了,哈哈
iFlicker
2020-05-09 12:09:52 +08:00
@also24 Jetbrains 家的 IDE 一直都开有一个 webServer 以前发现了还没注意是干啥的 这回知道了哈哈哈哈
also24
2020-05-09 12:18:05 +08:00
@wysnylc #9
这个页面在刚打开的时候就以空内容请求了这个接口,这个接口会返回当前的 IDE 名称和版本。
如果请求这个接口失败,这个页面后续是不会用这种方式来安装插件的。


@miao1007 #10
IDE 那边应该有校验,我直接 get 这个接口的话会提示是否信任。
以及,IDE 那边并不是静默下载,而是弹出安装提示框而已。
https://i.loli.net/2020/05/09/cwpJUI1Rl7SiuaX.png


@1oNflow #11
资源问题还真没太注意,猜测应该不会占用太多,毕竟没有太多复杂的东西在里面。


@iFlicker #12
之前用 Toolbox 的时候就注意到了,它的登录回调也是这样实现的。
Jirajine
2020-05-09 12:22:01 +08:00
这完完全全就是开后门,网页可以通过这种方式逃逸出浏览器沙盒执行代码,要是被那些 xx 联盟 sdk 学去了那还了得。
charlieputon
2020-05-09 12:24:55 +08:00
这个和安卓开发通过 url scheme 调起 activity 好像啊
jin7
2020-05-09 12:53:58 +08:00
又学了一招...
sheeta
2020-05-09 13:00:40 +08:00
哈哈,腾讯的 qq 登录也是这么干的,不然它怎么知道你电脑上登录了 qq
sheeta
2020-05-09 13:01:04 +08:00
kaedea
2020-05-09 13:15:44 +08:00
uri scheme
lshero
2020-05-09 13:27:58 +08:00
@Jirajine 早就学会了 /t/233263

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/669918

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX