321 Commits
Author SHA1 Message Date
github-actions[bot] 640dbac72a docs: 自动更新 daily 和 wxapp 脚本状态 [skip ci] 2026-10-17 11:47:33 +00:00
smallfawn 3acce2fe02 Merge pull request #316 from fanhengkui/main
麦富迪会员:请求头增加X-Token参数
2026-10-17 19:47:22 +08:00
晴天莫爱小鸟 465cb02556 旧衣客:增加可用积分打印 2026-10-16 09:45:47 +08:00
晴天莫爱小鸟 edf5b3083a 爱玛会员俱乐部:签到活动ID改为查询 2026-10-15 11:06:41 +08:00
晴天莫爱小鸟 eac576b0e3 益禾堂:修改签到token取值和签到活动ID 2026-10-14 10:33:53 +08:00
晴天莫爱小鸟 06fa8ac96f 麦富迪会员:请求头增加X-Token参数 2026-10-14 09:24:01 +08:00
github-actions[bot] c29a9486b5 docs: 自动更新 daily 和 wxapp 脚本状态 [skip ci] 2026-09-24 09:50:36 +00:00
smallfawn b50690b5cf Merge pull request #315 from fanhengkui/main
问题修复
2026-09-24 17:50:26 +08:00
smallfawn 4ffbe42577 Update README.md 2026-09-24 10:56:02 +08:00
晴天莫爱小鸟 2e4615fac5 谷雨:
1.增加缓存机制
2.修复签到报错问题
2026-09-21 22:27:51 +08:00
晴天莫爱小鸟 51a175f609 有赞修复CK有效判断 2026-09-18 09:56:45 +08:00
晴天莫爱小鸟 350baeb391 修改ck是否有效判断 2026-09-18 09:32:25 +08:00
晴天莫爱小鸟 d3f1cf48ec 洽洽会员俱乐部
1.修改微信登录逻辑
2.修复签到
3.修改验证缓存是否有效接口
2026-09-05 23:34:16 +08:00
github-actions[bot] cf206f0177 docs: 自动更新 daily 和 wxapp 脚本状态 [skip ci] 2026-09-05 13:12:06 +00:00
smallfawn 6278d284aa Merge pull request #312 from fanhengkui/main
爱玛会员俱乐部签到ACTIVITY_ID更新
2026-09-05 21:11:57 +08:00
晴天莫爱小鸟 5fe6ae569b 甜润世界
1.修复ck失效重新登录后提示“未注册”
2.石斛增加阅读任务,并模拟阅读
2026-09-05 10:26:46 +08:00
晴天莫爱小鸟 da2e8c5223 爱玛会员俱乐部签到ACTIVITY_ID更新 2026-09-04 16:38:51 +08:00
github-actions[bot] 0807011e69 docs: 自动更新 daily 和 wxapp 脚本状态 [skip ci] 2026-09-02 11:39:03 +00:00
smallfawn a1085746ea Merge pull request #311 from fanhengkui/main
问题修复
2026-09-02 19:38:52 +08:00
晴天莫爱小鸟 36500bea24 参数错误问题 2026-09-02 15:40:59 +08:00
晴天莫爱小鸟 9c9e42cfbd 多多果园公众号版参数区分 2026-09-02 15:38:49 +08:00
晴天莫爱小鸟 10bbc11c1e 有赞脚本header无Extra-Data问题 2026-09-02 15:36:10 +08:00
晴天莫爱小鸟 272626d689 多多果园-公众号登录版 2026-09-01 11:09:00 +08:00
smallfawn 26d50db3d7 Update README.md 2026-08-28 18:07:42 +08:00
github-actions[bot] 8af2884107 docs: 自动更新 daily 和 wxapp 脚本状态 [skip ci] 2026-08-28 06:03:53 +00:00
smallfawn bba41b42e4 Merge pull request #308 from fanhengkui/main
任务修复
2026-08-28 14:03:42 +08:00
晴天莫爱小鸟 d2ac30ed18 旧衣客修复报错 2026-08-28 12:28:51 +08:00
晴天莫爱小鸟 911480853b 1.普通签到拆分
2.广告签到更换
2026-08-28 11:57:46 +08:00
fanhengkui bbe50861a0 Merge branch 'smallfawn:main' into main 2026-08-22 21:12:20 +08:00
smallfawn c80f260530 Update README.md 2026-08-21 19:45:11 +08:00
github-actions[bot] f857374d2e docs: 自动更新 daily 和 wxapp 脚本状态 [skip ci] 2026-08-21 02:17:57 +00:00
smallfawnandClaude Opus 5 858a71444f fix(wxapp): 修正 fafa/parkson/fhxmh 把账号态与坏会话报成硬失败
全量实跑 144 个 openid 型脚本时发现的三处误报(链路本身没问题):

fafa / parkson(同为 smp-api.iyouke.com 系):
  登录回 200 但不带 userId 时拿到的是无效会话,脚本仍打印「登录成功: userId=」,
  随后积分/签到接口连串 401(token已失效/缺少token令牌),读起来像脚本坏了。
  实测两种成因:wx_server 取码失败/限流拿到坏 code(最常见,错峰重跑即恢复),
  或该微信号未在该店铺注册。现无 userId 即判会话无效、说明成因并短路主流程。
  修后两者均实测签到成功(各 +1积分)。

fhxmh 飞鹤星妈会:
  服务端对未注册微信号回 code:00000/success:true,但 data.tokenInfo 为 null、
  只给 tempUid;脚本按「登录失败 HTTP 200: {原始JSON}」抛出。现识别为未注册,
  输出干净的 ⚠️ 提示。

体检结论:89 个正常、23 个账号未注册、3 个风控、4 个对方 5xx、2 个广告门禁、
4 个需多段变量;唯一待查疑似缺陷是 qutaoka 登录持续「请求参数错误!」,需抓包核对。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 10:17:21 +08:00
smallfawnandClaude Opus 5 100d19ffb8 chore(wxapp): 去重删除 oppo2.js(与既有 oppo.js 同一签到活动)
按 appid / ckName / 主机+端点 / 内容相似度四个维度对 wxapp 的 161 个脚本做了
去重排查,只有一处是真重复:

oppo2.js(我此前迁移新增) 与既有 oppo.js 虽入口 appid 不同
(wx9c825da1a7ba062e / wxe705c556754a1de2),但实测指向同一个 OPPO 会员活动:
- 同 host hd.opposhop.cn、同端点 /cumulativeSignIn/{getSignInDetail,signIn}
- 同 CREDITS_ADD_ACTION_ID 1788913e6d9e4683b8b9ab0088733560
- 同账号实跑两者均解析到「8月积分商城签到 activityId=2083099953777090560」,
  且读到完全一致的会员态(累计 3 天、积分 8)
oppo.js 是既有实现且能运行时发现当期活动 id,故保留 oppo.js、删除 oppo2.js。

排查结论(保留,非重复):
- 有赞族 15 个脚本共用 h5.youzan.com,但各自对应不同店铺(kdtId 无重复)
- 微盟族 hrj/yzyj/lthwy/rrk 共用 xapi.weimob.com,商户 vid/bosId 各异
- 伊利族 hlyili/jdyj/yjlxh 共用 msmarket.msx.digitalyili.com,TENANT_ID 各异;
  其共享的 wx621112590b635086 只是云托管网关域名前缀,不是小程序 appid
- ckName 与主 MINI_APP_ID 均无冲突

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 14:37:20 +08:00
smallfawn d348ca08a4 Update README.md 2026-08-20 13:54:02 +08:00
github-actions[bot] e3538d9c55 docs: 自动更新 daily 和 wxapp 脚本状态 [skip ci] 2026-08-20 03:50:45 +00:00
smallfawnandClaude Opus 5 2d4c26fdc7 fix(ydyp): 签到状态接口404不再中断整个流程(#288)
中国移动云盘:/market/signin/page/info 已被服务端下线(实测 404),而
getSigninStatus 用默认 throwHttpErrors,404 直接以 AxiosError 冒泡,
导致该账号后续签到与所有任务全部无法执行(issue 原话「导致无法继续自动签到」)。

改动:
- getSigninStatus 加 throwHttpErrors:!1(与同文件 clickTask 一致的容错写法),
  404 不再抛出中断
- 状态查询失效时不再直接 return,而是跳过状态判断继续调 doSignin,
  并明确日志「状态接口已失效(服务端404,需重新抓包更新)」

实测端点存活情况:page/info 404、page/receive 404、hecheng1T/info 404;
doSignin 用的 commonMarketconfig/getByMarketRuleName 200、task/taskList 200、
page/taskExpansion 200、receiveTaskExpansion 200 —— 故仅状态查询失效,
其余任务链路正常,修复后不再被一个死接口拖垮。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 11:50:28 +08:00
smallfawnandClaude Opus 5 473006bca2 fix(jlyh): 请求失败不再抛 TypeError,改为明确的登录态失效提示(#276)
吉利银河:httpRequest 在请求出错/响应为空时 resolve() 返回 undefined,
调用方直接读 result.code 触发
  TypeError: Cannot read properties of undefined (reading 'code')
(refresh_token:205 / signstate:230 / sign / points 四处)。
这正是 issue 描述的「隔一段时间没打开APP就报错」——refreshToken 过期后
接口失败,脚本以崩溃收场而非给出可读原因。

改动:
- httpRequest 失败/空响应时返回 { __requestFailed: true } 而非 undefined
- 四处调用点改用可选链,并在 __requestFailed 时输出明确提示:
  「refreshToken 可能已过期,请先用手机打开一次「吉利银河」APP 刷新登录态后再跑」
- points 的积分字段也加了可选链兜底

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 11:50:28 +08:00
smallfawnandClaude Opus 5 af1e7587b7 fix(wxapp): 修复白马智选登录误判与社服益寿证书过期拒连(#303)
baimazhixuan: 服务端对已注册用户返回 status:200 + '登录成功',但 isOk 只认
status 1/true/code 0,导致报「登录失败: 登录成功」。isOk 增加 200 判定。
实测:修复后 登录成功 -> 签到成功。

shefuyishou: 该站 TLS 证书已过期,Node 默认直接以 certificate has expired 拒连
(脚本完全跑不起来)。新增仅作用于本脚本的 https.Agent 放宽证书校验。
实测:证书阻塞解除,请求可达;剩余「获取openID2失败」为对方服务端
code2session 失败(疑似其 appid/密钥配置变更),非脚本问题。

#303 另两项实测结论:一汽丰田(fxh) 积分接口 404 已做非致命跳过、签到正常;
中粮(yuexihui) 为对方服务端 HTTP 503。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 11:50:28 +08:00
smallfawnandClaude Opus 5 71f70e35ee fix(fyzq): 变量值支持 openid#备注 格式(#304)
风云再起北京:构造函数未剥离 # 后的备注,直接把 'openid#备注' 整串传给
wx_server 取码,导致按文档格式配置备注的用户全部失败(报「获取小程序数据失败」)。
现按 # 切分,openid 用于取码、备注仅用于日志显示。

实测:修复后 openid#备注 格式可正常登录并签到成功(第1天 +5奇豆)。
另确认 issue 提到的「系统版本过低」来自已下线的老接口 /min/min-mall/sign_sign_in,
当前脚本已改用 H5 的 /mobile/business/sign/info/* 接口,功能正常。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 11:50:28 +08:00
github-actions[bot] aff404b4ff docs: 自动更新 daily 和 wxapp 脚本状态 [skip ci] 2026-08-20 02:19:33 +00:00
smallfawnandClaude Opus 5 6f471a97fa feat(wxapp): 新增59个小程序签到脚本(YYB-GO 5仓迁移至smallcat取码)
从 5 个 YYB-GO 仓库(SuperNaiBA/villagebully8/juelianxyt/wyd3325/lcmovie)
按 appid 去重后迁移,统一改为 smallcat wx_server 取码 + 青龙 Env 结构。

实测签到成功(部分):三福/奈雪/唯品会/顺丰/名创优品/途虎养车/OPPO/酒仙/
倍轻松/美的会员/铛铛一下/绿蜜蜂/东风日产/海尔智家/捷停车/爱康/杰士邦/
DT生活/小紫有约/安吉尔/玛氏/骆驼/袋鼠妈妈/全棉时代/金典/宝妈上班等。

登录链已通、待账号注册即可签:都市甜心/海澜之家/美孚/绿动新球/OLE/
SM广场/深圳春茧/比亚迪海洋/洽洽/小米社区等。

已知服务端限制(脚本正确但当前签不了):携程(运行态cSign校验)、得物(滑块)、
拼多多果园(anti-content)、天机观(发奖接口运行态校验)、嘉立创(账号风控)、
骆驼户外(活动已结束)、红人库(商户OneCRM实例空)、蒙娜丽莎(需OCR验证码)。

另修复 fxh.js(积分查询404不阻断签到) 与 jyxe.js。
所有脚本仅含应用级常量,不含任何个人凭证。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 10:16:37 +08:00
github-actions[bot] 60322ffacd docs: 自动更新 daily 和 wxapp 脚本状态 [skip ci] 2026-08-19 02:09:46 +00:00
smallfawnandClaude Opus 5 75daed3d69 feat(wxapp): 新增 伊家乐享会(伊利数字化,登录+微信云托管网关头实测通,卡未注册)
契约(host msmarket.msx.digitalyili.com/gateway/api,信封 {status,data,error} 成功 status===true):
登录 POST /auth/account/login {jsCode} -> data.{accessToken, userInfo, registerKey},
token 放 access-token 头;签到 POST /member/daily/sign;状态 /member/sign/status;积分 /member/point。
请求要带一组**微信云托管网关模拟头**(X-WX-HTTP-MODE:REROUTE / x-wx-route-tag:<网关域> /
x-wx-call-id / x-envoy-expected-rq-timeout-ms)+ 固定头 tenant-id:1820778859526668290。
网关域 a1d5e5ea9-wx621112590b635086.sh.wxgateway.com(路由标签里的 appid 是伊利矩阵主号
wx621112590b635086,不是本店 appid)。

实测(第二 openid):登录链路 + 网关头**已实测连通**(服务端回 status:true + userInfo),
但**只有已注册会员才回 data.accessToken**;本测试号未注册,服务端只回 registerKey,
因此签到未能实测,按契约实现,未注册走 ⚠️ 分支不打 ❌。已注册的号跑起来即可验证。
不做:每日分享得分、上传微信步数、任务中心浏览/广告类任务。

fixture wxwork/test_yjlxh_mock.js 5 场景 55 条断言全通过(校验网关模拟头 X-WX-HTTP-MODE/
x-wx-route-tag、tenant-id、access-token、登录 body {jsCode}、registerKey 未注册分支、缓存重登)。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 10:09:32 +08:00
github-actions[bot] 893d3f6866 docs: 自动更新 daily 和 wxapp 脚本状态 [skip ci] 2026-08-19 01:45:21 +00:00
smallfawnandClaude Opus 5 32378b1f58 feat(wxapp): 新增 企迈qmai平台通用签到 qmai.js(复刻服务端强制的 AES-GCM 请求体加密)
企迈(qmai)对 webapi.qmai.cn 全站**强制 AES-GCM 请求体加密**,这是这批里第一个需要
完整复刻加密层的目标。密钥在包里(解包 requestEncryptSdk / 模块93),是加密不是风控,可复刻:
- key = 宽松 base64 解码 "mN6KpXq8Sv2WxYz9LdFcRgHjMnBvCtDxZaS3QwE5rT0yU7I4O1A" 取前 32 字节
  (解包 M() 归一化:base64ToArrayBuffer 宽松解出→非32字节取前32补零;不是 hex 不走 TextEncoder)
- 明文 = JSON.stringify(body),body 自动补 appid(解包 j(): e.appid||(e.appid=x.appid))
- AES-256-GCM,12字节随机 iv,aad=""(aadEnabled 默认关),密文‖16字节tag 再 base64
- 请求体 {"payload": <base64>},头 QM-Encrypt-Meta = base64(JSON{version:"1.0.0",timestamp,iv})
- 响应同构:{"payload"} + 响应头 QM-Encrypt-Meta 带解密 iv。keyVersion 1.0.0 来自 ee.master。

平台通用(一份覆盖林里/爷爷不泡茶等所有企迈餐饮店),变量 openid#appid#storeId#activityId:
storeId 来自解包 ext.storeId;activityId 是运营给每店固定配的,从签到页抓一次
(爷爷不泡茶=983701274523176960)。登录 POST /account-center/oauth/mini-app-login
{code,eVersion:"1.0",appid};状态 /cmk-center/sign/userSignStatistics;
签到 /cmk-center/sign/takePartInSign,都带 {activityId,appid}。固定头 Qm-From:wechat/
Qm-From-Type:catering/store-id/Accept:v=1.0,token 放 Qm-User-Token。

实测(林里 wx26c7aaacfa017719 storeId 212501,第二个 openid):**AES-GCM 加密握手 + 登录
完整实测通过**(服务端成功解密并加密回包,登录 status:true,拿到 token + memberId
1296769222963093505)。签到需 activityId(每店固定),本测试号未持有 linli 店的
activityId,takePartInSign 本身未实测,按契约实现。破译过程中踩到的坑:登录漏了 appid
字段服务端回「参数为空」(j() 会自动补);X-Internal-Bypass 是客户端内部约定服务端不认。

fixture wxwork/test_qmai_mock.js 6 场景 74 条断言全通过 —— 其中服务端侧用独立 Node crypto
实现 AES-GCM 解密/加密,跑通"脚本加密→独立解密→独立加密→脚本解密"整条往返,
双向验证密钥派生与信封格式(多店铺各自 storeId/activityId、缓存重登、不碰营销插件)。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 09:45:07 +08:00
github-actions[bot] 551eadf3d2 docs: 自动更新 daily 和 wxapp 脚本状态 [skip ci] 2026-08-19 00:55:38 +00:00
smallfawnandClaude Opus 5 aee5ee9cbf feat(wxapp): 新增 群脉MAI/quncrm 平台通用签到 quncrm.js(一份覆盖所有用群脉的品牌小程序)
又一个"平台型"目标,和 iyouke/有赞 同样是一份脚本覆盖多家:变量值
openid#appid#accountId[#备注],accountId 取自解包 app-config.json 的 ext.maiAccountId
(再次印证:多租户 SaaS 的租户常量都在 ext 里)。

契约:登录 POST https://oauth.quncrm.com/<accountId>/v2/weapp/oauth
{scope:"base", code, watermark:{appid}, is_group:"false"} -> {accessToken(JWT), member,
channelId, openId}。**accountId 在 URL 路径里**(解包 signinWeapp 的
`${oauthApiBaseUrl}/${accountId}`)。

鉴权方式很特别:**accessToken 不是请求头,是 query 参数** —— 解包里请求拦截器统一往
params 里塞 accountId + accessToken(h5ChannelId 存在时还塞 channelId)。
活动 GET /modules/campaigncenter/signin/page(只读免参,签到活动 id 从这里发现,不写死)、
状态 /signin/stats、签到 POST /modules/campaigncenter/signin 空 body、明细 /signin/detail。

实测(问问农会员 wxc5d513880ace81a4):登录成功、会员档案存在、活动读到
「问问农-会员签到(published)」;但 stats/detail/写 全部回
{status:400, code:400105, errors.campaign.memberFilter.code:"memberBanned",
"活动仅针对部分用户开放"} —— 这是运营配的**人群定向**,既不是未注册也不是脚本缺陷,
脚本按 ⚠️ 输出并跳过,不做任何绕过。分享得奖励 /signin/share 不做。

fixture wxwork/test_quncrm_mock.js 6 场景 85 条断言全通过(含 accountId 在 URL 路径、
accessToken 走 query 而非 Authorization 头、4xx 体里的已签到、memberBanned 不写、
多租户各自 accountId 与独立缓存键)。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 08:55:22 +08:00
smallfawnandClaude Opus 5 c884cac1a5 feat(wxapp): 新增 爱裹旧衣回收(登录+"字符排序 md5"签名已实测通过,卡未注册)
契约(host alipay.haliaeetus.cn,按模块分前缀 /recy/ 与 /fuli/,信封 {status,msg,data}
成功码 200):时间戳 GET /fuli/currentTime **回的是裸毫秒时间戳文本不是 JSON**;
登录 POST /recy/api/user/identityIdByAuthCode {data:{authCode:code}, m, s}。
签名很别致(解包 main.js 的 prototype.sign):**s = md5( 把 m+JSON.stringify(data)
这个串按字符逐个排序后 trim )**,没有盐。固定头 plateForm:WX / channelNo / Authorization(裸值)。
签到 GET /fuli/api/fuli/signed,状态 GET /fuli/api/fuli/signedInfo,积分 POST /fuli/api/jf/account。

实测:currentTime + 登录 + 签名**全部通过**(服务端回 status:200 并给出 identityId/unionId),
但**只有已注册账号才会回 data.token**;本测试号没在爱裹注册,服务端只给 identityId,
拿它打业务接口一律 {status:401,"No access,Permission verification failed!"}。
源码里这种情况走 getRegisterCellphoneAuthCode 手机号注册,脚本不代做,按 ⚠️ 提示。
因此**签到接口本身未能实测**,只按解包契约实现,已在脚本头如实写明。
不做:/api/earnPoint/doTask(做任务赚积分)、/api/clockIn/add1(另一套打卡)。

fixture wxwork/test_aiguo_mock.js 5 场景 67 条断言全通过 —— 其中"字符排序后 md5"
的签名在 fixture 里独立重算后逐字节比对脚本实际发出的 s。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 08:55:22 +08:00
github-actions[bot] 45561c6bca docs: 自动更新 daily 和 wxapp 脚本状态 [skip ci] 2026-08-18 14:46:57 +00:00
smallfawnandClaude Opus 5 b8235d370a feat(wxapp): 新增 毛铺草本荟(两处 md5 签名已完整逆出,卡"完善个人信息")
契约(host mpb.jingjiu.com/proxy-he,信封 {code,data,message} 成功码 0):
登录 POST /jp/api/loginauto {code, unionid:"", user_id:"", user_sources:"0",
system:{...}, itime, isource},其中 isource 见解包 utils/parse.js:
  md5(code+"DI9ynKTdfWqF").slice(0,16) + md5(code+itime+"DI9ynKTdfWqF").slice(-16)
-> data.access_token(之后 Authorization 放裸值,不是 Bearer)+ x-version:0.0.1。
状态 POST /api/FlanSignInDaily/mains {}(**不需要签名**)-> sign_in_today(实测未签是 -1)、
user.point、sign_in_day_continue。签到 POST /api/FlanSignInDaily/adds {date:"YYYY-MM-DD"}
**需要签名头**,见解包 utils/sign/getAppSign.js:只有白名单里的 key 参与拼接,
  appsign = md5(apptime + "date" + date + "DYSHJS^M&.YXZRGS" + access_token) 取后 10 位。
注意这个包自带的 md5 输出是**大写**(utils/md5.js 末尾 toUpperCase),签名必须跟着大写。

实测:登录成功(服务端自动建会员「会员97f81d95」,mobile 为 null)→ 状态读取正常
(积分 0、今日未签)→ 签到回 {code:-1000,"完善个人信息后才能参与"}。**签名是对的**
(错了会是签名类报错),是账号资料没填全,脚本按 ⚠️ 提示先去小程序完善个人信息,
不代填资料、不代过手机号授权。阅读文章赚积分/抽奖不做。

fixture wxwork/test_maopu_mock.js 5 场景 77 条断言全通过 —— 其中 isource 和 appsign
都是在 fixture 里**独立重算后逐字节比对**脚本实际发出的值。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 22:46:40 +08:00