Docker部署青龙面板 实现微信推送和薅羊毛

AI摘要:使用Docker部署青龙面板,实现微信推送和薅羊毛。通过配置依赖、添加订阅、设置定时任务,可推送天气、生日等信息,并实现京东等平台的薅羊毛功能。

Powered by AISummary.

一、docker命令部署青龙

docker run -dit \
  -v /home/docker/ql/config:/ql/config \
  -v /home/docker/ql/log:/ql/log \
  -v /home/docker/ql/db:/ql/db \
  -p 5700:5700 \
  --restart always \
  --name qinglong \
  --hostname qinglong \
  whyour/qinglong:latest

二、免代码安装依赖

  输入http://ip:5700
访问青龙面板,青龙面板安装好后,有些脚本总是提示找不到依赖,ssh或者群晖终端安装对于新手朋友来说不是很友好,其实青龙面板的依赖管理里面可以直接安装依赖,只需要输入依赖的名称就行。

  点击青龙面板的依赖管理——>新建依赖——>选择NodeJs、自动拆分选择是、复制以下的依赖填到名称里——>点击确定,等待安装完成。Python3/Linux步骤同上。

NodeJs下

crypto-js
prettytable
dotenv
jsdom
date-fns
tough-cookie
tslib
ws@7.4.3
ts-md5
jsdom -g
jieba
fs
form-data
json5
global-agent
png-js
@types/node
require
typescript
js-base64
axios
moment

Python3下

requests
canvas
ping3
jieba
PyExecJS
aiohttp

Linux下

curl
jq

三、薅京东羊毛

1. 常用的仓库地址

  本质上安装是从GitHub上获取数据,如果服务器和GitHub的连接网络不好,可能无法获取成功要多试几次,或者选择其他的仓库地址,或者换一个时间点去拉取``毕竟我们偶尔访问GitHub快,偶尔dns污染后访问不上.改进的方法这里发不出来,自行百度.

2. 添加订阅

  在青龙面板的管理页面点击订阅管理->新建订阅,将仓库链接填入,并填写定时规则

  填写名称和链接,定时任务的话

3. 运行订阅

  注意同时最好只有一个订阅,太多会导致卡死!!

  添加成功后手动执行一次,在定时任务中看到很多的任务.

4. 获取京东手机版cookie

  在浏览器的无痕模式中打开https://m.jd.com/,然后登陆
https://m.jd.com/

  f12进入调试模式,点击network(网络),再点击Fetch/XHR,点击clear,然后在网页中进入购物车(这个过程弹出二维码你点击右上角的直接访问即可) 在左边一条条找下来,直到找到cookie,存在一个txt里先。

  • 在cookie中找到pt_key,复制到pt_pin。格式为:pt_key=app_openAAJxxxxx;pt_pin=xxxxx;

    5. 在青龙面板中添加京东cookie

      新建环境变量,环境变量名称为:JD_COOKIE

  环境变量值填写格式:

  单个账号格式如下,注意要用英文的分号!!! 如果你还是操作失败,可以直接把所有的cookie全部黏贴上去(最后再用这一方法,不推荐)。

  • pt_key=XXX;pt_pin=xxx;
  • 如果说多个帐号的话
"xx1;&xx2;&xx3"
pt_key=XXX;pt_pin=xxx;&pt_key=XXX;pt_pin=xxx;&pt_key=XXX;pt_pin=xxx;

6. 测试任意一个京东的定时任务

如下图说明cookie配置成功(注意有些脚本可能用不了,多测几个京东的定时任务)

四、配置天气、生日推送

  • 很多人用青龙面板一般都是挂签到脚本,如京东,阿里,快手等等。
  • 用青龙面板也可以给微信推送任何消息-如天气信息,生日倒计时等等。
  • 下面给大家介绍一下怎么设置给微信推送消息

1、注册pushplus账户

  打开这个网站注册pushplus,可以直接用微信登录

  然后点击发送消息-一对多消息

  可以获取到pushplus的token

4f0b2eaec4f242988986389af0358635

  点击新增群组-填写完相关信息即可-确定

  需要填群简介,填上即可

  此时可以用你女朋友的微信和你的微信扫码查看二维码-扫码成功以后关注公众号-需要启用成功-方可接收消息

  此时可以看到订阅人列表-是否成功,可以将公众号的免打扰关闭-便于接收消息。

  通过以上步骤我们需要得到以下值

pushplus的token群组编码
4f0b2eaec4f242988986289af03586351234

2、注册和风天气

  打开和风天气 注册一个账号(需要验证邮箱和手机号),登录到后台。

  点击项目管理-创建项目-填写相关信息(选择免费订阅的每天可以请求1000次个人完全够用)-创建即可

  根据如图所示-获取到和风天气的key

  此时获取到和风天气的key

和风天气的key
af9e45f9bec148151ca5f71da16d8818

3、添加脚本

  然后打开脚本管理-点击右上角“+”,创建一个空文件,文件命名为“push_weixin.sh”,将如下内容粘贴进去,并修改相应内容后保存。

#!/bin/bash
#############版权信息#################
# 本脚本作者:有云转晴
# 官网:https://www.ywsj.cf/
# 邮箱:lyl@yyzq.cf
# 版本:V1.2
# 日期:2023年9月22日
#############版权信息#################
#############pushplus信息#############
#pushplus的token
token="4f0b2eae24f242988986389af0358635"                 #①改成自己的pushplus的token
#文本的标题
title="早安,大家好"                                        #②推送文本的标题可以自定义
# 群组编码
topic="1224"                                              #③改成自己pushplus的群组编码
#############pushplus信息#############

#############天气信息#############
#城市
city='北京-朝阳'                                          #④改成自己需要设置的城市
#城市天气代码
city_code="101010300"                                    #⑤改成自己需要查询的和风天气的城市代码打开 https://cloudreve.yyzq.cf/s/m1Sv/doc?name=China-City-List-latest.xlsx 查询
#和风天气key
hefeng_key='08d10cbc03d04458a9172b0f844cf300'            #⑥改成自己的和风天气的key
# 发送HTTP请求并将JSON响应存储到临时文件中
curl -s -o weather_data.json "https://devapi.qweather.com/v7/weather/3d?location=${city_code}&key=${hefeng_key}" --compressed --header "Accept-Charset: UTF-8"
# 使用jq解析JSON数据
updateTime=$(jq -r '.updateTime' weather_data.json)
sunrise=$(jq -r '.daily[0].sunrise' weather_data.json)
sunset=$(jq -r '.daily[0].sunset' weather_data.json)
temperature_max=$(jq -r '.daily[0].tempMax' weather_data.json)
temperature_min=$(jq -r '.daily[0].tempMin' weather_data.json)
wind_direction_day=$(jq -r '.daily[0].windDirDay' weather_data.json)
wind_direction_night=$(jq -r '.daily[0].windDirNight' weather_data.json)
weather_text_day=$(jq -r '.daily[0].textDay' weather_data.json)
weather_text_night=$(jq -r '.daily[0].textNight' weather_data.json)
moonPhase=$(jq -r '.daily[0].moonPhase' weather_data.json)
humidity=$(jq -r '.daily[0].humidity' weather_data.json)
precip=$(jq -r '.daily[0].precip' weather_data.json)
pressure=$(jq -r '.daily[0].pressure' weather_data.json)
uvIndex=$(jq -r '.daily[0].uvIndex' weather_data.json)
# 天气数据更新时间
today_updateTime="$updateTime"
#日出时间
time_sunrise="$sunrise"
#日落时间
time_sunset="$sunset"
#月相
today_moonPhase="$moonPhase"
#相对湿度
today_humidity="$humidity %"
#降水量
today_precip="$precip mm"
#气压
today_pressure="$pressure hPa"
#紫外线指数
today_uvIndex="$uvIndex"
#最高温度
max_temperature="$temperature_max ℃"
#最低温度
min_temperature="$temperature_min ℃"
#白天风向
winddirection_day="$wind_direction_day"
#夜晚风向
winddirection_night="$wind_direction_night"
#白天天气
day_weather_text="$weather_text_day"
#夜晚天气
night_weather_text="$weather_text_night"
# 删除临时文件
rm weather_data.json
#############天气信息#############
#姓名1
name1='张三'                                             #⑦ 姓名1
#姓名1的生日日期(只支持阳历)
name1_birthdate="1-1"                                   #⑧ 姓名1的生日
#姓名2
name2='李四'                                             #⑨ 姓名2
#姓名2的生日日期(只支持阳历)
name2_birthdate="3-9"                                    #10 姓名2的生日
# 恋爱开始日期
birthdate="2020-01-03"                                   #11  恋爱开始时间
# 获取当前日期的年份
current_year=$(date +'%Y')

# 构造name1完整的生日日期(当前年份 + 生日日期)
full_name1_birthdate="$current_year-$name1_birthdate"
# 构造name2完整的生日日期(当前年份 + 生日日期)
full_name2_birthdate="$current_year-$name2_birthdate"
# 获取当前日期
current_date=$(date +'%Y-%m-%d')
# 使用 'date' 命令将日期转换为秒级时间戳
birthday_timestamp1=$(date -d "$full_name1_birthdate" +%s)
birthday_timestamp2=$(date -d "$full_name2_birthdate" +%s)
current_timestamp=$(date -d "$current_date" +%s)

# name1如果生日已经过去,则计算距离下一个生日的天数
if [[ $birthday_timestamp1 -lt $current_timestamp ]]; then
  next_birthday1="$((current_year + 1))-$name1_birthdate"
  next_birthday_timestamp1=$(date -d "$next_birthday1" +%s)
  days1=$(( (next_birthday_timestamp1 - current_timestamp) / 86400 ))

else
  # name1生日尚未过去,则计算距离生日的天数
  days1=$(( (birthday_timestamp1 - current_timestamp) / 86400 ))

fi

# name2如果生日已经过去,则计算距离下一个生日的天数
if [[ $birthday_timestamp2 -lt $current_timestamp ]]; then
  next_birthday2="$((current_year + 1))-$name2_birthdate"
  next_birthday_timestamp2=$(date -d "$next_birthday2" +%s)
  days2=$(( (next_birthday_timestamp2 - current_timestamp) / 86400 ))

else
  # name2生日尚未过去,则计算距离生日的天数
  days2=$(( (birthday_timestamp2 - current_timestamp) / 86400 ))

fi

# 使用 'date' 命令将恋爱开始日期转换为秒级时间戳
birthdate_timestamp=$(date -d "$birthdate" +%s)
# 计算天数差
lovedays=$(( (current_timestamp - birthdate_timestamp) / 86400 ))


curl -s -o yiyan_data.json "https://v1.hitokoto.cn/?encode=js&select=%23hitokoto" --compressed --header "Accept-Charset: UTF-8"
# 使用sed提取文本内容
extracted_text=$(cat yiyan_data.json | sed -n 's/.*var hitokoto="\([^"]*\)".*/\1/p')
# 删除临时数据
rm yiyan_data.json

content="👇🏻👇🏻==========👇🏻👇🏻<br>今天是: $(date +'%Y-%m-%d')日<br>每日一句:《${extracted_text}》<br>地区:${city}<br>天气数据更新时间:${today_updateTime}<br>日出时间:${time_sunrise}<br>日落时间:${time_sunset}<br>月相:${today_moonPhase}<br>白天天气:${day_weather_text}<br>夜晚天气:${night_weather_text}<br>最高气温:${max_temperature}<br>最低气温:${min_temperature}<br>相对湿度:${today_humidity}<br>降水量:${today_precip}<br>气压:${today_pressure}<br>紫外线指数:${today_uvIndex}<br>白天风向:${winddirection_day}<br>夜晚风向:${winddirection_night}<br>今天是我们恋爱❤️的:第${lovedays}天<br>距离${name1}的生日🍰还有:${days1}天<br>距离${name2}的生日🍰还有:${days2}天<br>👆🏻👆🏻==========👆🏻👆🏻"
template="html"


# 构造请求 URL
url="https://www.pushplus.plus/send"

# 发送请求
curl --data-urlencode "token=$token" --data-urlencode "title=$title" --data-urlencode "content=$content" --data-urlencode "template=$template" --data-urlencode "topic=$topic"  "$url"

选中保存好的脚本然后依次点击-调试-运行

此时如果没有配置错误的话你手机上就会收到推送消息了

4、设置定时任务

  打开定时任务-新建任务

  假如你要设置每天早上七点推送消息可以这样设置-要一天中多个时间推送可以新增定时规则
示例:

定时任务解释
* * * * *
分别代表
分 时 日 月 周

  星号 () * 表示定时任务的时间配置,分别对应分钟、小时、日期、月份和星期。以下是一些示例:

* * * * *: 这表示每一分钟都运行任务。
0 * * * *: 这表示每小时的开始时运行任务。
0 0 * * *: 这表示每天的午夜运行任务。
30 9 * * *: 这表示每天的上午9点30分运行任务。
0 8 * * 1: 这表示每周一的上午8点运行任务。

  你可以根据需要在这些位置上指定具体的数值,例如 30 8 1 表示每周一的上午8点30分运行任务。在这里,星号表示通配符,表示“每”或“任意”。

  你可以使用类似于Cron表达式的格式来配置定时任务。在编程或操作系统中,你可以使用Cron表达式来设置定时任务的执行时间。

  以上步骤就是全部的流程赶紧给你女朋友设置吧。

打赏
评论区
头像
文章目录

本站已运行: