一种自动获取并同步CK至NAS青龙面板的方法

目录
[隐藏]

在前一篇文章中,我们介绍了在 NAS 上安装青龙面板跑任务的方法:让 NAS 自己赚电费:安装青龙脚本面板,订阅流行脚本,薅羊毛停不下来

青龙面板是一个脚本任务管理平台,可以帮助我们定时的执行你所配置的脚本任务。我们可以自己开发脚本任务并上传配置到青龙面板中,也可以从互联网上订阅他人开发编写的通用型脚本任务,达到如对常见应用的自动签到、领取奖励、定时推送消息等目的。执行这些脚本任务可能会涉及账号登录或认证,其所需的账号认证信息,则需要按脚本任务的具体规则要求去配置,并在失效时及时更新。

但是用青龙面板跑过脚本的朋友应该都知道:许多本身不错的脚本任务,其账号认证所需参数存在获取难度高、有效期较短的问题,频繁的手动更新比较麻烦。这使得跑这些脚本的人工成本非常高。CK 认证信息获取难、过期快是劝退大家的主要原因之一。

下面介绍一种基于代理工具 whistle 与插件拦截网络请求,实现自动提取并同步 CK 认证信息至青龙面板的方法。

1 代理工具软件 whistle 与插件 @lzwme/whistle.x-scripts 简介

提示:此章节为背景与原理介绍,若无兴趣可直接跳过

在获取脚本运行所需的账号认证信息时,基本都会用到代理工具,常见的如 WireShark、fiddler、charles、whistle、burpsuite、mitmproxy 等等,它们功能都十分强大。whistle 也是一个与之功能相似的代理工具,它基于 Node.js 使用 JavaScript 开发,并支持强大的插件扩展能力。

我在基于个人研究学习等目的的基础上,开发了一个插件 @lzwme/whistle.x-scripts,以方便可以自定义的对网络请求做过滤审查,分析提取一些有意思的东西。该插件设计了一套针对网络请求过滤与匹配的规则,将常见的通用处理参数配置化,可以用编写配置规则的方式,简化对网络请求拦截与处理的复杂度。

在拥有个人 NAS 并使用上青龙面板后,为了解决 CK 获取难题,我对该插件进一步扩展,针对青龙面板做了一些功能定制,可以通过编写简单的脚本规则的方式提取 CK 并同步到青龙面板的环境变量中。

需要说明的是,代理软件 whistle 和插件 @lzwme/whistle.x-scripts 都是开源的,可以接受任何代码安全审查,所有代码都可以从 GitHub 下载到:

此外,针对当前较为热门的一些青龙脚本任务编写了对应的 CK 提取规则脚本,也开源在了 GitHub 中:

2 安装与配置代理软件自动获取 CK 上传到青龙面板的方法

2.1 使用个人电脑安装与配置的方法与步骤

首先需要在电脑上安装 Node.js。到其官方下载并安装:https://nodejs.org

然后新建一个本地目录(如 D:\code),打开 cmd 命令提示符并进入到该目录(可以在文件夹的地址输入栏直接输入 cmd 并按回车键,快速打开并进入该目录),执行如下命令:

# 进入 code 目录下
cd d:\code

# 设置 npm 使用国内镜像
npm config set registry https://registry.npmmirror.com
# 全局安装 whistle 和插件 @lzwme/whistle.x-scripts
npm i -g whistle @lzwme/whistle.x-scripts

# 拉取脚本规则仓库 x-scripts-rules
git clone https://github.com/lzwme/x-scripts-rules

在目录下新建一个名称为 w2.x-scripts.config.js 的配置文件,内容参考如下:

/** @type {import('@lzwme/whistle.x-scripts').W2XScriptsConfig} */
const config = {
  // 日志级别,默认为 info
  logType: 'log',
  // 青龙面板相关的配置
  ql: {
    // 青龙面板的访问地址
    host: 'http://127.0.0.1:5700',
    // 访问青龙面板的 ID。获取方式:青龙面板 - 系统设置 - 应用设置 - 创建应用,权限选择“环境变量”和“定时任务”
    clientId: 'qQk-EHQwwxxxx',
    // 访问青龙面板 ID 的密钥:获取方式同 clientId
    clientSecret: 'EnEEqh_o1Dk-Aj3lv0l5xxxx',
  },
  /** 指定自定义脚本规则存放的位置。您可以在该目录下放自己编写的脚本规则文件 */
  ruleDirs: ['./local-scripts-rules'],
  /** 自定义的脚本规则 */
  rules: [],
};

module.exports = config;

注意参考其中关于青龙面板的配置部分说明,修改为您实际的取值。创建并获取 clientIdclientSecret 的方法可参考下图:

最后在 cmd 命令提示符中执行如下命令启动代理软件:

# 后台启动方式,执行后关闭 cmd 也不会停止
w2 start -M capture

# 也可以用监听模式启动,此模式下,关闭 cmd 后代理软件也会跟着停止
w2 run -M capture

经过以上操作,就完成了基本的安装与配置操作。

通过访问地址 http://本机IP:8899,可以打开代理软件的管理页面,可以在这里看到所有配置走该代理服务的网络请求。该代理服务的地址为 本地IP,端口号为 8899

2.2 通过电脑访问目标网站或小程序获取 CK 的方法

若您按照上面的步骤在当前电脑上进行了安装配置,则可以继续做如下操作。

首先执行如下命令以配置电脑的全局代理:

# 安装 whistle 证书到系统,以便可以抓取并解析 https 包
w2 ca

# 设置本机上 whistle 启动的代理地址为本机全局代理
w2 proxy

最后,在电脑上正常访问如京东 PC 版、已支持 CK 抓取的微信小程序等,即可自动同步 CK 到青龙面板的“环境变量”中。

注意:当不再需要时记得关闭全局代理的设置,否则若代理停止时就上不了网了。

关闭本机 whistle 代理的命令为:

w2 proxy off

2.3 基于青龙面板脚本快速安装与配置的方法

我写了一个青龙脚本任务,用来在青龙面板上快速安装与配置 whistle@lzwme/whistle.x-scripts,并拉取脚本规则仓库 x-scripts-rules

如果觉得通过 PC 安装和配置的流程较为繁琐,可以参考以下步骤订阅该脚本。

首先,通过青龙面板的“订阅管理”,添加订阅该仓库(不支持单个脚本的订阅,若不需要其他脚本任务可自行禁用):

ql repo https://github.com/lzwme/ql-scripts.git "ql_|ql-" "backup|todo|deprecated" "utils" "" "js ts"

然后到“任务管理”里找到名称为 whistle.x-scripts 插件安装与更新 的任务,执行它即可。若一切顺利,将会在青龙面板完成全部的安装和配置。

该脚本任务会创建默认的配置文件:

/ql/data/scripts/whistle/w2.x-scripts.config.js

若是 docker 安装,可到对应映射的目录中找到它。如果你的青龙面板是采用默认配置安装的,原则上不需要做特别的配置改动,否则请参考其中有关青龙面板配置的注释说明,按实际情况进行修改。该文件在修改发生变化时会自动更新加载。

此外需注意,如果是基于 docker 安装的青龙面板,记得给该容器增加 8899:8899 的端口映射配置参数。

最后,通过访问地址 http://青龙面板IP:8899,可以打开代理软件的管理页面。该代理服务的地址为 青龙面板IP,端口号为 8899

2.4 手机设置代理,同步手机访问 CK 到青龙面板

whistle 启动的代理地址为启动服务的机器 IP,默认端口为 8899。手机设置代理的方法因不同系统而有所差异,可参考官方文档进行设置:

基本步骤为:

  • 打开手机自带的浏览器,访问 http://开代理的机器IP:8899
  • 下载证书:点击顶部的“HTTPS -> Download RootCA”
  • 安装证书:根据自己的手机型号,自行查找安装自定义证书的方法
  • 配置代理:根据自己的手机型号,自行查找配置代理的方法

在设置代理成功后,通过手机访问如京东、微信小程序等,访问过程中若抓取到 CK 即会同步到青龙面板环境变量中。

需注意的是,当前一些 APP 对代理设置做了检测,当设置了代理并启用自定义证书拦截 https 请求时,则可能会无法正常使用。一般来说在 iOS 系统里对代理设置相对较为友好;Android 系统上绝大多数 APP 都会有检测代理自定义证书的行为,而且 Android 系统自带浏览器和应用也基本都默认不信任安装的自定义证书,抓包难度要大上许多(京东 APP 仍可在设置代理时访问,但多开应用会报错 )。

2.5 自行编写提取 CK 脚本规则的方法

通过以上配置,会拉取 x-scripts-rules 规则脚本库,其中维护了部分流行脚本的 CK 提取规则。

若你有其他自定义提取需求,可以参考相关文档和示例编写私有的脚本规则文件,放到与配置文件同目录下的 local-scripts-rules 目录下,即可被插件扫描和加载,而且发生变更时也会即时更新。

3 其他注意事项及说明

  • 当代理关闭时,记得同时取消电脑和手机等设备上的代理设置,否则就上不了网了。
  • 开启代理时会拦截网络请求进行处理,所以可能会出现网络变慢、卡顿等现象。若不需要时可以关闭代理配置。
  • 小技巧:当前家庭路由器大都支持同时设置 2.4G 和 5G 两个 Wi-Fi,可以将它们设置为不同的名称分别连接,仅在连 2.4G 的 Wi-Fi 时设置代理。这样就可以在通过切换手机连接 Wi-Fi 的方式,快速切换手机网络是否走代理模式了。
  • 实践经验:青龙面板上配置的代理服务稳定性不如 PC,当出现走代理时出现网络无法访问的情况,可先关闭代理设置或更换网络,在青龙面板上手动执行一下whistle.x-scripts 插件安装与更新任务以达到重启服务的目的。

4 免责说明

  • 本文介绍的内容仅适用于基于技术的研究学习交流目的,请勿用于商业用途、任何恶意目的,否则后果自负。
  • 请自行评估本文中提及的软件、仓库和源码的安全性和合法性。您应当在下载研究学习完毕后立即删除它们。本人对使用它们引发的任何问题概不负责,包括但不限于由脚本错误引起的任何损失或损害。

5 相关参考

点赞 (0)

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Captcha Code