关于我为了写一个浏览器插件,最后开发了一个浏览器 APP 的故事 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
penzi
V2EX    程序员

关于我为了写一个浏览器插件,最后开发了一个浏览器 APP 的故事

  •  
  •   penzi 2022-07-07 01:03:36 +08:00 4219 次点击
    这是一个创建于 1238 天前的主题,其中的信息可能已经有所发展或是发生改变。
    前些天发了帖子,关于我开发的和老婆远程一起看视频的插件,收获了不少用户。

    先打个广告,可能是远程一起看视频最好的解决方法: https://videotogether.github.io

    最近经常有用户反馈,插件在一些盗版视频网站上似乎没有办法同步视频。调试了一下发现,这些盗版视频网站很多都会用嵌套 iframe (给不懂浏览器的朋友科普一下,就是网页里面嵌了子网页)的方式播放视频。嵌套的 iframe 和页面都不在同一个域下面,由于浏览器的安全限制,js 是没法读取跨域 iframe 中的内容。子页面还会校验请求的 Referrer ,对于不在白名单的页面直接返回 error 。所以也无法通过在新窗口打开子页面的方式绕过这个 iframe 的限制。

    调研了一番以后,发现如果 js 插件可以注入到这些子页面中,通过不同页面 PostMessage 也是可以实现跨页面操作的。无非是原来一个函数调用解决的问题,变成了多个插件实例异步通讯完成。虽然麻烦了一点,至少还能解决。

    电脑上的 tampermonkey 插件是支持注入 js 到 iframe 的。但是在安卓上,我几乎把酷安能够下载到的支持插件的浏览器用了一个遍,没有一个能够注入 js 到 iframe 。

    最后在 StackOverFlow 上找到了答案,安卓系统的 webview 是没有提供 API 注入 iframe 的。唯一能实现这个功能的方式是劫持 webview 的 request ,手动请求到 html response 后添加脚本代码到末尾。这么 hack 的方式肯定是不能指望有浏览器能支持了。最终我在 Github 找了一个开源的 react native 浏览器,加了了劫持 request 的代码,集成了一起看视频插件后打包了一个 APP 。心力憔悴。



    顺带一说,我知道安卓上有 kiwi 浏览器,不过 chrome 商店国内访问不了
    22 条回复    2022-08-12 14:14:18 +08:00
    bs10081
        1
    bs10081  
       2022-07-07 01:24:08 +08:00   4
    然用,但是 UI ,好
    des
        2
    des  
       2022-07-07 01:50:53 +08:00 via iPhone
    有没有试过这个? https://github.com/m1k1o/neko
    lovestudykid
        3
    lovestudykid  
       2022-07-07 05:07:00 +08:00
    挺好的,不过说到一起看视频,直接同时点开播放也是一样的,更关键的是要能同步交流
    0A0
        4
    0A0  
       2022-07-07 07:45:44 +08:00 via Android
    比起 github 的 n.keo ,这个是懒人一件套了,支持支持。不知道国内外同步效果怎么样。
    IssacTomatoTan
        5
    IssacTomatoTan  
       2022-07-07 09:10:38 +08:00 via Android   1
    你们不送老婆嘛
    orisine
        6
    orisine  
       2022-07-07 09:33:48 +08:00
    lz 能分享下是哪个开源浏览器吗
    penzi
        7
    penzi  
    OP
       2022-07-07 09:48:33 +08:00 via Android   1
    penzi
        8
    penzi  
    OP
       2022-07-07 09:49:56 +08:00 via Android
    @des 看了一下,这个还需要搭服务器推流呀。且不说安装复杂程度没得比,这个服务器成本也是很大的开销
    penzi
        9
    penzi  
    OP
       2022-07-07 10:06:12 +08:00
    @lovestudykid 一起交流的话,所以带通话功能的 app 都能实现。

    但是这个一起点实际使用的时候就会发现有很多的问题。即便两个人全程不离开,不需要暂停,不需要快进。每次换视频都需要一起数 123 ,还有一个人加载的慢,中途卡了,一些视频网站中途播广告导致进度不同步
    penzi
        10
    penzi  
    OP
       2022-07-07 10:07:32 +08:00
    @0A0 中国美国同步没问题的
    greatbody
        11
    greatbody  
       2022-07-07 10:16:38 +08:00
    直接开一个腾讯会议,然后两个人中的一个人播放就可以了。
    penzi
        12
    penzi  
    OP
       2022-07-07 10:20:44 +08:00 via Android
    @greatbody 帧数和清晰度都比较差。只有各类有缓冲的直播平台比较清晰流畅。不过很多有版权视频看了一会可能直播间就封了。而且还需要单独搭一个推流服务。因为看的人和播的人延迟比较高
    andyskaura
        13
    andyskaura  
       2022-07-07 10:41:08 +08:00
    这个共享是通过打洞推流方式共享屏幕还是同时进入一个网址同步鼠标操作实现的?
    sjzjams
        14
    sjzjams  
       2022-07-07 10:45:17 +08:00
    不知道这个 SignalR 能不能行
    penzi
        15
    penzi  
    OP
       2022-07-07 10:48:29 +08:00 via Android   1
    @andyskaura 类似你说的鼠标操作吧。不过是直接控制网页 video dom 的播放进度,不是模拟鼠标。
    alexsunxl
        16
    alexsunxl  
       2022-07-07 14:29:59 +08:00
    有点意思的
    e1d4py0KiD6KgqkQ
        17
    e1d4py0KiD6KgqkQ  
       2022-07-07 21:13:51 +08:00 via Android
    你最后提的 kiwi 浏览器是啥意思什么原因?我有这个 app
    lovestudykid
        18
    lovestudykid  
       2022-07-07 22:42:51 +08:00
    @maggch97 边看一起通话没那么简单,两边都在播放,需要消除回音,但这个又不是回音,你可以边放边开微信通话试试
    0A0
        19
    0A0  
       2022-07-10 13:22:15 +08:00
    今天试了一下,好像在 mac chorme 上创建后,加入会提示同步失败。是只有在 edge 才可以?
    larendorrx
        20
    larendorrx  
       2022-08-12 12:17:57 +08:00 via iPhone
    想问下 OP 是如何劫持 React Native Webview 中的请求的呢,是重写页面的 XHR 还是写原生代码拓展 webview 组件的能力呢?
    penzi
        21
    penzi  
    OP
       2022-08-12 13:50:00 +08:00   1
    @larendorrx https://v2ex.com/t/872398#reply6 你看一下 #6 的回复,我回复错帖子了,得改 Android 端的实现
    larendorrx
        22
    larendorrx  
       2022-08-12 14:14:18 +08:00 via iPhone
    @maggch97 看到了,我参考下,感谢
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3060 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 12:24 PVG 20:24 LAX 04:24 JFK 07:24
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86