开源一个基于网页的共享剪切板 ( PHP )

2023-11-13 11:55:16 +08:00
 lslqtz

个人使用了两年左右, 最近心血来潮进行了一波优化, 顺便进行开源. 说是共享剪切板, 实际上更像是一个共享文本框, 因为没有设备的剪切板访问权限.

https://github.com/lslqtz/UniversalClipboard

这一剪切板具有如下特性:

  1. 基于网页, 采用轮询机制, PHP 单文件部署;
  2. 在键入完毕后的半秒内被同步到各设备;
  3. 网页会产生二维码便于共享 (推荐由移动设备访问桌面设备产生的二维码);
  4. 支持简单的深色模式 (二维码在深色模式下会变暗);
  5. 支持简单的多账号认证和匿名. 匿名模式下使用一个不需要登录的"特殊账号". 以账号为门槛, 在 Session 模式下剪切板关联 Session ID (即根据不同的 Session ID 可支持单账号多剪切板, 但此时剪切板可跨账号访问), 在 JSON 模式下剪切板关联账号 (即意味着在匿名模式下完全共享剪切板).
  6. 可设置的过期时间;
  7. 通过修改 VersionKey, 可以废弃所有用户的之前剪切板;

注: 这一剪切板的设计目的是个人及小规模使用. 该工具的密码存储及传输使用未加盐 SHA1, 不建议使用重要密码. SessionName 如为 null, 则以 JSON 模式存储用户数据, 否则其字符串决定其字面意思. 过期及废弃剪切板并不意味着丢弃, 由于没有计划任务的实现, Session 模式下 PHP 本身会触发基于概率的回收, JSON 模式下只有在访问用户数据时才会检查是否过期.

这是一个目前可用的测试服务, 使用 Session 模式, 账号为 user1, 密码为空. 测试链接

1683 次点击
所在节点    分享创造
11 条回复
Puteulanus
2023-11-13 12:05:56 +08:00
我之前也想做这个,基于网页或者 PWA 的剪贴板共享工具
但是浏览器的剪贴板 API 卡得太死了,要权限都可以接受,焦点还必须一直在网页上,自动同步基本上就不要想了
lslqtz
2023-11-13 12:08:54 +08:00
@Puteulanus
说到剪切板 API, 这个程序目前还没有使用, 也许有优化空间? 我一般是使用 Command (Control)+C/V 快捷键来取出.
不过如果使用的话, 在两个设备都已有剪切板内容时确定先后顺序可能是一个难题.
Puteulanus
2023-11-13 12:20:40 +08:00
@lslqtz 可以做一个一键复制的按钮,或者把变动历史做成一个列表(剪贴板历史),每个 item 单击或者双击直接复制,感觉体验会好一些,纯鼠标就能操作。

两个设备的先后确实是个问题,特别是浏览器 API 禁止了非焦点情况下的剪贴板访问,没办法像剪贴板同步的客户端程序一样在变动的当下及时反应,当一个设备重新回网页的时候是不可能知道它是想读还是想写的。

我的想法是网页上再做个读剪贴板的按钮,都手动操作,让它俩自己决定哪边读哪边写,自动同步这事在网页上真做不出来。。
lemonTreeTop
2023-11-13 14:29:38 +08:00
可以看看我的项目柠檬 Push ,把电脑剪切板转为 http 服务,提供获取和写入的 api

柠檬 Push ,同一 WiFi 环境下手机高效推送文本到电脑剪切板的工具,移动端支持 Android 、iOS ,电脑端支持 Windows 、Mac 、Linux 平台

https://github.com/ishare20/lemonPush
brader
2023-11-13 14:33:52 +08:00
我是自己做了一个 https://9iqu.cn/clip/
justfindu
2023-11-13 14:47:43 +08:00
我一直在用 Edge 提供的 Drop
dasenlin
2023-11-13 20:04:30 +08:00
每秒一次的轮询是否可以使用主动推送到客户端来代替,当前剪切板内容变化时才改变状态然后推送到各客户端,我想这样会增加难度,比如不得不增加 Websocket 之类的功能,这样就影响了轻便的初衷了。
lslqtz
2023-11-13 20:14:04 +08:00
@dasenlin 可以, 除了 CDN 和虚拟主机等兼容性外应该还好.
lslqtz
2023-11-13 20:17:05 +08:00
目前没有计划, 高频轮询足够个人需求了.
Eanson
334 天前
@brader 开源吗 我正好需要这个
brader
333 天前
@Eanson 之前有放了一份到 gitee ,你要可以自己上去拿
https://gitee.com/shunbiao/clip

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

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

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

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

© 2021 V2EX