京东自动化脚本开发实战:基于enen项目的二次开发教程
enen项目是一个强大的京东自动化工具集合,提供了丰富的脚本功能,如种豆得豆、签到领红包、农场浇水等日常任务的自动化实现。本文将带你快速掌握基于enen项目进行京东自动化脚本二次开发的完整流程,即使是编程新手也能轻松上手。
一、环境准备:3分钟搭建开发环境
1.1 安装基础依赖
确保你的系统已安装Node.js(推荐v14+)和Git,执行以下命令检查环境:
node -v # 查看Node.js版本 git --version # 查看Git版本1.2 获取项目源码
通过Git克隆enen项目仓库到本地:
git clone https://gitcode.com/gh_mirrors/en/enen cd enen npm install # 安装项目依赖1.3 目录结构速览
核心文件说明:
- jd_plantBean.js:京东种豆得豆主脚本,包含任务逻辑和API调用
- utils/h5st.js:京东H5ST签名算法实现,用于接口请求加密
- jdCookie.js:Cookie管理工具,处理多账号登录状态
- TS_JDHelloWorld.ts:基础类库,提供HTTP请求、日志输出等通用功能
二、核心功能解析:从现有脚本学习
2.1 京东种豆得豆脚本分析
以jd_plantBean.js为例,该脚本实现了自动种植、浇水、助力等功能:
- 定时任务配置:支持通过cron表达式设置执行频率(如
1 7-21/2 * * *表示每天7-21点每2小时执行) - 多账号支持:通过Cookie数组实现多京东账号切换执行
- API调用流程:封装了京东种豆接口
https://api.m.jd.com/client.action,包含请求参数构造、签名计算和响应处理
2.2 通用工具类使用
项目提供了丰富的工具函数简化开发:
- User-Agent管理:USER_AGENTS.js 提供大量京东APP模拟UA,避免请求被拦截
- H5ST签名:utils/h5st.js 实现京东H5ST v4.2/v4.3签名算法,直接调用
getH5st()即可生成签名 - 通知推送:utils/pushplus.ts 支持将任务结果推送到微信、短信等渠道
三、二次开发实战:编写自定义任务脚本
3.1 开发步骤:从0到1创建新脚本
步骤1:创建脚本文件
在项目根目录新建jd_my_task.ts文件,继承基础类JDHelloWorld:
import { User, JDHelloWorld } from "./TS_JDHelloWorld"; class MyTask extends JDHelloWorld { constructor() { super("京东自定义任务"); // 任务名称 } async run() { // 任务逻辑实现 console.log("开始执行自定义任务..."); } } new MyTask().run();步骤2:实现核心功能
以"领取京东首页红包"为例,添加API调用逻辑:
async run() { for (let user of this.users) { this.user = user; console.log(`【京东账号${this.user.index}】开始领取红包`); // 调用京东红包接口 const res = await this.get("https://api.m.jd.com/client.action", { functionId: "redPacketGet", appid: "wh5", body: JSON.stringify({ activityId: "123456" }) }); if (res.data?.code === 0) { this.logger.info("红包领取成功"); } else { this.logger.error("领取失败:" + res.data?.msg); } } }步骤3:配置定时任务
在脚本头部添加cron注释,支持定时执行:
/** * cron "0 9 * * *" script-path=jd_my_task.ts,tag=京东自定义任务 */3.2 调试与测试技巧
本地运行调试
node jd_my_task.ts # 直接执行脚本关键参数获取
- Cookie获取:通过浏览器F12开发者工具,在京东网站请求头中复制
Cookie - 接口参数:使用Charles或Fiddler抓包工具分析京东APP请求,获取
functionId和请求体格式
四、高级技巧:提升脚本稳定性
4.1 多账号管理
通过 jdCookie.js 实现多账号配置,在config/cookie.json中添加多个账号Cookie:
[ "pt_key=xxx;pt_pin=account1;", "pt_key=yyy;pt_pin=account2;" ]4.2 风控规避策略
- 随机UA:使用 TS_USER_AGENTS.ts 中的随机UA函数
- 请求间隔:添加随机延迟,避免高频请求触发风控
await this.sleep(random(1000, 3000)); // 随机延迟1-3秒4.3 错误处理
完善的异常捕获机制:
try { // 核心逻辑 } catch (e) { this.logger.error(`任务执行失败:${e.message}`); // 发送错误通知 await this.sendNotify("京东任务异常", `账号${this.user.index}执行失败`); }五、常见问题解决
Q1:脚本执行提示"Cookie无效"?
A:检查Cookie是否过期,重新获取京东登录Cookie。建议使用 jd_checkCookie.ts 验证Cookie有效性。
Q2:H5ST签名失败如何处理?
A:确保使用最新版签名算法,可参考 utils/h5st_4.3.js 中的实现,或更新项目依赖。
Q3:如何添加自定义通知渠道?
A:扩展 utils/pushplus.ts 中的通知函数,集成企业微信、钉钉等API。
通过本文的教程,你已经掌握了基于enen项目开发京东自动化脚本的核心技能。无论是日常任务自动化还是个性化功能开发,enen项目都能为你提供强大的支持。开始动手实践,让京东薅羊毛效率提升10倍吧!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考