clipboard-online 是一个在 Windows 和 iOS 之间分享剪切板的 Windows 工具,iOS 通过快捷指令实现。另外也适用于 Windows 与 Android 设备之间。@Appinn
@xiozf 同学在很早前就分享了这款软件,以及使用方法:https://meta.appinn.net/t/topic/20322
Clipboard-online:在不同设备之间分享剪贴板。附 iOS 和 Android 设备分享方法。
前言
缘起于 @feeshy 分享的跨平台跨设备剪贴板推送/同步方案合集,受益良多。根据自己的需求折腾了好多 app,最后结果在此分享。
介绍
clipboard-online 是一款 Windows 平台应用,它将本机剪贴板暴露于 HTTP 端口,其他设备通过发送 HTTP 请求来获取、发送剪贴板。而其他设备发送剪贴板后,PC 可以直接粘贴。现已支持文本、文件、图像。
开始
1、到项目首页下载应用并运行。2、记下 PC 内网 IP。
iOS 设备获取、发送剪贴板
- 获取 PC 剪贴板内容:
- 安装该快捷指令;
- 如开启鉴权,请记得设置和 PC 一样的 authkey。
- 发送剪贴板内容至 PC 剪贴板:
- 安装该快捷指令;如开启鉴权,请记得设置和 PC 一样的 authkey。
安卓设备获取、发送剪贴板
需安装 HTTP Shortcuts 应用,介绍见此。
- 获取 PC 剪贴板内容:
- 将以下内容保存为
.json
文件(编码方式选 UTF-8)并拷贝到手机上; - 到 app 首页,点击”导入/导出”,找到文件导入;
- 编辑刚导入的快捷方式,将 IP 地址换为你 PC 的内网 IP;
- 如开启鉴权,请编辑快捷方式,点击”脚本编写”,在”执行前运行”栏目里按提示填写和 PC 一致的 authkey。
- 将以下内容保存为
{
"categories": [
{
"id": "9b0db1bd-87b8-456b-a741-001b0cbe2282",
"name": "快捷方式",
"shortcuts": [
{
"acceptCookies": false,
"codeOnPrepare": "const timestamp \u003d parseInt(new Date()/30000);\n\nconst auth \u003d \u0027我的密匙.\u0027 + timestamp ;\n//把“我的密匙”4个字换成你的authkey,单引号内最后一个.要保留\n\nconst hashkey \u003d hash(\u0027md5\u0027, auth);\nsetVariable(/*[variable]*/\"4b04bb1d-5b8b-4830-9f7b-b2fef71bd44f\"/*[/variable]*/, hashkey);",
"codeOnSuccess": "const aa \u003d JSON.parse(response.body).type;\n\nif (aa \u003d\u003d \u0027text\u0027) {\n const bb \u003d JSON.parse(response.body).data;\n copyToClipboard(bb);\n showToast(\"已复制:\" + bb);\n} else {\n showToast(`文件名:${JSON.parse(response.body).data[0].name}\\nHTTP Shortcuts不支持该类型传输`);\n}",
"headers": [
{
"id": "28bb17a3-1129-41b3-aafb-286ab74212f6",
"key": "X-API-Version",
"value": "1"
},
{
"id": "33122791-5436-47ee-85aa-381e5246614e",
"key": "X-Client-Name",
"value": "5a6J5Y2T5omL5py6"
},
{
"id": "69406f7e-7ffa-4394-8531-e001b56e24df",
"key": "X-Auth",
"value": "{{4b04bb1d-5b8b-4830-9f7b-b2fef71bd44f}}"
}
],
"iconName": "flat_color_brightness_4",
"id": "1426d5aa-56c2-4bd3-b0ff-da06b86a1cbd",
"name": "获取PC剪贴板",
"responseHandling": {
"id": "2520aa51-42fc-4ebd-b354-23dd7f3b3da9",
"successOutput": "none"
},
"timeout": 1000,
"url": "http://192.168.1.2:8086"
}
]
}
],
"variables": [
{
"id": "4b04bb1d-5b8b-4830-9f7b-b2fef71bd44f",
"key": "auth",
"value": "3866123255535f13a22ea19a48551ec3"
}
],
"version": 45
}
- 发送文字至 PC 剪贴板:
- 展开以下折叠内容保存为
.json
文件(编码方式选 UTF-8)并拷贝到手机上; - 到 app 首页,点击”导入/导出”,找到文件导入;
- 编辑刚导入的快捷方式,将 IP 地址换为你 PC 的内网 IP;
- 如开启鉴权,请编辑快捷方式,点击”脚本编写”,在”执行前运行”栏目里按提示填写和 PC 一致的 authkey。
- 展开以下折叠内容保存为
{
"categories": [
{
"id": "9b0db1bd-87b8-456b-a741-001b0cbe2282",
"name": "快捷方式",
"shortcuts": [
{
"acceptCookies": false,
"bodyContent": "{\"data\": \"{{56a89499-6696-4004-8ae9-67d2be339ad9}}\"}",
"codeOnPrepare": "const timestamp \u003d parseInt(new Date()/30000);\n\nconst auth \u003d \u0027我的密匙.\u0027 + timestamp ;\n//把“我的密匙”4个字换成你的authkey,单引号内最后一个.要保留\n\nconst hashkey \u003d hash(\u0027md5\u0027, auth);\nsetVariable(/*[variable]*/\"4b04bb1d-5b8b-4830-9f7b-b2fef71bd44f\"/*[/variable]*/, hashkey);",
"codeOnSuccess": "showToast(\"已发送\");",
"contentType": "application/json",
"headers": [
{
"id": "90f1eb7e-3fd6-400d-9501-4d0f3f853ed3",
"key": "X-API-Version",
"value": "1"
},
{
"id": "f98d0ab7-6a3f-4151-93a3-c49d30314852",
"key": "X-Client-Name",
"value": "5a6J5Y2T5omL5py6"
},
{
"id": "cee115a0-f740-4c2f-9a9c-f721c4c5dc09",
"key": "X-Auth",
"value": "{{4b04bb1d-5b8b-4830-9f7b-b2fef71bd44f}}"
},
{
"id": "13ededd7-22ad-4431-a13e-08dd62f824ce",
"key": "X-Content-Type",
"value": "text"
}
],
"iconName": "flat_color_brightness_4",
"id": "91bb596a-a3d7-423f-abd4-bdf4b9e2c5ce",
"method": "POST",
"name": "推至PC剪贴板",
"responseHandling": {
"id": "305bd9cb-0cdb-495a-b39d-9fdb24609f6e",
"successOutput": "none"
},
"timeout": 1000,
"url": "http://192.168.1.2:8086"
}
]
}
],
"variables": [
{
"id": "4b04bb1d-5b8b-4830-9f7b-b2fef71bd44f",
"key": "auth",
"value": "3866123255535f13a22ea19a48551ec3"
},
{
"flags": 1,
"id": "56a89499-6696-4004-8ae9-67d2be339ad9",
"key": "Content_noencode",
"title": "要发送的内容",
"type": "text"
}
],
"version": 45
}
延伸
如果将本机暴露到公网,则随时都能操作剪贴板内容,而不受限于局域网。如这样操作请一定要开启鉴权,以稍微增加一点安全性。
另外,图片及文件的支持也已加入,采用的是将二进制文件进行 Base64 编码再传输。iOS 一切正常,安卓的 HTTP Shortcuts 应用则支持文字类型的 Base64 编码/解码,不支持文件类型的 Base64 编码/解码,比较可惜。
| clipboard-online 开源首页| HTTP Shortcuts 开源首页 |
后记
还是那句话:人呢,总是有许多奇奇怪怪的需求,正因为这些不一样的需求,才催生出各式各样的 app 。这些 app 解决的痛点在另一个人眼里也许就不是问题。这次折腾很久,效果差强人意,特此分享。
更新记录
2021.08.04 clipboard-online 更新至0.2.5,相应配套也更新支持。
2020.11.XX 初稿、二稿。
Rusty paste 也是一个简单的通过 REST API 交互的 pastebin 程序,可以单文件运行,很方便。我目前也是自己写的捷径在 iOS 上用,发送文件不是 base64 而是用的 multipart/form-data. 不过很多时候感觉还是不如像 bark 这种通知形式的,毕竟有历史记录,相当于给 iOS 加上了一个 clipboard manager. 而 Windows 的通知中心相对来说就麻烦好多,所以用我自己修改的 w11toast 写了一个有 REST API 的 Notification Server, 可以传文字点击复制、URL 点击打开、文件之类的,为 iOS 一些 APP 的分享稍微加了一些特殊识别,比如 B 站的分享可以显示略缩图、标题和链接。