基于cookie cloud 搭一个时时文本传输工具
前言
cookie cloud 是ezey同学开发的一款浏览器之间传输cookie的小工具。从传出端强制将浏览器cookie进行加密后使用独立的uuid传输给自架服务器端,接收端通过指定的uuid和解密密钥来解密数据,然后覆盖其浏览器的cookie。这样便实现了cookie的同步。从实现原理上看,其只是一个多用户文本传输api和一个浏览器插件,假设我们换掉这个浏览器插件,直接动手给api传入数据和取出数据,就可以达到文本的远程传输了,这便是此篇文章的由来了。
做这样的一个api可以有很多用途,比如手机到手机之间,手机到电脑之间的文本同步,暂时性的文本保存。另外如果有什么隐私的内容想分享给别人,但又害怕大数据,也可以通过这个api生成为专属链接。对方看完内容后在像同样的uuid发送无用数据替换掉就会无影无踪。
下面将记录我在搭建这个api以及可视化的文本提交表单所使用到的代码和搭建方法,共自己备份,如果有需要的人看到此文大概对我来说也是一种慰藉。
方法
cookie cloud的开源地址是:https://github.com/easychen/cookiecloud
首先,必备的条件是,你的服务器上必须有docker或者podman。我已podman为例来介绍下它的部署方法,podman和docker类似,命令也通用。
假设你已经登陆到了服务器,docker用户已root超级用户登陆,podman用户随意,我们可以执行以下代码
podman run -e API_ROOT=/cookie -p=1020:8088 easychen/cookiecloud:latest
docker用户只需要把podman改成docker就可以运行。
/cookie相当于程序访问路径。1020是外部访问容器端口,这两项可以按照需求来改。当设置路径为/cookie,端口为1020时,该程序的访问地址将为:http://ip:1020/cookie
等待镜像启动完成,通常只要不报错就证明正常启动了。如果出错只要谷歌下基本上也能找到解决方法。
然后在命令行中输入:curl localhost:1020/cookie 查看是否会输出信息。如果输出了hellow world,则说明运行正常。
之后我使用了nginx来代理这个程序,并给他套上了ssl来保证数据安全,写一个nginx配置文件,加上以下几行,就可以让nginx代理你的cookie cloud了。
location /cookie {
proxy_redirect off;
proxy_pass http://127.0.0.1:1020;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_read_timeout 300s;
}
修改这里的端口和路径为自己的,保存后在ssh输入:nginx -t,如果并没有报错的话就可以重启nginx了。
这样我们便成功搭建起来cookie cloud。
cookie cloud的常用接口
上传:
method: POST
url: /update
参数
uuid
encrypted: 本地加密后的字符串
下载:
method: POST/GET
url: /get/:uuid
参数:
password:可选,不提供返回加密后的字符串,提供则发送尝试解密后的内容;
可视化数据提交表单
上面的接口表示,我们必须用post方式提交数据,用get方式取回数据。对于包括我在内的很多人来说,发送post请求并没有发送get请求那么方便。于是昨天撸了一个数据提交表单,放在任何web服务器或者放在电脑用浏览器直接打开都可以使用,具体的代码,复制后修改里面提交数据的接口为自己的就可以使用了。
<!DOCTYPE html>
<meta charset="UTF-8">
<title>文本同步接口</title>
<style>
/* Add some basic styling to the form elements */
label, input[type="submit"] {
font-size: 1em;
font-weight: bold;
margin: 0.5em 0;
}
input[type="text"] {
padding: 0.5em;
width: 20em;
}
textarea {
width: 20em;
height: 5em;
padding: 0.5em;
}
</style>
<h2>上传功能</h2>
<form action="https://abc.com/cookie/update" method="POST">
<label for="uuid">唯一文本识别码:</label>
<input type="text" id="uuid" name="uuid" required aria-label="请输入UUID">
<button type="button" onclick="document.getElementById('uuid').value = generateUUID()" aria-label="生成UUID">生成UUID</button>
<br>
<label for="encrypted">文本内容:</label>
<textarea id="encrypted" name="encrypted" required aria-label="请输入文本内容"></textarea>
<br>
<input type="submit" value="Upload" aria-label="上传">
</form>
<script>
function generateUUID() {
var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
var result = '';
for (var i = 32; i > 0; --i) result += chars[Math.floor(Math.random() * chars.length)];
return result;
}
</script>
<br>
<div>文本获取方法,访问abc.com/cookie/get/您的文本识别码,即可查看。</div>
由 平行世界 于 2023-01-22 发表于:默认分类