Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
wheelg
V2EX  ›  奇思妙想

想要一个这样的 Magic 浏览器

  •  
  •   wheelg · 4 天前 · 817 次点击

    最近有很多 App 的奇思妙想,作为前端从业者,拿 JS 开发软件界面简直不要太爽,但是一旦到了发布的时候,问题就来了,用 electron 整个打包吧又太大了,单纯作为网页发布,又少了很多只有客户端才能使用的权限,尤其是很多 Web 应用其实只需要可以绕开跨域请求第三方数据而已,却要为此付出一整个运行时的代价,或者自己花钱搭服务器,真的得不偿失。

    拿我最近做的一个 MP3 标签自动识别软件来说吧,其实它的功能很简单,就是识别 mp3 文件,然后请求网易的接口,最后再写入到 mp3 里面,而这样一个小小的需求,其实 JS 很简单就能做到,但就是缺少两个关键功能:1 ,跨域请求第三方接口; 2 ,读写本地文件,而不得不使用 tauri 来完成。而其实方法 2 只需要最新的 Chrome 和 Safari 就可以实现了,只有方法 1 ,是无论如何没办法只通过网页来实现(不使用服务器转发接口的情况下)。

    包括 Statckblitz 这样的应用也是如此,就是因为不允许请求跨域,nodejs 环境跑在浏览器上也是诸多不便,不然直接使用 PWA 版本跑 node 服务,那该是多么一件美事啊。

    所以我的想法是,如果有这样一个应用,它能够让用户输入的 URL 自动变成 PWA ,同时注入一些 JSBridge ,让网页能够直接调用满血版的 fetch 和文件系统,再加上一些权限限制,这不就成了一个完美的网页容器了吗?而事实上,我用 tuari 开发的几个应用,rust 部分的代码几乎完全相同,因为真的只需要几个关键的权限,就能实现大部分 App 能实现的功能,我现在就能列出几个非常适合这样做的应用: 1 ,Postman 2 ,Statckblitz 3 ,VS Code Online

    另外我也想过 Chrome 配合 extension 可以实现这个需求,但是 extension 鱼龙混杂,而且每个 PWA 都需要单独设置,还会影响 Chrome 本身的用户数据,我就是想要一个完全独立的 App ,在里面管理类似的网页和权限。理论上这个应该很容易做到才对。

    至于生态,现在已经有很多 electron 和 tuari 应用了,只需要一层 JSBridge 的接口层就能抹平大部分运行容器的差异,而且大部分应用都是开源项目或者独立开发者,做一些小工具场景应该还是会比较有市场的吧

    8 条回复    2025-04-10 00:26:00 +08:00
    wheelg
        1
    wheelg  
    OP
       4 天前
    问了 GPT4o 它也很支持,这就让它整个原型出来~
    okakuyang
        2
    okakuyang  
       3 天前
    直接让用户使用最新的浏览器就行了
    musi
        3
    musi  
       3 天前
    > 现在已经有很多 electron 和 tuari 应用,只需要一层 JSBridge 的接口层就能抹平大部分运行容器的差异

    不同版本之间的差异你抹不平的
    dufu1991
        4
    dufu1991  
       3 天前
    目前最好的方案是希望 Chromium 官方能将 Chromium 按模块拆包,现在将一个最简单的应用打包成 Electron ,即使你只是写一下 UI 界面,但是实际你打包进去的包含渲染引擎、V8 引擎、网络堆栈、音视频处理模块、扩展系统、开发者工具、WebRTC 、WebSockets 、WebSockets......其中大多数是我们用不到的,相信按需的话绝大多数应用的体积不会这么大。
    dufu1991
        5
    dufu1991  
       3 天前
    @dufu1991 WebAssembly
    wheelg
        6
    wheelg  
    OP
       3 天前
    @okakuyang 最新浏览器也做不到摆脱请求跨域的,更别说其他更细节的系统功能了
    wheelg
        7
    wheelg  
    OP
       3 天前
    @musi 完全抹平确实有点困难,但是保证基础的 api 表现一致还是可以的,我的想法是不需要完美实现 electron 或者 tauri 的全部功能,只需要一部分(即上面提到的跨域请求,文件系统这样的)即可,让独立开发者只需要专注于 GUI ,哪天乐意了再移植到其他平台也很简单。
    a132811
        8
    a132811  
       3 天前
    1. chrome 启动时加--disable-web-security 可突破跨域限制:
    mac 下可以启动隔离的 chrome:
    open -na "Google Chrome" --args --disable-web-security --user-data-dir="/tmp/chrome_dev_session"

    https://stackoverflow.com/questions/3102819/disable-same-origin-policy-in-chrome

    2. 禁用 cors 限制的话,会遇到许多问题
    - 用户信息有潜在的安全风险
    - 网站服务商会受很大的影响:应对来自 c 端的 ai 爬虫就已经很头大了,放开限制的话,随便一个 web 网站都可能主动利用 js 或被注入 xss 对别的网站发起各种分布式攻击(客户端也有这个风险,但是门槛更高一点)


    安全、方便、功能、开发体验之间存在许多矛盾的: pwa 相比客户端应用,牺牲了一些功能,得到了安全。

    真要给 pwa 搞一个专门的浏览器的话,可能要禁止 cors 带 cookie ,禁止 xss 执行等,完全模仿客户端的行为.... 这可能会影响现有一些网站的执行。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2686 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 07:48 · PVG 15:48 · LAX 00:48 · JFK 03:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.