青龙是一款支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台。
目前流行挂各种自动化签到脚本,如京东、快手和美团等,在活动多的时候,挂京豆脚本一天的收益能有一块钱,一年下来,也能包住云服务器的开销。
安装青龙
还是老样子,推荐使用docker进行安装,不容易与本机其他应用产生冲突。
创建一个文件夹用于存放docker-compose.yml文件,容器部署后配置文件也存储在这个文件夹
mkdir /opt/qinglong
cd /opt/qinglong
docker-compose
创建docker-compose.yml文件,其中内容如下
version: '2'
services:
web:
# alpine 基础镜像版本
image: whyour/qinglong:latest
# debian-slim 基础镜像版本
# image: whyour/qinglong:debian
volumes:
- ./data:/ql/data
ports:
- "0.0.0.0:5700:5700"
environment:
# 部署路径非必须,以斜杠开头和结尾,比如 /test/
QlBaseUrl: '/'
restart: unless-stopped
容器部署
docker-compose up -d
容器部署成功后,通过ip地址:5700
即可访问,首次登录需要设置账户和密码,其中推送设置可以先跳过,后续再进行设置。进入面板界面如图所示。
拉取仓库
首先,需要拉取脚本,以KingRan的京东脚本库为例,点开定时任务菜单,选择新建任务,命令如下。
ql repo https://github.com/KingRan/KR.git "jd_|jx_|jdCookie" "activity|backUp" "^jd[^_]|USER|utils|function|sendNotify|ql|JDJR"
定时规则如下,这个cron表达式将在每天的午夜(00:00)执行命令或脚本。
0 0 * * *
如果是国内的服务器,记得给github仓库地址前加个代理,在cloudflare搭建个人代理那节,我搭建了一个github代理,也可以用我的,https://github.leitingtool.cf/。
新建完拉库任务后,点击运行,就会根据命令中预设的规则将仓库中的脚本下载到面板中,并根据脚本中的设置,自动添加定时任务,一般来说,定时任务不需要我们自己进行修改。
拉取完仓库如图
获取cookie
我们要使用脚本登录京东账号,让其自动帮我们完成东东农场浇水、自动签到、自动价保等功能。而脚本登录我们账号就需要cookie来实现,而一般在浏览器中抓取到的cookie有效期都很短,之前是在一个月左右,过期后需要重新进行抓取,比较麻烦。
wskey 是移动端APP特有 Cookie 参数值, WSKEY 的有效期为半年起步,具体有效时间暂时未知,配置后可转换生成有效期为 5
个小时左右的 cookie
,实现长时间挂载账号刷京豆。
注销登录(在抓取设备的APP中手动操作退出账号登录)、修改密码会导致其失效,若想在APP中切换账号直接卸载APP即可,极少数情况下存在被官方主动踢下线的可能性
抓取WSKEY
准备工具:
app:VNET(抓包用)、京东;
VNET下载地址:https://www.vnet-tech.com/zh/
VNET抓包wskey
打开已下载的VNET软件,第一步先安装CA证书;
点击右下角三角形上面的按钮按钮,选择导出CA证书,app就会将CA证书下载至手机你指定的路径里
随后在手机设置里进行安装,这里不同手机可能安装位置不同,具体根据自己的手机型号百度查询如何安装CA证书即可,以小米手机为例,在设置中搜索CA证书,选择仍然安装,可能会需要你使用指纹或者密码进行解锁,然后在文件存储中选择你刚刚保存的CA证书,CA证书名字为CA.pem。
完成了CA证书的安装后,就可以进行抓包了,在VNET中选择添加京东为抓包应用,点击三角形按钮,开始抓包。切换到京东app,转到个人界面刷新一下,在VNET中就可以看到抓到的各种数据。
在看到来源于**.jd.com
的抓包数据后,这就是我们需要的数据报,就可以停止抓包了
点开抓取的数据,点进去往下滑,找到cookie里的pin和wskey,这样就算获取成功了。
青龙面板使用wskey转换脚本
一般拉取的仓库中都有wskey转换脚本,根据青龙规定的环境变量创建规则,将刚才VNET抓取的pin和wskey添加到青龙的环境变量中,环境变量明明规则如下:
变量名: JD_WSCK
参数: pin=xxxx;wskey=xxxx; # 注意分号 不要用中文分号!
将wskey的环境变量添加完成后,便可以去执行wskey转换的脚本了,
执行后在环境变量里就能看到转化后的JD_COOKIE了
安装依赖
有些脚本库会需要安装一些依赖,在青龙面板里,可以对依赖进行一键安装。
以KingRan大佬的库为例,直接运行时会报错,显示没有ds
库
在依赖管理中,选择Nodejs,点击新建依赖,名称一栏中输入我们需要安装的库,点击确定,面板就会自动为我们安装。不同的脚本有时需要的依赖不同,需要时常查看脚本运行日志,查看脚本是否运行成功,如果失败,常常是因为确实依赖库的原因,缺少什么库,就可以在依赖管理中进行添加。
推送设置
青龙面板提供了多种消息推送方式,如server酱、企业微信、push plus等。
以push plus为例,登录http://www.pushplus.plus/,使用微信扫码登录,绑定自己的微信,在发送消息一栏中选择一对一消息,创建自己的token
将获取的token填入青龙配置文件的推送设置中,点击保存。
后续脚本运行或者资产变动信息,就会通过push plus接口发送到绑定的微信上。
青龙的内置命令
# 更新并重启青龙
ql update
# 运行自定义脚本extra.sh
ql extra
# 添加单个脚本文件
ql raw <file_url>
# 添加单个仓库的指定脚本
ql repo <repo_url> <whitelist> <blacklist> <dependence> <branch> <extensions>
# 删除旧日志
ql rmlog <days>
# 启动tg-bot
ql bot
# 检测青龙环境并修复
ql check
# 重置登录错误次数
ql resetlet
# 禁用两步登录
ql resettfa
# 依次执行,如果设置了随机延迟,将随机延迟一定秒数
task <file_path>
# 依次执行,无论是否设置了随机延迟,均立即运行,前台会输出日,同时记录在日志文件中
task <file_path> now
# 并发执行,无论是否设置了随机延迟,均立即运行,前台不产生日,直接记录在日志文件中,且可指定账号执行
task <file_path> conc <env_name> <account_number>(可选的)
# 指定账号执行,无论是否设置了随机延迟,均立即运行
task <file_path> desi <env_name> <account_number>
# 设置任务超时时间
task -m <max_time> <file_path>
# 实时打印任务日志,创建定时任务时,不用携带此参数
task -l <file_path>
参数说明
- file_url: 脚本地址
- repo_url: 仓库地址
- whitelist: 拉取仓库时的白名单,即就是需要拉取的脚本的路径包含的字符串,多个竖线分割
- blacklist: 拉取仓库时的黑名单,即就是需要拉取的脚本的路径不包含的字符串,多个竖线分割
- dependence: 拉取仓库需要的依赖文件,会直接从仓库拷贝到scripts下的仓库目录,不受黑名单影响,多个竖线分割
- extensions: 拉取仓库的文件后缀,多个竖线分割
- branch: 拉取仓库的分支
- days: 需要保留的日志的天数
- file_path: 任务执行时的文件路径
- env_name: 任务执行时需要并发或者指定时的环境变量名称
- account_number: 任务执行时指定某个环境变量需要执行的账号序号
- max_time: 超时时间,后缀"s"代表秒(默认值), "m"代表分, "h"代表小时, "d"代表天