2025最强NodeJS京东自动化开发指南:从入门到精通
前言:解放双手的京东生态自动化方案
你是否还在每天手动完成京东签到、农场浇水、领豆任务?是否因错过限时活动而懊悔?本项目通过NodeJS生态打造的全自动化脚本体系,已帮助10万+用户实现京东系应用全流程自动化,日均节省2小时重复操作。本文将从环境搭建到核心开发,带你掌握企业级京东自动化解决方案,成为脚本开发高手。
读完本文你将获得
- 搭建高可用京东自动化开发环境
- 掌握15+核心功能模块的配置与扩展
- 实现多账号管理与智能任务调度
- 接入9种通知渠道实时监控任务状态
- 从零开发自定义自动化任务的能力
项目概述:技术栈与架构设计
项目定位
基于NodeJS的京东生态自动化工具集,提供签到、领豆、农场、宠物等30+核心功能,支持多账号并行操作与跨平台部署。
技术架构
核心技术栈
| 技术 | 版本 | 用途 |
|---|---|---|
| NodeJS | ≥14.0.0 | 运行环境 |
| TypeScript | 5.0.4 | 类型安全开发 |
| Axios | 0.21.4 | HTTP请求 |
| Crypto-js | 4.1.1 | 数据加密 |
| Dotenv | 16.0.3 | 环境变量管理 |
| Date-fns | 2.30.0 | 时间处理 |
快速开始:10分钟上手实战
环境准备
# 1. 克隆仓库 git clone https://gitcode.com/gh_mirrors/en/enen.git cd enen # 2. 安装依赖(国内用户推荐) npm install -g cnpm --registry=https://registry.npmmirror.com cnpm install # 3. 配置环境变量 cp .env.example .env核心配置(.env文件)
# 京东Cookie(多账号用&分隔) JD_COOKIE=pt_key=xxx;pt_pin=xxx;&pt_key=yyy;pt_pin=yyy; # 通知配置(至少选一种) PUSH_KEY=xxx # Server酱 BARK_PUSH=https://api.day.app/xxx # Bark推送 TG_BOT_TOKEN=xxx # 即时通讯机器人首次运行
# 执行签到领豆脚本 ts-node jd_bean_sign.ts # 执行农场自动化脚本 ts-node jd_farm.ts核心功能模块详解
任务模块总览
| 脚本文件 | 功能描述 | 调度时间 | 依赖模块 |
|---|---|---|---|
| jd_bean_sign.ts | 京东签到领豆 | 8 10 * * * | H5ST签名 |
| jd_farm.ts | 东东农场浇水 | 15 8-10,18-20 * * * | 任务系统、助力系统 |
| jd_cash.ts | 现金签到 | 9 0 * * * | 用户认证 |
| jd_health.ts | 健康社区任务 | 30 7 * * * | 表单提交 |
| jd_joy_park_run.ts | 汪汪乐园赛跑 | */30 * * * * | WebSocket |
签到领豆模块深度解析
核心代码
async main(user: User) { try { // 1. 初始化用户代理与签名工具 this.user = user this.user.UserAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/98.0.4758.102 Safari/537.36" this.h5stTool = new H5ST('64e35', this.fp, this.user.UserAgent, this.user.UserName, 'https://h5.m.jd.com/', 'https://h5.m.jd.com/') await this.h5stTool.genAlgo() // 2. 生成签名参数 let timestamp: number = Date.now() let h5st = this.h5stTool.genH5st('235ec', {"fp": "-1", "shshshfp": "-1"}, 'apple', '12.1.4', 'signBeanAct', timestamp) // 3. 发送签到请求 let res: any = await this.get(`https://api.m.jd.com/client.action?functionId=signBeanAct&body=${encodeURIComponent(JSON.stringify({"fp": "-1"}))}&h5st=${h5st}`, { 'Host': 'api.m.jd.com', 'Cookie': this.user.cookie }) // 4. 结果处理与通知 if (res.data.status === '1') { console.log('签到成功', res.data.dailyAward.beanAward.beanCount * 1) await this.sendNotify("签到成功", `获得豆数量: ${res.data.dailyAward.beanAward.beanCount}`) } } catch (e) { console.log(e.message) } }执行流程
高级配置:打造企业级自动化系统
多账号管理方案
// jdCookie.js 核心实现 const fs = require('fs') const dotenv = require('dotenv') let CookieJDs = [] // 从环境变量加载 if (process.env.JD_COOKIE) { // 支持&分隔或换行分隔的多账号 if (process.env.JD_COOKIE.indexOf('&') > -1) { CookieJDs = process.env.JD_COOKIE.split('&'); } else if (process.env.JD_COOKIE.indexOf('\n') > -1) { CookieJDs = process.env.JD_COOKIE.split('\n'); } else { CookieJDs = [process.env.JD_COOKIE]; } } // 去重与过滤空值 CookieJDs = [...new Set(CookieJDs.filter(item => !!item))]通知系统配置指南
支持9种通知渠道,配置示例:
Server酱(微信通知)
# .env配置 PUSH_KEY=SCT1234567890abcdefghijklmnopqrstuvwxyz即时通讯机器人
TG_BOT_TOKEN=123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11 TG_USER_ID=123456789企业微信应用
QYWX_AM=wwcff56746d9adwers,B-791548lnzXBE6_BWfxdf,mingcheng,1000001任务调度:精准控制执行时机
Cron表达式完全指南
| 字段 | 允许值 | 示例 | 说明 |
|---|---|---|---|
| 分钟 | 0-59 | */30 | 每30分钟 |
| 小时 | 0-23 | 8-10 | 8到10点 |
| 日期 | 1-31 | 1,15 | 每月1和15日 |
| 月份 | 1-12 | */2 | 每2个月 |
| 星期 | 0-6 | 0,6 | 周末 |
自定义调度示例(pm2.config.js)
module.exports = { apps: [ { name: "jd_bean_sign", script: "./jd_bean_sign.ts", interpreter: "ts-node", cron_restart: "8 10 * * *", // 每天10:08执行 autorestart: false, watch: false }, { name: "jd_farm", script: "./jd_farm.ts", interpreter: "ts-node", cron_restart: "15 8,18 * * *", // 每天8:15和18:15执行 autorestart: false, watch: false } ] };扩展开发:从零创建自定义任务
开发步骤
- 创建新文件
jd_my_task.ts - 继承JDHelloWorld基类
- 实现核心方法
- 配置调度时间
示例:创建"京东健康社区"任务
/** * 京东健康社区任务 * cron: 30 7 * * * */ import {User, JDHelloWorld} from "./TS_JDHelloWorld" import {H5ST} from "./utils/h5st" class Jd_health extends JDHelloWorld { user: User h5stTool: H5ST fp: string = '' constructor() { super(); } async init() { this.fp = await this.getFp4_1() await this.run(this) } async main(user: User) { try { this.user = user // 1. 任务初始化... // 2. 执行任务逻辑... // 3. 结果处理与通知... console.log(`账号${user.index+1}健康社区任务完成`) } catch (e) { console.log(e.message) } } } new Jd_health().init().then()常见问题与解决方案
签名相关问题
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| h5st参数错误 | 算法失效 | 执行npm run update更新h5st模块 |
| 403 Forbidden | UserAgent过期 | 更新TS_JDHelloWorld.js中的UA字符串 |
| 签名生成超时 | 网络问题 | 设置代理或切换网络环境 |
通知相关问题
| 问题现象 | 解决方案 |
|---|---|
| Server酱无通知 | 检查PUSH_KEY是否正确,访问sc.ftqq.com测试 |
| Bark推送失败 | 确保BARK_PUSH包含完整URL,如https://api.day.app/xxx |
| 即时通讯无法连接 | 配置TG_PROXY_HOST和TG_PROXY_PORT |
部署方案对比
| 部署方式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 本地手动 | 调试方便 | 需保持电脑开机 | 开发测试 |
| 树莓派 | 24小时运行 | 需购买硬件 | 个人长期使用 |
| 云服务器 | 稳定可靠 | 有一定成本 | 企业级应用 |
| GitHub Actions | 免费 | 有运行时间限制 | 简单任务调度 |
云服务器部署脚本
# 1. 安装PM2进程管理 cnpm install -g pm2 # 2. 启动任务 pm2 start ecosystem.config.js # 3. 保存并设置开机自启 pm2 save pm2 startup贡献指南
代码提交规范
<类型>[可选作用域]: <描述> [可选正文] [可选脚注]类型包括:
- feat: 新功能
- fix: 错误修复
- docs: 文档更新
- style: 代码格式
- refactor: 重构
- test: 测试相关
- chore: 构建过程或辅助工具变动
PR流程
- Fork本仓库
- 创建分支
git checkout -b feature/amazing-feature - 提交变更
git commit -m 'feat: add some amazing feature' - 推送到分支
git push origin feature/amazing-feature - 创建Pull Request
总结与展望
本项目通过模块化设计与签名算法封装,实现了京东生态的全流程自动化。目前已支持20+核心功能,日均执行任务超100万次。未来将重点优化:
- AI驱动的任务优先级调度
- 图形化配置界面
- 更完善的错误重试机制
- 多平台容器化部署方案
附录:核心依赖库说明
| 依赖名称 | 版本 | 用途 | 国内CDN |
|---|---|---|---|
| axios | 0.21.4 | HTTP客户端 | https://cdn.jsdelivr.net/npm/axios@0.21.4/dist/axios.min.js |
| crypto-js | 4.1.1 | 加密算法 | https://cdn.jsdelivr.net/npm/crypto-js@4.1.1/crypto-js.min.js |
| dotenv | 16.0.3 | 环境变量 | https://cdn.jsdelivr.net/npm/dotenv@16.0.3/lib/main.js |
| date-fns | 2.30.0 | 日期处理 | https://cdn.jsdelivr.net/npm/date-fns@2.30.0/index.js |
关注与支持
如果本项目对你有帮助,请:
- 点赞 👍
- 收藏 ⭐
- 关注作者 👤
下期预告:《京东自动化高级实战:逆向API与签名分析》
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考