Cookie同步支持范围指定

This commit is contained in:
Easy
2022-08-18 13:42:50 +08:00
parent d49a3296ea
commit 3006db3296
19 changed files with 151 additions and 24 deletions
+20 -3
View File
@@ -12,9 +12,9 @@
## 最新版本
- 插件·Chrome/Edge2022.08.17.22.37 [下载](ckc.zip) ([Github下载地址,无需注册](https://github.com/easychen/checkchan-dist/raw/master/ckc.zip))
- Docker镜像(云端+远程桌面二合一)2022.08.17.21.38 [Docker Hub](https://hub.docker.com/repository/docker/easychen/checkchan)
- 文档:2022.08.17.22.37
- 插件·Chrome/Edge2022.08.18.13.42 [下载](ckc.zip) ([Github下载地址,无需注册](https://github.com/easychen/checkchan-dist/raw/master/ckc.zip))
- Docker镜像(云端+远程桌面二合一)2022.08.18.13.32 [Docker Hub](https://hub.docker.com/repository/docker/easychen/checkchan)
- 文档:2022.08.18.13.42
- 更新日志:[GitHub](https://github.com/easychen/checkchan-dist/commits/main)
- 生态:RSSHub浏览器插件整合版([源码](https://github.com/easychen/RSSHub-Radar-with-checkchan) | [下载](https://github.com/easychen/RSSHub-Radar-with-checkchan/releases/download/main/1.7.0.with-checkchan.zip)
@@ -168,6 +168,12 @@ checkchan://title=Server%E9%85%B1%E5%AE%98%E6%96%B9%E7%BD%91%E7%AB%99%E7%8A%B6%E
同时,因为执行监测任务本身也耗费时间,所以「监控间隔时间」为1分钟时,往往每隔一分钟(即每两分钟)才会运行一次任务。
### Selector 扩展语法
最新的版本支持了一个Selector扩展语法:由于底层通过 `document.querySelectorAll` 实现,因此会返回匹配的全部元素于一个数组。当这些元素属于同一个父节点我们可以用 `:nth-of-type(1)` 或者 `:nth-child(1)`来指定数组中的某一项。
但如果这些元素不属于同一个父节点,那么以上方法会失效。这里添加了一个 selector@n 的语法,让我们可以从 Selector 返回的数组中指定某一个元素。如 `.booklist .item@0` 将返回 `document.querySelectorAll(.booklist .item)[0]`
### 日志查看和错误定位
为了更清楚的了解定时任务的执行情况,你可以打开「开发者工具」(F12)在 `Console` 标签页中可以看到任务产生的日志。
@@ -341,6 +347,17 @@ Check酱自架云端内置了动态页面RSS上行用的接口:
- RSS上行地址为: `http://$ip:$port/rss/upload?key=$api_key`
- RSS Feed地址为:`http://$ip:$port/image/rss.xml?key=$api_key`
### 多浏览器Cookie同步接口
Check酱自架云端内置了Cookie同步用的接口:
![](image/20220818011127.png)
- Cookie同步URL为: `http://$ip:$port/cookie/sync?key=$api_key`
- 配对密码: 自行设定,同步Cookie的两个浏览器中必须一致
- 同步方向: 一个发送一个接收,一般电脑上的发送、服务器上远程桌面里的接收
- 同步频率:发送或者接收间隔时间
### 云端任务的安全性
Check酱云端任务的原理是将cookie同步到云端,然后用浏览器查看,本质和用户操作一样。但因为出口IP可能是机房和数据中心,频次太高也有被风控的可能。如果将云端部署在家里,则和在家用电脑访问效果一样。
+17
View File
@@ -168,6 +168,12 @@ checkchan://title=Server%E9%85%B1%E5%AE%98%E6%96%B9%E7%BD%91%E7%AB%99%E7%8A%B6%E
同时,因为执行监测任务本身也耗费时间,所以「监控间隔时间」为1分钟时,往往每隔一分钟(即每两分钟)才会运行一次任务。
### Selector 扩展语法
最新的版本支持了一个Selector扩展语法:由于底层通过 `document.querySelectorAll` 实现,因此会返回匹配的全部元素于一个数组。当这些元素属于同一个父节点我们可以用 `:nth-of-type(1)` 或者 `:nth-child(1)`来指定数组中的某一项。
但如果这些元素不属于同一个父节点,那么以上方法会失效。这里添加了一个 selector@n 的语法,让我们可以从 Selector 返回的数组中指定某一个元素。如 `.booklist .item@0` 将返回 `document.querySelectorAll(.booklist .item)[0]`
### 日志查看和错误定位
为了更清楚的了解定时任务的执行情况,你可以打开「开发者工具」(F12)在 `Console` 标签页中可以看到任务产生的日志。
@@ -341,6 +347,17 @@ Check酱自架云端内置了动态页面RSS上行用的接口:
- RSS上行地址为: `http://$ip:$port/rss/upload?key=$api_key`
- RSS Feed地址为:`http://$ip:$port/image/rss.xml?key=$api_key`
### 多浏览器Cookie同步接口
Check酱自架云端内置了Cookie同步用的接口:
![](image/20220818011127.png)
- Cookie同步URL为: `http://$ip:$port/cookie/sync?key=$api_key`
- 配对密码: 自行设定,同步Cookie的两个浏览器中必须一致
- 同步方向: 一个发送一个接收,一般电脑上的发送、服务器上远程桌面里的接收
- 同步频率:发送或者接收间隔时间
### 云端任务的安全性
Check酱云端任务的原理是将cookie同步到云端,然后用浏览器查看,本质和用户操作一样。但因为出口IP可能是机房和数据中心,频次太高也有被风控的可能。如果将云端部署在家里,则和在家用电脑访问效果一样。
+1 -1
View File
@@ -1 +1 @@
"2022.08.17.22.37"
"2022.08.18.13.42"
BIN
View File
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
"2022.08.17.21.38"
"2022.08.18.13.32"
+1 -1
View File
@@ -9,7 +9,7 @@ const cors = require('cors');
app.use(cors());
var multer = require('multer');
var forms = multer();
var forms = multer({limits: { fieldSize: 100 * 1024 * 1024 }});
const bodyParser = require('body-parser')
app.use(bodyParser.json());
app.use(forms.array());
+1 -1
View File
@@ -10,7 +10,7 @@ services:
environment:
- "CKC_PASSWD=123"
- "VDEBUG=OFF"
- "VNC=ON"
- "VNC=OFF"
#- "WIN_WIDTH=414"
#- "WIN_HEIGHT=896"
#- "XVFB_WHD=500x896x16"
@@ -3,7 +3,7 @@
"message": "Check酱"
},
"appDesc": {
"message": "监控页面变动,并发送异动到微信。 Build.2022.08.17.22.37",
"message": "监控页面变动,并发送异动到微信。 Build.2022.08.18.13.42",
"description":"亦支持http status、json和rss监测。配合自架云端,关电脑后也能运行。"
}
}
@@ -1,20 +1,20 @@
{
"files": {
"main.css": "/static/css/main.f2766b2a.chunk.css",
"main.js": "/static/js/main.e0ceed25.chunk.js",
"main.js": "/static/js/main.d1ba4413.chunk.js",
"runtime-main.js": "/static/js/runtime-main.17191aad.js",
"static/css/2.65280f5c.chunk.css": "/static/css/2.65280f5c.chunk.css",
"static/js/2.fb5c1c43.chunk.js": "/static/js/2.fb5c1c43.chunk.js",
"static/js/2.ad3d44e1.chunk.js": "/static/js/2.ad3d44e1.chunk.js",
"index.html": "/index.html",
"precache-manifest.d081260a9ad335232527f33321ad446e.js": "/precache-manifest.d081260a9ad335232527f33321ad446e.js",
"precache-manifest.789e37a8d3df45a85781a28819605bcd.js": "/precache-manifest.789e37a8d3df45a85781a28819605bcd.js",
"service-worker.js": "/service-worker.js",
"static/media/index.scss": "/static/media/icons-20.cef8cdbb.woff"
},
"entrypoints": [
"static/js/runtime-main.17191aad.js",
"static/css/2.65280f5c.chunk.css",
"static/js/2.fb5c1c43.chunk.js",
"static/js/2.ad3d44e1.chunk.js",
"static/css/main.f2766b2a.chunk.css",
"static/js/main.e0ceed25.chunk.js"
"static/js/main.d1ba4413.chunk.js"
]
}
+19 -2
View File
@@ -427,7 +427,7 @@ chrome.alarms.onAlarm.addListener( async a =>
{
// 获得cookie
const checks = await load_data('checks');
const cookies = await get_cookie_by_checks( checks ) || [];
const cookies = (settings._settings_cookie_sync_range == 'all'? await get_all_cookie_indexed_by_domain() : await get_cookie_by_checks( checks )) || [];
// 引入base64 和 aes 库
let cookie_string = Base64.encode(JSON.stringify(cookies));
@@ -481,7 +481,9 @@ chrome.alarms.onAlarm.addListener( async a =>
} );
newcookie.url = buildUrl(cookie.secure, cookie.domain, cookie.path);
// console.log(newcookie);
chrome.cookies.set(newcookie, (e)=>{console.log(e)});
chrome.cookies.set(newcookie, (e)=>{
// console.log(e)
});
}
}
}
@@ -565,6 +567,19 @@ async function kv_load( key = 'settings' )
return opt;
}
async function get_all_cookie_indexed_by_domain()
{
let cookies = {};
const all_cookies = await chrome.cookies.getAll({});
for( const cookie of all_cookies )
{
if( !cookies[cookie.domain] )
cookies[cookie.domain] = [];
cookies[cookie.domain].push(cookie);
}
return cookies;
}
async function get_cookie_by_checks( checks )
{
let ret_cookies = {};
@@ -573,6 +588,8 @@ async function get_cookie_by_checks( checks )
{
const cookies = await chrome.cookies.getAll({});
let domains = [];
for( const item of checks )
{
// console.log( "item", item );
+1 -1
View File
@@ -1 +1 @@
<!doctype html><html lang="zh-cn"><head><meta charset="utf-8"/><link rel="icon" href="/logo.color.png"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="web content monitor"/><link rel="apple-touch-icon" href="logo.color.png"/><link rel="manifest" href="/manifest.json"/><title>...</title><link rel="stylesheet" href="/tailwind.min.css"><link href="/static/css/2.65280f5c.chunk.css" rel="stylesheet"><link href="/static/css/main.f2766b2a.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script src="/static/js/runtime-main.17191aad.js"></script><script src="/static/js/2.fb5c1c43.chunk.js"></script><script src="/static/js/main.e0ceed25.chunk.js"></script></body></html>
<!doctype html><html lang="zh-cn"><head><meta charset="utf-8"/><link rel="icon" href="/logo.color.png"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="web content monitor"/><link rel="apple-touch-icon" href="logo.color.png"/><link rel="manifest" href="/manifest.json"/><title>...</title><link rel="stylesheet" href="/tailwind.min.css"><link href="/static/css/2.65280f5c.chunk.css" rel="stylesheet"><link href="/static/css/main.f2766b2a.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script src="/static/js/runtime-main.17191aad.js"></script><script src="/static/js/2.ad3d44e1.chunk.js"></script><script src="/static/js/main.d1ba4413.chunk.js"></script></body></html>
+1 -1
View File
@@ -3,7 +3,7 @@
"name": "__MSG_appTitle__",
"description": "__MSG_appDesc__",
"default_locale": "en",
"version": "0.9.8",
"version": "0.9.9",
"icons": {
"512": "logo.color.png"
},
@@ -0,0 +1,50 @@
self.__precacheManifest = (self.__precacheManifest || []).concat([
{
"revision": "0bb4630fcb1f1296fca288470095d66c",
"url": "/index.html"
},
{
"revision": "5c0e11c9e78fa5ed35a3",
"url": "/static/css/2.65280f5c.chunk.css"
},
{
"revision": "db3c9e4f4308a7637d7f",
"url": "/static/css/main.f2766b2a.chunk.css"
},
{
"revision": "5c0e11c9e78fa5ed35a3",
"url": "/static/js/2.ad3d44e1.chunk.js"
},
{
"revision": "db3c9e4f4308a7637d7f",
"url": "/static/js/main.d1ba4413.chunk.js"
},
{
"revision": "4d30565b04f5f2725c56",
"url": "/static/js/runtime-main.17191aad.js"
},
{
"revision": "05f1cdadfe476395f60e233b15c22155",
"url": "/static/media/icons-16.05f1cdad.eot"
},
{
"revision": "3c1c220e7a18286503fb431c7a7fe183",
"url": "/static/media/icons-16.3c1c220e.woff"
},
{
"revision": "3cde8748332d1de6b1ae1c2dc5850754",
"url": "/static/media/icons-16.3cde8748.ttf"
},
{
"revision": "0a5c76518a68c185baa2c6744456918c",
"url": "/static/media/icons-20.0a5c7651.eot"
},
{
"revision": "51ec31f302d0072808e1f83f85fea4cd",
"url": "/static/media/icons-20.51ec31f3.ttf"
},
{
"revision": "cef8cdbb9d0ba82e6e19fb0eeba2ac3d",
"url": "/static/media/icons-20.cef8cdbb.woff"
}
]);
@@ -14,7 +14,7 @@
importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js");
importScripts(
"/precache-manifest.d081260a9ad335232527f33321ad446e.js"
"/precache-manifest.789e37a8d3df45a85781a28819605bcd.js"
);
self.addEventListener('message', (event) => {
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

+15 -3
View File
@@ -20,9 +20,9 @@
</ol>
<h2>最新版本</h2>
<ul>
<li>插件·Chrome/Edge2022.08.17.22.37 <a href="ckc.zip">下载</a> (<a href="https://github.com/easychen/checkchan-dist/raw/master/ckc.zip">Github下载地址,无需注册</a>)</li>
<li>Docker镜像(云端+远程桌面二合一)2022.08.17.21.38 <a href="https://hub.docker.com/repository/docker/easychen/checkchan" rel="nofollow">Docker Hub</a></li>
<li>文档:2022.08.17.22.37</li>
<li>插件·Chrome/Edge2022.08.18.13.42 <a href="ckc.zip">下载</a> (<a href="https://github.com/easychen/checkchan-dist/raw/master/ckc.zip">Github下载地址,无需注册</a>)</li>
<li>Docker镜像(云端+远程桌面二合一)2022.08.18.13.32 <a href="https://hub.docker.com/repository/docker/easychen/checkchan" rel="nofollow">Docker Hub</a></li>
<li>文档:2022.08.18.13.42</li>
<li>更新日志:<a href="https://github.com/easychen/checkchan-dist/commits/main">GitHub</a></li>
<li>生态:RSSHub浏览器插件整合版(<a href="https://github.com/easychen/RSSHub-Radar-with-checkchan">源码</a> | <a href="https://github.com/easychen/RSSHub-Radar-with-checkchan/releases/download/main/1.7.0.with-checkchan.zip">下载</a></li>
</ul>
@@ -105,6 +105,9 @@
<p><a target="_blank" rel="noopener noreferrer" href="image/20220523214048.png"><img src="image/20220523214048.png" alt="" style="max-width: 100%;"></a></p>
<p>如果 「监测周期限制」 为每分钟,而「监控间隔时间」为60分钟,那么每分钟都会尝试监测,而一旦监测成功一次,那么下次监测将是60分钟后。</p>
<p>同时,因为执行监测任务本身也耗费时间,所以「监控间隔时间」为1分钟时,往往每隔一分钟(即每两分钟)才会运行一次任务。</p>
<h3>Selector 扩展语法</h3>
<p>最新的版本支持了一个Selector扩展语法:由于底层通过 <code class="notranslate">document.querySelectorAll</code> 实现,因此会返回匹配的全部元素于一个数组。当这些元素属于同一个父节点我们可以用 <code class="notranslate">:nth-of-type(1)</code> 或者 <code class="notranslate">:nth-child(1)</code>来指定数组中的某一项。</p>
<p>但如果这些元素不属于同一个父节点,那么以上方法会失效。这里添加了一个 selector@n 的语法,让我们可以从 Selector 返回的数组中指定某一个元素。如 <code class="notranslate">.booklist .item@0</code> 将返回 <code class="notranslate">document.querySelectorAll(.booklist .item)[0]</code></p>
<h3>日志查看和错误定位</h3>
<p>为了更清楚的了解定时任务的执行情况,你可以打开「开发者工具」(F12)在 <code class="notranslate">Console</code> 标签页中可以看到任务产生的日志。</p>
<p><a target="_blank" rel="noopener noreferrer" href="image/20220523211235.png"><img src="image/20220523211235.png" alt="" style="max-width: 100%;"></a></p>
@@ -213,6 +216,15 @@
<li>RSS上行地址为: <code class="notranslate">http://$ip:$port/rss/upload?key=$api_key</code></li>
<li>RSS Feed地址为:<code class="notranslate">http://$ip:$port/image/rss.xml?key=$api_key</code></li>
</ul>
<h3>多浏览器Cookie同步接口</h3>
<p>Check酱自架云端内置了Cookie同步用的接口:</p>
<p><a target="_blank" rel="noopener noreferrer" href="image/20220818011127.png"><img src="image/20220818011127.png" alt="" style="max-width: 100%;"></a></p>
<ul>
<li>Cookie同步URL为: <code class="notranslate">http://$ip:$port/cookie/sync?key=$api_key</code></li>
<li>配对密码: 自行设定,同步Cookie的两个浏览器中必须一致</li>
<li>同步方向: 一个发送一个接收,一般电脑上的发送、服务器上远程桌面里的接收</li>
<li>同步频率:发送或者接收间隔时间</li>
</ul>
<h3>云端任务的安全性</h3>
<p>Check酱云端任务的原理是将cookie同步到云端,然后用浏览器查看,本质和用户操作一样。但因为出口IP可能是机房和数据中心,频次太高也有被风控的可能。如果将云端部署在家里,则和在家用电脑访问效果一样。</p>
<h3>云端错误排查</h3>
+15 -3
View File
@@ -9,9 +9,9 @@
</ol>
<h2>最新版本</h2>
<ul>
<li>插件·Chrome/Edge2022.08.17.22.37 <a href="ckc.zip">下载</a> (<a href="https://github.com/easychen/checkchan-dist/raw/master/ckc.zip">Github下载地址,无需注册</a>)</li>
<li>Docker镜像(云端+远程桌面二合一)2022.08.17.21.38 <a href="https://hub.docker.com/repository/docker/easychen/checkchan" rel="nofollow">Docker Hub</a></li>
<li>文档:2022.08.17.22.37</li>
<li>插件·Chrome/Edge2022.08.18.13.42 <a href="ckc.zip">下载</a> (<a href="https://github.com/easychen/checkchan-dist/raw/master/ckc.zip">Github下载地址,无需注册</a>)</li>
<li>Docker镜像(云端+远程桌面二合一)2022.08.18.13.32 <a href="https://hub.docker.com/repository/docker/easychen/checkchan" rel="nofollow">Docker Hub</a></li>
<li>文档:2022.08.18.13.42</li>
<li>更新日志:<a href="https://github.com/easychen/checkchan-dist/commits/main">GitHub</a></li>
<li>生态:RSSHub浏览器插件整合版(<a href="https://github.com/easychen/RSSHub-Radar-with-checkchan">源码</a> | <a href="https://github.com/easychen/RSSHub-Radar-with-checkchan/releases/download/main/1.7.0.with-checkchan.zip">下载</a></li>
</ul>
@@ -94,6 +94,9 @@
<p><a target="_blank" rel="noopener noreferrer" href="image/20220523214048.png"><img src="image/20220523214048.png" alt="" style="max-width: 100%;"></a></p>
<p>如果 「监测周期限制」 为每分钟,而「监控间隔时间」为60分钟,那么每分钟都会尝试监测,而一旦监测成功一次,那么下次监测将是60分钟后。</p>
<p>同时,因为执行监测任务本身也耗费时间,所以「监控间隔时间」为1分钟时,往往每隔一分钟(即每两分钟)才会运行一次任务。</p>
<h3>Selector 扩展语法</h3>
<p>最新的版本支持了一个Selector扩展语法:由于底层通过 <code class="notranslate">document.querySelectorAll</code> 实现,因此会返回匹配的全部元素于一个数组。当这些元素属于同一个父节点我们可以用 <code class="notranslate">:nth-of-type(1)</code> 或者 <code class="notranslate">:nth-child(1)</code>来指定数组中的某一项。</p>
<p>但如果这些元素不属于同一个父节点,那么以上方法会失效。这里添加了一个 selector@n 的语法,让我们可以从 Selector 返回的数组中指定某一个元素。如 <code class="notranslate">.booklist .item@0</code> 将返回 <code class="notranslate">document.querySelectorAll(.booklist .item)[0]</code></p>
<h3>日志查看和错误定位</h3>
<p>为了更清楚的了解定时任务的执行情况,你可以打开「开发者工具」(F12)在 <code class="notranslate">Console</code> 标签页中可以看到任务产生的日志。</p>
<p><a target="_blank" rel="noopener noreferrer" href="image/20220523211235.png"><img src="image/20220523211235.png" alt="" style="max-width: 100%;"></a></p>
@@ -202,6 +205,15 @@
<li>RSS上行地址为: <code class="notranslate">http://$ip:$port/rss/upload?key=$api_key</code></li>
<li>RSS Feed地址为:<code class="notranslate">http://$ip:$port/image/rss.xml?key=$api_key</code></li>
</ul>
<h3>多浏览器Cookie同步接口</h3>
<p>Check酱自架云端内置了Cookie同步用的接口:</p>
<p><a target="_blank" rel="noopener noreferrer" href="image/20220818011127.png"><img src="image/20220818011127.png" alt="" style="max-width: 100%;"></a></p>
<ul>
<li>Cookie同步URL为: <code class="notranslate">http://$ip:$port/cookie/sync?key=$api_key</code></li>
<li>配对密码: 自行设定,同步Cookie的两个浏览器中必须一致</li>
<li>同步方向: 一个发送一个接收,一般电脑上的发送、服务器上远程桌面里的接收</li>
<li>同步频率:发送或者接收间隔时间</li>
</ul>
<h3>云端任务的安全性</h3>
<p>Check酱云端任务的原理是将cookie同步到云端,然后用浏览器查看,本质和用户操作一样。但因为出口IP可能是机房和数据中心,频次太高也有被风控的可能。如果将云端部署在家里,则和在家用电脑访问效果一样。</p>
<h3>云端错误排查</h3>