Giter Club home page Giter Club logo

jd-base's Introduction

使用背景

  • 本shell脚本用来运行lxk0301/scripts中的js脚本,解放双手,自动玩耍京东的各种游戏,主要有:各种签到、东东农场、种豆得豆、天天加速、摇钱树、宠汪汪、东东萌宠、京小超,获取各种小羊毛。
  • 如果是对js脚本有使用的上的问题请前往 lxk0301/scripts 提出,这里只解决shell脚本的问题。

适合人群

  • 每个月要超出Github Action免费使用时长的;
  • 没有水果机的;
  • 想要精确控制脚本运行时间的;
  • 有nas或者vps等7×24运行设备的;
  • 想把Cookies牢牢掌握在自己手上的。

部署环境

docker安装

自行安装好docker,然后创建容器:

docker run -dit \
  -v /Host主机上的目录/:/root `#冒号左边请替换为Host主机上的目录` \
  --name jd \
  --restart unless-stopped \
  evinedeng/jd-base:latest

物理机安装

请安装好git wget curl nodejs npm

## debian/ubuntu,以及其他以debian为基础的:
apt install -y git wget curl nodejs npm
## CentOS/RedHat/Fedora等
yum install git wget curl nodejs npm

克隆脚本

docker安装

  1. 第一次运行时,容器会自动克隆好跑JD小游戏的js脚本和shell脚本(如果网络不好,就会花很长时间)。会在映射的/root下产生以下三个文件夹。
  • log: 记录所有日志的文件夹,其中跑js脚本的日志会建立对应名称的子文件夹,并且js脚本日志会以年-月-日-时-分-秒的格式命名。
  • scripts: 从 lxk0301/scripts 克隆的js脚本。
  • shell: 从 EvineDeng/jd-base 克隆的shell脚本。

进入容器环境(以下所有docker部分的命令均需要在进入容器后运行):

docker exec -it jd /bin/sh

列出文件:

ls /root

如果发现没有以上三个文件夹,可以运行以下命令(如果有了就直接到修改信息这一步):

# 使用wget
sh -c "$(wget https://raw.githubusercontent.com/EvineDeng/jd-base/main/first_run.sh -O -)"
# 或使用curl
sh -c "$(curl -fsSL https://raw.githubusercontent.com/EvineDeng/jd-base/main/first_run.sh)"

以上脚本会再次尝试自动克隆js脚本和shell脚本,如果仍然失败,再考虑以下办法

cd /root
git clone https://github.com/lxk0301/scripts
git clone https://github.com/EvineDeng/jd-base shell
sh shell/first_run.sh

物理机安装

先cd至你想存放脚本的路径,假如为/home/myid/jd,那么:

cd /home/myid/jd
# 使用curl
bash -c "$(wget https://raw.githubusercontent.com/EvineDeng/jd-base/main/first_run.sh -O -)
# 或使用wget
bash -c "$(wget https://raw.githubusercontent.com/EvineDeng/jd-base/main/first_run.sh -O -)"

脚本会自动在/home/myid/jd下载并创建好文件三个文件夹log scripts shell,解释见docker一节。

修改信息

  • docker
cd /root/shell
cp git_pull.sh.sample git_pull.sh  #复制git_pull.sh.sample为git_pull.sh
chmod +x *.sh                      #重要:必须赋予.sh脚本可执行权限
nano git_pull.sh                   #编辑git_pull.sh,如果不习惯,请直接使用可视化编辑器编辑这个文件
  • 物理机,仍然以上面举例的/home/myid/jd,后面就默认以docker的目录来举例了,如果是物理机安装请自行修改:
cd /home/myid/jd/shell
cp git_pull.sh.sample git_pull.sh  #复制git_pull.sh.sample为git_pull.sh
chmod +x *.sh                      #重要:必须赋予.sh脚本可执行权限
nano git_pull.sh                   #编辑git_pull.sh,如果不习惯,请直接使用可视化编辑器编辑这个文件

注意:

  • 请不要直接修改git_pull.sh.sample!而只修改git_pull.sh
  • 如果在windows下编辑git_pull.sh,请使用 notepad++ 等专业工具,请不要使用记事本。
  • .sh脚本如果没有可执行权限,定时任务将无法正常运行。
  • 如何修改请仔细阅读文件中的注释部分。

1.基本能用的玩法

只修改以下部分:

  • 定义用户数量
  • 定义Cookie

2. 进阶玩法

基本能用的玩法中要修改的以外,再根据你的需要修改以下部分:

  • 定义通知TOKEN
  • 定义东东农场每个人自己的互助码
  • 定义东东农场要为哪些人助力
  • 定义东东萌宠每个人自己的互助码
  • 定义东东萌宠要为哪些人助力
  • 定义种豆得豆每个人自己的互助码
  • 定义种豆得豆要为哪些人助力
  • 定义京小超商圈每个人自己的互助码
  • 定义京小超商圈要为哪些人助力

3. 高级玩法

基本能用的玩法进阶玩法中要修改的以外,再根据你的需要修改以下部分:

  • 定义是否自动删除失效的脚本与定时任务
  • 定义是否自动增加新的本地定时任务
  • 定义京小超蓝币兑换数量
  • 定义京小超蓝币成功兑换奖品是否静默运行
  • 定义京小超是否自动升级商品和货架
  • 定义京小超是否自动更换商圈
  • 定义京小超是否自动使用金币去抽奖
  • 定义东东农场是否静默运行
  • 定义东东农场是否使用水滴换豆卡
  • 定义宠汪汪喂食克数
  • 定义宠汪汪兑换京豆是否静默运行
  • 定义宠汪汪是否自动给好友的汪汪喂食
  • 定义宠汪汪是否自动偷好友积分与狗粮
  • 定义宠汪汪是否自动报名宠物赛跑

定时任务

完成所有信息修改以后,先检查一下git_pull.sh能否正常运行。

cd /root/shell  #如果是物理机,则为cd /home/myid/jd/shell ,其中/home/myid/jd/为上面假定你设置的路径。
sh git_pull.sh  #如果物理机sh有问题则换成bash git_pull.sh,以下情况与此类似。

看看js脚本的信息替换是否正常。

cd /root/scripts  #如果是物理机,则为cd /home/myid/jd/scripts ,其中/home/myid/jd/为上面假定你设置的路径,后面不再说明,请自行替换。
git diff          # 按q退出

然后复制一份crontab.list到/root目录下。物理机请替换/root为自己的目录。

cp /root/shell/crontab.list.sample /root/crontab.list

编辑定时任务并自己根据你的需要调整,也可以使用其他可视化工具编辑。物理机请替换/root为自己的目录。

nano /root/crontab.list

添加定时任务。物理机请替换/root为自己的目录,包括crontab.list这个文件中的。

crontab /root/crontab.list

说明:

  • crontab.list这个文件必须存放在/root下(物理机则为你一开始确定的目录),其他地方会影响后续脚本运行。
  • 第一条定时任务/root/shell/git_pull.sh会自动更新js脚本和shell脚本,并完成Cookie、互助码等信息修改,这个任务本身的日志会存在/root/log/git_pull.log中。更新过程不会覆盖掉你已经修改好的git_pull.sh文件。
  • 第二条定时任务/root/shell/rm_log.sh用来自动删除旧日志,如果你未按下一节自动删除旧日志中操作的话,这条定时任务不会生效。
  • git_pull.sh中的AutoAddCron设置为false时(不自动增加新的定时任务),如何手动添加新增js脚本的定时任务:
  1. 检查有没有新增脚本:
cat /root/log/js-add.list
  1. 如果上一条命令不为空说明有新的定时任务待添加,把内容记下来,比如有个新增的任务叫为jd_test,那么就运行以下命令:
cp /root/shell/jd.sh.sample /root/shell/jd_test.sh
  1. 再次提醒不要忘记赋予可执行权限:
chmod +x /root/shell/jd_test.sh
  1. 编辑crontab.list,并添加进crontab
nano /root/crontab.list
crontab /root/crontab.list
  • 如果想使用自动增加定时任务的功能(git_pull.shAutoAddCron设置为true),而又不想手动改crontab,那么建议直接使用UTC时间而不是北京时间,创建docker容器时增加一个环境变量TZ=UTC即可,不过crontab任务清单建议你自己也调成UTC时间,创建命令如下:
docker run -dit \
  -v /Host主机上的目录/:/root `#冒号左边请替换为Host主机上的目录` \
  -e TZ=UTC \
  --name jd \
  --restart unless-stopped \
  evinedeng/jd-base:latest

自动删除旧日志

单个日志虽然小,但如果长期运行的话,日志也会占用大量空间,如需要自动删除,请按以下流程操作:

  1. 复制一份rm_log.sh,并赋予可执行权限:
cd /root/shell
cp rm_log.sh.sample rm_log.sh
chmod +x rm_log.sh
  1. 该脚本在运行时默认删除30天以前的日志,如果需要设置为其他天数,请修改脚本中的HowManyDays
  2. 定时任务部分的说明修改定时任务。

补充说明

  • 其实shell目录下所有以jd_开头以.sh结尾的文件内容全都一样,全都是从jd.sh.sample复制来的,它们是依靠它们自身的文件名来找到所对应的scripts目录下的js文件并且执行的。所以,有新的任务时,只要你把jd.sh.sample复制一份和新增的.js脚本名称一样,赋予可执行权限,再增加定时任务就可以了。
  • 如果想要重新调整定时任务运行时间,请不要直接使用crontab -e命令修改,而是编辑/root/crontab.list这个文件,然后使用crontab /root/crontab.list命令覆盖。这样的好处只要你没有删除容器映射目录/root在Host主机上的原始文件夹,重建容器时任务就不丢失,并且,如果重建容器,容器还将在启动时自动从/root/crontab.list中恢复定时任务。
  • 如果shell脚本有更新,需要你手动复制一份git_pull.sh.sample,并重新修改必须的信息,然后命名为git_pull.sh,流程如下:
cd /root/shell
cp git_pull.sh.sample git_pull_2.sh
# 然后修改git_pull_2.sh,也可使用其他可视化工具修改
nano git_pull_2.sh
# 修改好后,替换旧的git_pull.sh
mv git_pull_2.sh git_pull.sh
# 不要忘记赋予修改后的.sh脚本可执行权限
chmod +x git_pull.sh
  • 如有帮助到你,请点亮 star 。

jd-base's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.