Clipboard-online:在不同设备之间分享剪贴板。附 iOS 和 Android 设备分享方法。

前言

缘起于 @feeshy 分享的跨平台跨设备剪贴板推送/同步方案合集,受益良多。根据自己的需求折腾了好多 app,最后结果在此分享。


介绍

clipboard-online 是一款 Windows 平台应用,它将本机剪贴板暴露于 HTTP 端口,其他设备通过发送 HTTP 请求来获取、发送剪贴板。而其他设备发送剪贴板后,PC 可以直接粘贴。现已支持文本、文件、图像。

开始

1、到项目首页下载应用并运行。2、记下 PC 内网 IP。

iOS 设备获取、发送剪贴板

  • 获取 PC 剪贴板内容:

    1. 安装该快捷指令
    2. 如开启鉴权,请记得设置和 PC 一样的 authkey。
  • 发送剪贴板内容至 PC 剪贴板:

    1. 安装该快捷指令
    2. 如开启鉴权,请记得设置和 PC 一样的 authkey。

    以上两个快捷指令链接均来自 clipboard-online 项目中文页面

安卓设备获取、发送剪贴板

需安装 HTTP Shortcuts 应用,介绍见此

  • 获取 PC 剪贴板内容:
    1. 展开以下折叠内容保存为 .json 文件(编码方式选 UTF-8)并拷贝到手机上;
    2. 到 app 首页,点击"导入/导出",找到文件导入;
    3. 编辑刚导入的快捷方式,将 IP 地址换为你 PC 的内网 IP;
    4. 如开启鉴权,请编辑快捷方式,点击"脚本编写",在"执行前运行"栏目里按提示填写和 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 剪贴板:
    1. 展开以下折叠内容保存为 .json 文件(编码方式选 UTF-8)并拷贝到手机上;
    2. 到 app 首页,点击"导入/导出",找到文件导入;
    3. 编辑刚导入的快捷方式,将 IP 地址换为你 PC 的内网 IP;
    4. 如开启鉴权,请编辑快捷方式,点击"脚本编写",在"执行前运行"栏目里按提示填写和 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 初稿、二稿。

5 Likes

我在使用的是 ClipboardFusion

这个是收费软件, 支持网络同步. 它支持win,mac,Android, ios, Linux, 浏览器扩展.

我记得荔枝代理过他家.

1 Like

用Windows当服务端是不是可以操作剪贴板了

如果可以iOS/Android点一下推送,Windows按一下ctrl+v就粘贴出来,那样就有点意思了

:joy: :joy: :joy:目前就是这样的实现,手机复制,PC粘贴。我写的帖子太糟糕了,只侧重于其他设备之间相互分享,而没提到这个。

1 Like

可以无缝粘贴就很方便啊

非常感谢作者分享,我实操后发现由于 Clipboard-online + iOS的快捷指令都发生了更新,本篇帖子中的快捷指令都已经无法使用了(不过Clipboard-online 的作者在源项目处更新的快捷指令还是可用的)

我想问的则是安卓端 HTTP Shortcuts 的那段 json 代码有后续更新版本吗?因为本篇帖子中的已经不可用了(如果没有,是否能提供下编写的思路?)

1 Like

pbgopy 可不错了,可惜只支持桌面端。另外,macOS可以用pbcopy和pbpaste来实现复制粘贴功能。

1 Like

我用了新指令还是不行

1 Like

已更新至正文

再按教程检查下哪里出错,我这里使用一直正常。

感谢更新,另外补充一个用法:在 iOS上可以搭配「辅助触控」,基本上能实现无缝复制粘贴,非常方便

PS:也可以可以设置双击、三击手机背面来快速调用快捷指令

那个新的快捷指令要这样设置(后两项设置可以保持默认):

image
这个是个Windows Android iOS的三端解决方案。不过每次只能在两两设备之间发送。而且Android到iOS得iOS去配对才行,Android不能主动配对。其他端没问题。不过只需要同一局域网,无需Windows作为中转。

1 Like

使用tasker
https://taskernet.com/shares/?user=AS35m8kc7V%2FmxwnKDX5H5c5GEhNcpFX6F5vfEYKreUNm%2Fpbha4ANWBNPl05tilOk3X4%3D&id=Task%3Aclipboard
点击导入即可

现在可以把win剪贴板的文件复制到手机上了

看了一下官网,Android之间还不能互传???
求个Dukto的替代品,这货早就停止开发了而且不支持Unicode,但是真的简单轻巧

Android之间我一般直接Mixplorer开ftp

感谢lz的分享,请问一下,发送到pc如何能实现直接发送当前剪切板数据,而不用再手动输入一次呢?

我一直都是找個發文的地方發出,再複製…

单靠 HTTP Shortcuts 做不到,它目前没有读取剪贴板的功能。
如果你有这方面的强烈需求,可以向 HTTP Shortcuts 的作者提建议,或者找找有没有能读取剪贴板的 APP,并且能让 HTTP Shortcuts 调用。

好的 多谢解答!