- 1.png
- 使用我这个bash签到脚本,可以多账户自动签到并且可以自己改通知
- 之前写的一篇文章实现哔哩哔哩自动签到只是大致的写了签到的功能
- 但是并没有通知信息或者支持多账号签到
- 现在来公布一下我写的签到脚本以及使用方法
- 我这个脚本使用Jq来获取哔哩哔哩API接口数据
- jq可以将json数据格式化,也可以按照一个规则将数据切片过滤
- 官方Jq地址
- 直接安装Jq
- 这里以ubuntu做示范
sudo apt-get install jq
- 编译安装Jq
- 下载
wget https://github.com/jqlang/jq/releases/download/jq-1.6/jq-1.6.tar.gz
- 解压
tar -zxvf jq-1.6.tar.gz
- 进入目录
cd jq-1.6
- 编译安装
./configure && make && make install
- 验证安装
jq --version
- 创建目录
mkdir 自动签到
- 创建cookie文件
- 如果有多个账号就创建多个文件,我有两个账号所以创建两个文件
touch qaq卟言
touch 夏日樱花粉
- 按照这个文章实现哔哩哔哩自动签到登入获取账户cookie
- 依次填写至文件内
- 创建脚本
touch qd.sh
- 写入内容
#这里使用死循环,当然你可以定时执行 while true do echo "〔自动签到[哔哩哔哩]〕" echo "$(date "+%Y-%m-%d %H:%M:%S")" # cookie文件路径,默认当前目录 path="./" # 判断 签到日期文件 是否存在 if [ ! -f "$path$(date "+%Y-%m-%d")" ]; then # 签到哔哩哔哩的cookie文件,每一个文件存储一个cookie # 多用户使用 , 进行分隔,下面填写你上面生成的文件 qd=qaq卟言,夏日樱花粉 # 生成签到日期文件 #touch $path$(date "+%Y-%m-%d") # 循环通过逗号分割字符串 for i in $(echo $qd | sed "s/,/ /g"); do # 获取文件做后修改时间戳 LAST_MODIFY_TIMESTAMP=`stat -c %Y $path$i` # 格式化时间戳 formart_date=`date '+%Y-%m-%d %H:%M:%S' -d @$LAST_MODIFY_TIMESTAMP` # 定义30天到期 date_30=$(date -d "$formart_date 30 day" +"%Y-%m-%d %H:%M:%S") t1=`date -d "$formart_date" +%s` t2=`date -d "$date_30" +%s` if [ $t1 -gt $t2 ]; then # 文件修改的时间大于30天 echo -e "\n$i cookie可能到期\n" echo -e "修改时间:$formart_date\n" echo -e "到期时间:$date_30\n" #通知QQ信息 # curl -d "user_id=QQ号&message=〔自动签到[哔哩哔哩]〕 # $i cookie可能到期,修改时间:$formart_date,到期时间:$date_30&auto_escape=false" http://127.0.0.1:5700/send_private_msg elif [ $t1 -eq $t2 ]; then # 文件修改的时间等于30天 echo -e "\n$i cookie准备到期\n" echo -e "修改时间:$formart_date\n" echo -e "到期时间:$date_30\n" #通知QQ信息 # curl -d "user_id=QQ号&message=〔自动签到[哔哩哔哩]〕 # $i cookie准备到期,修改时间:$formart_date,到期时间:$date_30&auto_escape=false" http://127.0.0.1:5700/send_private_msg else # 文件修改的时间小于30天 # 定义cookie参数 qd_cook=`cat $path$i` # 签到用户 echo -e "\n开始签到:'$i'\n" # 签到接口 sign_data=$(curl --user-agent "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36" --referer 'https://link.bilibili.com/p/center/index' --cookie "$qd_cook" "https://api.live.bilibili.com/sign/doSign") sign=$(echo $sign_data | jq -r '.data.text') if [ "$sign" = "null" ] then # 签到错误信息 sign_message=$(echo $sign_data | jq -r '.message') # 输出签到错误信息 echo -e "'$i'签到信息:$sign_message\n" #通知QQ信息 # curl -d "user_id=QQ号&message=〔自动签到[哔哩哔哩]〕 # $i 签到信息:$sign_message&auto_escape=false" http://127.0.0.1:5700/send_private_msg else echo -e "\n'$i'签到信息:签到成功\n" echo -e "\n'$i'签到礼物:$sign\n" #通知QQ信息 # curl -d "user_id=QQ号&message=〔自动签到[哔哩哔哩]〕 # $i 签到信息:$sign&auto_escape=false" http://127.0.0.1:5700/send_private_msg fi fi done fi echo -e "\n所有账号签到完成" echo "下次签到时间" echo "$(date -d "$(date "+%Y-%m-%d %H:%M:%S") 1 day" +"%Y-%m-%d %H:%M:%S")" #睡眠一天 sleep 86400s done
- 上面我把QQ机器人的通知注释了,如果你有的话可以取消注释
- 当然你也可以使用邮箱,微信,钉钉等方法通知
- 执行脚本
./qd.sh
- 效果
- 2.png
- 3.png
- 其他内容
- 这个脚本是通过将Cookie写入文件,判断文件修改时间是否超过一个月来判断Cookie是否到期
- 用Bashcat获取内容,再用curl发送签到请求
- 因为哔哩哔哩Cookie一般是一个月到期,只要是不重复登入就行
- 目前Cookie只能手动抓取,到期了只能重新抓
- 有时候可能会出现Cookie到期,所以需要通知自己来手动更新Cookie
【自用哔哩哔哩每日自动签到】
qaq卟言2023-08-18 00:18:42
Bash
开始
完结