佛系生活,缓慢更新,AFK!!

MENU

使用树莓派部署jd羊毛脚本

October 30, 2020 • Read: 67 • 树莓派

临近双十一,tb和jd都开始福利大战,每天消耗大量时间薅些蝇头小利不值当,但是用脚本跑那就很香了。这篇只介绍jd的脚本,东哥永远是我大哥!前几天给树莓派清了下灰,直接暴力冲洗,里边也没啥文件,又重装了遍Debian-Pi-Aarch64系统,重新设置了下,这次直接部署到树莓派上

lxk0301/jd_scripts项目有很多部署方法,此篇只介绍docker部署,两种docker方式都需要docker-compose方式部署,如何安装compose自行谷歌

文件获取

教程中的资源都可在此处获取,也可去项目界面获取

获取cookie

1.打开京东手机版

2.按F12打开控制台,点击左上角的切换图标

3.点击我的使用手机验证码登陆

4.登陆后切换到network栏,点击lclear清除条目,再点我的,选择log.gif,查看header,复制出里面的cookie

5.在consle下运行

var CV = '你复制拿到的cookie';
var CookieValue = CV.match(/pt_key=.+?;/) + CV.match(/pt_pin=.+?;/);
copy(CookieValue);

这样关键参数已经复制到剪贴板,直接使用即可

docker1部署

创建文件

jd_scripts  #操作文件夹
├── logs    #容器运行log文件存放文件夹
│   ├── XXXX.log  #log文件自动生成,创建空logs文件夹即可
│   └── XXXX.log  
├── my_crontab_list.sh  #定时任务脚本,可不加,不自定义时使用仓库默认定时任务
└── docker-compose.yml  #启动文件,启动前务必编辑

修改文件

my_crontab_list.sh参考crontab_list.sh文件内容,复制过来自行修改任务即可

需要会crontab命令

docker-compose.yml文件参考内容如下

其中JD_COOKIE必填,通知方式我采用PUSH_KEY,如不一样可填写其他通知方式,互助码我用脚本自动上车,不需要填写,如有需要可自行填写,或者采用后文的脚本自动上车,如果采用自定义my_crontab_list.sh,那么需要把volumescommand里注释掉的任务取消注释,删除#即可

jd_scripts:
  image: akyakya/jd_scripts
  container_name: jd_scripts
  restart: always
  #如果需要自定定义定时任务的需要自己写好`my_crontab_list.sh`文件 ,取消下面的挂载注释 ,通过 `volumes`挂载进去。
  volumes:
  #  - ./my_crontab_list.sh:/scripts/docker/my_crontab_list.sh
    - ./logs:/scripts/logs
  tty: true
  environment:
    # 注意环境变量填写值的时候一律不需要引号(""或者'')下面这些只是事例,根据自己的需求增加删除
    #jd cookies
    # 例: JD_COOKIE=pt_key=XXX;pt_pin=XXX
    - JD_COOKIE=
    #微信server酱通
    - PUSH_KEY=
    #Bark App通知
    - BARK_PUSH=
    #telegram机器人通知
    - TG_BOT_TOKEN=
    - TG_USER_ID=
    #钉钉机器人通知
    - DD_BOT_TOKEN=
    - DD_BOT_SECRET=
    #京东种豆得豆
    - PLANT_BEAN_SHARECODES=
    #京东农场
    # 例: FRUITSHARECODES=京东农场的互助码
    - FRUITSHARECODES=
    #京东萌宠
    # 例: PETSHARECODES=东东萌宠的互助码
    - PETSHARECODES=
    # 宠汪汪的喂食数量
    - JOY_FEED_COUNT=40
    #京小超
    # - SUPERMARKET_SHARECODES=
    #兑换多少数量的京豆(20,或者1000京豆,或者其他奖品的文字)
    # 例: MARKET_COIN_TO_BEANS=1000
    - MARKET_COIN_TO_BEANS=20
    #是否开启debug模式打印日志
    # 例: JD_DEBUG=false
    - JD_DEBUG=
    #如果使用自定义定时任务,取消下面一行的注释
    #- CRONTAB_LIST_FILE=my_crontab_list.sh
  command:
    - /bin/sh
    - -c
    - |
      #crontab /scripts/docker/my_crontab_list.sh  #如果挂载了自定义任务文件,取消此条注释即可
      crond
      git -C /scripts/ pull
      node

启动测试

目录文件配置好之后在 jd_scripts目录执行

启动
docker-compose up -d #启动
docker-compose logs #打印日志
docker-compose pull #更新镜像
docker-compose stop #停止容器
docker-compose restart #重启容器
docker-compose down #停止并删除容器
测试
docker exec jd_scripts sh -c 'node jd_bean_sign.js' #手动执行签到脚本,也可替换为农场脚本,更改下脚本名称即可
docker exec jd_scripts sh -c 'ls jd_*.js | xargs -i node {}'  #手动执行全部脚本

多账户并行

创建文件

jd_scripts_multi  #操作文件夹
├── logX    #容器X运行log文件存放文件夹,X需替换数字,与容器名对应,也可自行修改,参考yml文件挂载设置  
├── my_crontab_list.sh  #定时任务脚本,可不加,不自定义时使用仓库默认定时任务。每个容器内可自定义
└── docker-compose.yml  #启动文件,启动前务必编辑

docker-compose.yml内容如下:

jd_scripts1jd_scripts2容器使用仓库默认定时任务crontab_list.sh

jd_scripts3容器使用自定义定时任务my_crontab_list3.sh

jd_scripts4jd_scripts5容器使用同一自定义定时任务my_crontab_list4.sh

自行修改environment中的JD_COOKIEPUSH_KEY

version: '3'
services:
  jd_scripts1:
    image: akyakya/jd_scripts
    restart: always
    container_name: jd_scripts1
    tty: true
    volumes:
      - ./logs1:/scripts/logs
    environment:
      - JD_COOKIE=pt_key=;
      - PUSH_KEY=
      - CRONTAB_LIST_FILE=crontab_list.sh
    command:
      - /bin/sh
      - -c
      - |
        git -C /scripts/ pull
        crond
        node
  jd_scripts2:
    image: akyakya/jd_scripts
    restart: always
    container_name: jd_scripts2
    tty: true
    volumes:
      - ./logs2:/scripts/logs
    environment:
      - JD_COOKIE=pt_key=;
      - PUSH_KEY=
      - CRONTAB_LIST_FILE=crontab_list.sh
    command:
      - /bin/sh
      - -c
      - |
        git -C /scripts/ pull
        crond
        node
  jd_scripts3:
    image: akyakya/jd_scripts
    restart: always
    container_name: jd_scripts3
    tty: true
    volumes:
      - ./logs3:/scripts/logs
      - ./my_crontab_list3.sh:/scripts/docker/my_crontab_list.sh
    environment:
      - JD_COOKIE=pt_key=;
      - PUSH_KEY=
      - CRONTAB_LIST_FILE=my_crontab_list.sh
    command:
      - /bin/sh
      - -c
      - |
        crontab /scripts/docker/my_crontab_list.sh
        git -C /scripts/ pull
        crond
        node
  jd_scripts4:
    image: akyakya/jd_scripts
    restart: always
    container_name: jd_scripts4
    tty: true
    volumes:
      - ./logs4:/scripts/logs
      - ./my_crontab_list4.sh:/scripts/docker/my_crontab_list.sh
    environment:
      - JD_COOKIE=pt_key=;
      - PUSH_KEY=
      - CRONTAB_LIST_FILE=my_crontab_list.sh
    command:
      - /bin/sh
      - -c
      - |
        crontab /scripts/docker/my_crontab_list.sh
        git -C /scripts/ pull
        crond
        node
  jd_scripts5:
    image: akyakya/jd_scripts
    restart: always
    container_name: jd_scripts5
    tty: true
    volumes:
      - ./logs5:/scripts/logs
      - ./my_crontab_list4.sh:/scripts/docker/my_crontab_list.sh
    environment:
      - JD_COOKIE=pt_key=;
      - PUSH_KEY=
      - CRONTAB_LIST_FILE=my_crontab_list.sh
    command:
      - /bin/sh
      - -c
      - |
        crontab /scripts/docker/my_crontab_list.sh
        git -C /scripts/ pull
        crond
        node

文件配置好之后在 jd_scripts_multi目录执行

docker-compose up -d #启动
docker-compose logs #打印日志
docker-compose pull #更新镜像
docker-compose stop #停止容器
docker-compose restart #重启容器
docker-compose down #停止并删除容器

docker3部署

树莓派系统默认有gitdocker-compose,因此无需安装,直接使用即可。

下载文件

git clone https://github.com/chinnkarahoi/jd-scripts-docker
cd jd-scripts-docker

修改信息

注意使用专业软件,例如notepad++之类

将剪贴板中参数填入到./env/env1文件中,将server酱SCKEY填入./env/all文件的PUSH_KEY

启动测试

启动容器
docker-compose up --build --force-recreate --detach jd1
# jd1是容器名,同时会调用env1中的cookie,因此,如需添加第二个账号,应为,此时jd2会调用env2中cookie信息
docker-compose up --build --force-recreate --detach jd2
测试容器
#运行签到脚本测试,如无意外,会收到server酱发来的通知消息
#jd1
docker exec jd1 bash -c 'set -o allexport; source /all; source /env; source /jd-scripts-docker/resolve.sh; cd /scripts; node jd_bean_sign.js'
#jd2
docker exec jd2 bash -c 'set -o allexport; source /all; source /env; source /jd-scripts-docker/resolve.sh; cd /scripts; node jd_bean_sign.js'
手动执行
#手动运行所有脚本
#jd1
docker exec jd1 bash -c 'set -o allexport; source /all; source /env; source /jd-scripts-docker/resolve.sh; cd /scripts; ls jd_*.js | xargs -i node {}'
#jd2
docker exec jd2 bash -c 'set -o allexport; source /all; source /env; source /jd-scripts-docker/resolve.sh; cd /scripts; ls jd_*.js | xargs -i node {}'

容器会自动运行,平常无需手动,每天0点会自动运行一次所有脚本。

需要配置自定义控制的,请参考Secrets全集合

#其他命令
docker-compose logs #查看log
docker-compose down #停止并删除容器

其他

docker使用问题

自行参考官方文档命令教程

权限问题

有时候一些错误是没有操作权限引起的,返回容器文件夹外

chmod -R 777 文件名

多账户并行

docker1已经更新多帐户并行,docker3更改下构建命令中的容器名就行

助力码问题

目前一共有种豆得豆东东农场东东萌宠京喜工厂东东工厂五个助力码,需要自行在log里找自己的助力码

上车脚本

下载后自行按照脚本的介绍添加助力码server酱,数据库每月逢0清空(即0、10、20日),凌晨2点

定时任务需要使用crontab,自行谷歌crontab定时任务

docker3

构建出错

20201129125032.jpg

某些机器无法使用默认构建容器命令,会出错,可换为以下命令试试

docker-compose up -d build --force-recreate jd1  #不保证可解决
获取助力码脚本

脚本未更新,只能获取种豆得豆东东农场东东萌宠助力码,未有京喜工厂东东工厂

bash get-code.sh  #bash不可用就换sh

参考文章

项目wiki

docker1部署

docker3部署

Last Modified: November 29, 2020
Archives QR Code
QR Code for this page
Tipping QR Code