Commit Graph
100 Commits
Author SHA1 Message Date
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
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
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
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
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
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
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
smallfawnandClaude Opus 5 bc36bcbad6 feat(wxapp): 新增 zippo会员 / 万家乐会员俱乐部,并修掉模板"业务结论在 4xx 体里就被抛掉"的坑
zippo(zippo.js,模板生成,**实测签到成功 +1 积分**):这家没有业务成功码——
成功就是 HTTP 2xx(登录/签到都回 **201**)且体里没有 code;失败才带 code,
而且**放在 4xx 的 JSON 体里**:重复签到 = HTTP 400 {"code":"already_signed",
"message":"今日已签到"}。登录 POST /api/users/auth {code,scene,platform:"wxmp"}
-> {token(JWT),sid,openId,unionId},之后 Authorization: Bearer <token>;固定头
x-app-id:zippo / x-platform:wxmp / x-platform-id:<appid> / x-platform-env:release。
签到 POST /api/daily-signin 空 body。实测:会员 vip1 → 签到 +1 → 复签 400
already_signed → 复跑走缓存判「今日已签到」。

万家乐(wanjiale.js,手写):信封成功码是 **100**。登录
POST /wd-member/member/login {code,tenantId:473,appBuId:2065,wxAppId,i3rdSystemCode:"CSP2.0"}
三个租户常量来自解包 app-config.json 的 ext;源码里的 loginType 实测可省。
**sessionId 在 data.loginInfo.sessionId(data.sessionId 恒为 null),而且服务端不下
Set-Cookie,要自己拼 Cookie: sessionId=<...>**。状态 GET member/checkSigned(布尔)。
签到 GET member/sign。**没有会员档案时签到只回 {code:105,"系统繁忙,请稍后再试"}**
——这是后端兜底文案不是真忙,所以脚本先查 member/detail,用 130004
「查询不到指定的会员信息」把原因翻译成人话,按 ⚠️ 提示先去小程序注册。
实测:登录成功→未注册会员→⚠️ 分支(本账号没在万家乐注册过)。抽奖
(/mtool/app/luckywheel/draw,采集脚本一天抽 3 次) 不做。

模板通用修复:请求层原来 `status !== 200` 直接抛,会把 4xx/5xx 体里的业务结论
("今日已签到" 见过 400 也见过 500)变成"执行失败"。现在非 2xx 但有 JSON 体时
交给下游按业务码判。另外 queryUser 的数据取值补到 `res.data || res.datas ||
res.body || res`(zippo 的 profile 就是没有包装的裸对象)。

测试:spec fixture 11 个脚本 × 最多 5 场景 **564** 条断言全通过(新增 dup4xx 场景
专门守住 4xx 体里的幂等判定);万家乐独立 fixture 6 场景 73 条全通过
(含 Cookie 会话、loginInfo.sessionId、未注册不写、105 兜底码说明、不碰抽奖)。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 21:53:04 +08:00
smallfawnandClaude Opus 5 e803669bbb feat(wxapp): 新增 iyouke/dtminds 平台通用签到 iyouke.js(一份覆盖 KSOEUR/交个朋友/林痣晴等同平台店铺)
上一轮把这批记成「平台型私有签名头,成本高」——实测是**错的**:它要的"私有头"
只有一个 appId(值就是店铺小程序自己的 appid),version/envVersion 可省,
没有任何签名。所以同平台所有店铺共用一份脚本,变量值 openid#appid[#备注]。

契约:POST /dtapi/appLogin {appType:1(MINI), principal:code} -> access_token/userId;
鉴权头 Authorization="bearer"+token(**中间没有空格**,解包里就是
"bearer".concat(access_token),加空格会 401)。只读三件套:
config/queryShopSignEnable(该店有没开签到)、user/pointsInfo/query
(pointsNums/seriesDays/signTodayResult,signTodayResult 就是幂等判据)、
user/sign/list?v4Flag=true(日历,每条 {dateStr,daySignStatus,isToday})。
签到 GET /dtapi/pointsSign/user/sign?date=YYYY%2FMM%2FDD。

**日期必须是斜杠**:日历回的是 2026-08-18,签到要 2026/08/18(%2F),发横杠会被
Spring 挡在参数绑定层、回一个 message 为空的 400,从响应完全看不出原因。脚本里
日期直接取服务端日历里 isToday 那条的 dateStr 再换斜杠,不本地拼日期。

登录响应没有 userId = 这个微信号在该店铺还没绑定会员(只发匿名 token,签到域一律
401)——按 ⚠️ 提示先去小程序注册,401 不冒泡成执行失败,也不误报成 ❌。
补签(要花积分)/兑换/抽奖一律不做。

实测三家:KSOEUR 签到成功 +1(积分 55→56,连签 0→1)、交个朋友 签到成功 +2
(2→4)、林痣晴Min 未绑定会员走 ⚠️ 分支;复跑三家全走缓存 token 判「今日已签到」。
fixture wxwork/test_iyouke_mock.js 7 场景 90 条断言全通过(含斜杠日期、bearer 无空格、
多店铺各自 appId 头与独立缓存键、未绑定不写、不碰补签/兑换/抽奖)。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 20:57:37 +08:00
smallfawnandClaude Opus 5 c375af6f29 feat(wxapp): 新增 Babycare / 汤星球,两个原「纯CK制」目标接上 smallcat 取码登录
Babycare(babycare.js,模板生成):登录 POST /common/front/login/wxMina
{code, wxAppId}。字段名是 wxAppId 不是 appId —— 写成 appId 会被回
「AppId不能为空」;wxAppId 就是本包自己的 appid(解包 common.js 模块 14549
的 kJ 常量),不是矩阵主号。实测登录成功 → getSignInfo todaySignd 0 →
签到成功(本轮连签 0→1)→ 复跑走缓存 token 判「今日已签到」。

汤星球(txq.js,手写):签到不在小程序里,小程序侧只有
ne.navigate("/signIn"),真身在 web-view 的 H5
(vip.by-health.com/web/vip-center-h5/#/signIn)。H5 bundle 是公开静态资源,
从它的 signIn 分块里解出真实端点:只读的 POST /vip-api/sign/activity/detail
(空 body)就回 activityId + signFlag,签到 POST /vip-api/sign/daily/create
{activityId}。主包里那套 /check/* 是社区打卡,不是每日签到。信封两层,
业务码在 data.rspCode 且成功是字符串 "00"。实测登录成功,服务端回
registerFlag=0 + REGISTER_REQUIRED「请先注册成为会员」,脚本按 ⚠️ 提示
先在小程序注册(不代过手机号),不误报成 ❌。两家的抽奖/领奖接口都不碰。

生成器新增两项通用能力并回归全部模板脚本(无行为变化):
- sign_done:只读状态接口就能判定「今天签过了」时跳过那次注定失败的写请求
- user_summary:摘要行让各家自己指定字段,别把整个状态 JSON 倒进日志

测试:spec fixture 343 条断言全通过(babycare 4 场景含新增 done 场景),
汤星球独立 fixture 5 场景 61 条全通过(含未注册/缓存失效重登/不碰抽奖接口)。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 20:15:51 +08:00
smallfawn ce822be7f7 Merge branch 'main' of https://github.com/smallfawn/QLScriptPublic 2026-08-18 18:04:34 +08:00
smallfawnandClaude Opus 5 ae74b363f6 feat(wxapp): 新增有赞店铺通用签到脚本 youzan.js(一份覆盖临水玉泉/TOI/七点五等)
有赞系小程序登录完全同构,只有 kdtId/checkinId 不同,所以做成一份通用脚本:
变量格式 openid#appid#kdtId#checkinId[#备注],每行一个店。

登录  POST uic.youzan.com/passport/general/auth.json {appId,code,kdtId,extraBizData,...}
      -> data.accessToken + data.kdtId(真实店铺号,用来兜底)
      access_token 作为查询参数带在每个 h5.youzan.com 请求上(不是 cookie)
签到  GET h5.youzan.com/wscump/checkin/checkinV2.json?checkinId=&access_token=&...
      code==0 成功;code==1000000002「userId must be >= 1」= 该微信号未在此店注册会员

实测(临水玉泉 kdt=44353481 + TOI kdt=97827637 两店):
  都登录成功、自动取到真实 kdtId(TOI 实际回显 99867427);
  签到都回「未注册会员」——有赞签到强依赖已注册会员,本账号在这些店都没绑,
  属账号态,不是脚本缺陷。脚本对这种情况打 ⚠️ 说清「先在小程序里注册」,绑号后即可用。

kdtId 可留空:登录会用服务端回显的 kdtId 兜底。checkinId 缺失时只登录不签到并提示。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 17:54:17 +08:00
smallfawn 482de40fff Merge branch 'main' of https://github.com/smallfawn/QLScriptPublic 2026-08-18 17:46:14 +08:00
smallfawnandClaude Opus 5 5a3b0c4d31 feat(wxapp): 新增 快集合(两段登录 + 签到次数依赖当前值)
kuaijihe.js  快集合  wx02092e8c44221583  exp2.jintaocms.top(全 form 编码)
  登录两段:① POST /app/Exp/wxappLoginCode {code} -> data.openid(站点侧)
           ② POST /app/Exp/wxappLogin2 {siright:1,open_id} -> user_id/token/mobile
  签到前必须先 POST /app/Exp/getUserCheckin {token,user_id} 拿当前已签次数,
  再 POST /app/Exp/useCheckin {num:当前次数+1, token, user_id}。
  num 是"当前次数+1"不是"第几天",写死会错,所以每次先查再签。
  token/user_id 放 body。成功码 code==1。

实测:登录成功 -> 当前已签 0 次 -> ✅ 签到成功。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 17:43:10 +08:00
smallfawnandClaude Opus 5 1227985345 feat(wxapp): 新增 活力伊利 / 每天有乐,并给全部模板脚本加「账号未注册」分支
hlyili.js  活力伊利  wx06af0ef532292cd3  msmarket.msx.digitalyili.com/gateway/api
  这套后端在微信云网关后面,除业务头还要一组 x-wx-* 网关模拟头,缺了会被网关挡:
  X-WX-HTTP-MODE=REROUTE / X-WX-CONF-VERSION=0 / x-wx-call-id / x-wx-source=wx_client
  / x-wx-route-tag=a1d5c552d-<appid>.sh.wxgateway.com / x-wx-appid
  / x-envoy-expected-rq-timeout-ms;业务头 access-token / tenant-id / scene=1008 等。
  成功判定是 status===true。实测:登录成功 -> 积分 840 -> ✅ 签到成功。

mtyl.js    每天有乐  wxd84920ac8965ee21  bcportal.app.swirecocacola.com/...
  登录 POST /wechat/userLoginByCode {code,sync:1},签到还要 login 响应里
  elseOpenid 中 type=='zfj' 那条的 koOpenid。
  实测:登录成功 -> 积分 point=0 -> 签到回「您还未注册会员」(code 403),账号态。

生成器新增两项能力:
  login_extract —— 从登录响应抽额外字段挂到 this,供签到的 query/body 引用
                   (每天有乐的 koOpenid 就是这么来的)
  未注册分支    —— 命中 /未注册|未绑定|请先注册|请先绑定|not regist/ 时打 ⚠️ 并说清
                   「先在小程序里注册一次」,而不是笼统 ❌;已回填到全部 9 个模板脚本

踩到一个自己的坑:`_gen.py all` 把手写的 yipiaoda.js 覆盖成了模板版(丢了手机号授权
那段),已从 git 恢复,并把手写脚本从 _specs.json 摘除 + 在生成器顶部加了警告。

fixture 同步修好:假服务端原来用固定信封,满足不了各家不同的成功判定
(qyqd 要 code===0、mtyl 要 code===200、hlyili 要 status===true),
现在直接用 spec 里的 ok 表达式挑一个能通过的形状。
9 个模板脚本 × 3 场景 = 27 组、305 条断言全通过。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 17:29:33 +08:00
smallfawnandClaude Opus 5 759baba53b feat(wxapp): 新增 2 个手写的 smallcat 小程序签到脚本(两段式登录 / 请求签名)
这两个模板表达不了,单独手写。

yipiaoda.js  华润壹票达  wx70c418a86bc52a9f  crld.caiyicloud.com
  每请求都要一组公共查询串(currency/lang/terminalSrc/utcOffset/ver)和一组固定头
  (src / terminal-src / merchant-id / ver / utc-offset / front-trace-id)。
  登录分两段:union_login 拿 accessToken;本账号没绑过,服务端只回 authToken+openId,
  于是走 union_login/authorization —— encryptPhoneNumber/initVector 取自 smallcat
  /wx/getphonenumber 的 data.raw(encryptedData/iv),authCode 取 data.code。
  开关 yipiaoda_phone_login 默认 1,置 0 则只提示不做授权。
  成功判定是 statusCode==200,accessToken 在 result 还是 data 要都兼容
  (union_login 回 data,我第一版只取 result 结果空转)。
  实测:手机号授权 -> 登录成功 -> 签到成功拿 3 积分、连续 1 天;复跑走缓存回「今日已签」。
  另:日历接口那个"今日已签"标记的字段名没核实,会把已签判成未签,
      所以不用它做前置跳过,只用来报连续天数——幂等交给签到接口自己的回执。

laobanfw.js  老板服务微商城  wxc8c90950cf4546f6  vip.foxech.com/index.php/api
  每个请求 body 都要 timestamp + token,token 是**请求签名**
  md5(String(timestamp) + "ae1fd50f" + 站点openid),不是会话凭证;
  真正的会话身份是登录返回的站点 openid(data.userinfo.openid),之后每请求都带。
  登录那一次 openid 还没有,按源码拼空串参与 md5。
  base 必须是 /index.php/api:写成 /api 回「授权失败,请重试」,写域名根 404。
  实测:登录成功 -> 会员 nickname/score/签到次数 -> 「今日已签到(您已签到)」。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 17:17:13 +08:00
smallfawn a8d2b48d9c Merge branch 'main' of https://github.com/smallfawn/QLScriptPublic 2026-08-18 16:22:04 +08:00
smallfawnandClaude Opus 5 ae058957ab feat(wxapp): 再新增 2 个 smallcat 取码登录的小程序签到脚本
hougongfang.js   厚工坊     wx5dd1e38d5312e70b  api.hgf1862.com
                   GET /YUN/api/onLogin.aspx?opt=onLogin&code= -> status==1, SessionID
                   POST /YUN/Game/2021/QianDao/QianDaoAjax_By28.aspx?op=now&vers=YYYYMMDD
                   ⚠️ 签到那个接口按 Cookie 校验会话(user=SessionID=<id>),
                      只给 sessionid 请求头会回「验证SESSIONID不通过」——首版就栽在这里
  baimazhixuan.js  白马智选   wx51f8cb2a7578f42f  min.51afa.com/module/integralApi
                   POST /login.html  form code&company_id=1&_cache_=1
                   POST /sign.html   form token&timestamp&company_id=1 + 请求头 act:do_sign
                   ⚠️ token 放在 body 里不是请求头;同一路径靠 act 头区分动作

实测:
  厚工坊     ✅ 登录成功 -> 签到成功
  白马智选   链路通,服务端明确回「该用户未注册 (42819)」-> 账号未注册,不是脚本问题

生成器同步扩了三项能力(都是这两个逼出来的):独立 query(POST 但参数只在查询串上)、
Cookie 会话、token 放 body、以及端点级额外请求头。
fixture:7 个模板脚本 × ok/已签到/取码失败 = 21 组场景、213 条断言全通过。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 16:20:51 +08:00
smallfawn 1476679f5a Merge branch 'main' of https://github.com/smallfawn/QLScriptPublic 2026-08-18 15:53:38 +08:00
smallfawnandClaude Opus 5 38eaa3c061 feat(wxapp): 再新增 5 个 smallcat 取码登录的小程序签到脚本
继续把 GitHub 采集来的实现改写成 wx_server 取 code -> 业务登录 -> 任务。
这批用模板生成,统一带 token 缓存、幂等判定、取码失败独立分支、会话失效
重登一次。

  shengongshe.js  申工社        wx63d70210fcc108fd  /fwdt-wechat-xc/api/wechat/oauth(data 即 token,头 token)
                                                    签到是 GET /integral/sign?_t=毫秒
  qyqd.js         期云积签兑     wx958515f1809b73c0  /auth/wechat-login(Bearer + 三个 X- 固定头)
  shanyi.js       善羿科技      wxc59eee06736849e8  /user/login_wx(头 X-Token,device_id 按 openid 稳定派生)
  yuexihui.js     中粮悦喜荟     wx4a9b92a0680e7b29  /auth/login(success===true,头 token)
  xiaodangjia.js  小铛家        wx7f5bc6f204abc629  /app/login/wechatLogin(头 Authorization)

实测(单账号):
  申工社      ✅ 登录成功 -> 会员 integral=0 -> 签到成功
  期云积签兑   ✅ 登录成功 -> 会员 points=0 -> 签到成功
  善羿科技    ✅ 登录成功 -> 会员 nickname=微信用户iau0 -> 签到成功
              (首版把 BASE 写成域名根导致 404,实际要带 /YSKJ/api 前缀,已修正)
  小铛家      登录到达服务端但回「系统繁忙,请稍后再试」——契约对,服务端侧问题
  悦喜荟      yxh.cofco.com 持续 nginx 503,服务端不可用

期云积签兑的广告任务与抽奖故意不做:看广告类按规则不绕。

fixture:5 个脚本 × ok/已签到/取码失败 = 15 组场景、153 条断言全通过,
断言覆盖 appid、UA、Referer、鉴权头(含 Bearer 形式)、固定头、GET/POST、
已签到必须当成成功、取码失败必须有独立日志且不去打目标站。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 15:42:30 +08:00
smallfawn 6ee89f7086 Merge branch 'main' of https://github.com/smallfawn/QLScriptPublic 2026-08-18 13:10:56 +08:00
smallfawnandClaude Opus 5 461c0fa285 feat(wxapp): 新增 4 个小程序脚本,从 GitHub 采集的实现改写为 smallcat 取码登录
来源:GitHub 近 3 个月更新的青龙仓库巡检(134 个仓库 -> 990 个候选脚本 ->
263 个命中小程序特征 -> 三重去重后 143 个我们没有的),从其中"有 code 登录、
可机械转换"的 30 个里先做 4 个。全部改成 wcs.js 取 code -> 业务登录 -> 任务,
统一加了 token 缓存、幂等判定、取码失败独立分支。

  shefuyishou.js  社服益寿活动  wx8ac1f54b8fc39c6c  /api/silenceLogin -> x-token
  niuyougu.js     牛油谷        wxfa2a1ee65e3c9122  /api/user/wxlogin(token 在 body)
  qutaoka.js      趣淘卡        wx479a4a95ec031d79  /api/login(data 直接是 token 串)
  fxh.js          一汽丰田丰享汇 wxdc0171c19d8ff575  /fxh-bff/app/wx/scx/login -> Authorization+sessionKey

实测(单账号,openid 为本机已绑定账号):
  fxh          链路通:登录回 code=200/success=true,但 hasLogin=false、token=null
               -> 该微信号还没在丰享汇注册。已把这种情况单独判出来给准确提示,
                  而不是笼统报"登录未返回 token"。
  shefuyishou  ylapi.luckystarpay.com 的 TLS 证书已过期(服务端问题,实测确认,
               另外三个站证书都正常)。按规则不关闭证书校验,等对方续期。
  niuyougu     app.niuyougu.com.cn 直连与代理均 ReadTimeout,本机不可达。
  qutaoka      登录恒回 {"status":0,"msg":"请求参数错误!"};form/json、只带 code、
               nickname 给值四种形状都试过,需要一次真机抓包才能补齐,不猜参数。

fixture:4 个脚本 × ok/已签到/取码失败(+fxh 未注册) 共 13 组场景、114 条断言全通过,
断言覆盖 appid、UA、Referer、token 放在头还是 body、已签到必须当成成功、
取码失败必须有独立日志且不去打目标站。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 13:07:00 +08:00
smallfawnandClaude Opus 5 b82ace8d41 fix(wxapp): junpinhui 加密写接口全线打通 —— garden 后端归属【习酒】appid
酒谷之旅(garden) 注册在习酒小程序 wx489f950decfeb93e 名下,不是君品荟自己。
三件事都得换成习酒身份,缺一个就 5001「用户信息异常」:

  ① 登录两段(各耗一个 code,均用习酒 appid 取码)
       GET xcx.exijiu.com/.../api/v2/auth/session?code=  -> data.login_code
       GET apimallwm.exijiu.com/garden/wechat/login?code= -> data.authorized_token
     authorized_token 的 JWT 里 memberInfo.id 与君品荟侧 member_id 一致,同一会员。
  ② 请求头 AppID / Referer 用习酒 appid,Authorization 放 authorized_token
     (服务端按 AppID 头去找该 appid 的用户密钥解 encryptData)。
  ③ encryptkey 用习酒 appid 取:encrypt_key(24字符)/iv(16字符) 按 utf-8 字节直接用,
     AES-192-CBC/PKCS7 输出 hex,version 用该次返回值,明文 {…参数, ts}。

对照实验:君品荟 key+君品荟头 -> 5001(修前行为);习酒 key+君品荟头 -> 5001;
习酒 key+习酒头 -> err=0 签到成功。

实跑:garden 登录成功 -> 签到成功 -> 分享任务完成(isTodayFirstShare:true, water+1)
-> 水滴 14->15;每日一答回「题目还没有出来呢」(服务端当日未出题)。
顺带去掉了 fm 静默登录(那个 X-Access-Token 对 garden 无效,白耗一个 code)。

线索来自 GitHub cm1916/YB-GO-Script-i/习酒.py(同后端),据此定向验证后落地。
另记:/garden/wechat/auth 那条分支在 smallcat 体系下走不通——它要用服务端自己
code2Session 得到的 session_key 解 encryptedData,而 smallcat 每次调用都会另换
一把,两边永远对不上。滑块验证(5008) 按规则不绕。
fixture 两场景各 28 条断言全通过(含 appid 分离、hex/PKCS7、version 来源)。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 12:39:52 +08:00
smallfawnandClaude Opus 5 f8080f1fa7 fix(wxapp): wx_xlxyh 签到/抽奖补前置点击埋点,两个恒失败的接口都通了
真因不在 signIn 这个请求里:服务端要求先收到一条「你点了这个按钮」的埋点
事件,之后那个动作才放行。

  POST /api/buryPointApp/save
    userId, openId, activitySource=Xcx_MeiRiRenWu,
    urlPath=pages/task-center/index, urlName=任务中心,
    elementName=每日签到, elementType=页面, eventNameEn=MPClick
  → 等 0.4~1.1s → GET /api/user/signIn?userId=…

同一把会话、同一分钟的对照实验:
  不打埋点 → signIn 恒回 40001「登录过期」
  打了埋点 → signIn 回 200 {state:3,coreCoin:10},签到成功、连续 1->2 天、
             芯动值 165 -> 175
抽奖同理(换转盘页埋点 pages/wheel/index + elementName=立即抽奖):
  不打埋点 → getLuck 回 code=1「非法请求」,连只读的 luckDraw/list 也回 code=1
  打了埋点 → getLuck 回 200 并中「5芯动值」
实跑复核:每日任务列表里 ✔每日签到 ✔每日参与抽奖 ✔每日点赞文章。

这条线索来自 GitHub 上 lcmovie/YYB-GO-Script-i 与 cm1916/YB-GO-Script-i 的
骁龙骁友会.js(preheatDailySign),据此定向验证后落地。

同时改正文件头里两条错误结论:40001 不是「服务端单独挡住这一路」,
code=1 也不是「通用错误兜底」,两者都只是缺前置埋点。
fixture 三场景 15/15/13 条断言全通过(含埋点必须在 signIn/getLuck 之前的顺序断言)。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 12:13:35 +08:00
smallfawnandClaude Opus 5 a0de31205e docs(wxapp): junpinhui 加密写接口失效的根因定性与提示
只读部分全通(登录/getMemberInfo/sorghum-index/tasks-index),但所有加密写
接口(签到/分享/种植/浇水/施肥/收获)同一个根因被服务端拒:
  不带 encryptData -> 5001 请从小程序重新进入!(字段必填)
  带  encryptData -> 5001 用户信息异常(服务端在校验,只是格式不对)

已试 8 种形状全部同样报错:微信用户密钥 AES-128-GCM(key/iv base64 解出
16+12 字节,密文+tag / 密文与 tag 分开)、脚本现状(把 base64 串当 utf8
明文喂 AES-CBC 输出 hex)、包里验证码模块那把固定密钥的 ECB/CBC+base64,
明文分别试 {ts}/{member_id,ts}/时间戳字符串/openid。

正确格式无从还原:逻辑在 plant/ 分包,而下包 API 只给主包(plant/ 下 24 个
文件全是空壳)。故只做两件事:文件头写清结论与所需抓包内容;
加密调用失败时在原始报错后补一句根因,避免被当成账号问题排查。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 13:01:09 +08:00
smallfawn 85b1bc6909 Merge branch 'main' of https://github.com/smallfawn/QLScriptPublic 2026-08-17 12:36:55 +08:00
smallfawnandClaude Opus 5 75e603e15d fix(wxapp): oppo 签到活动 id 按月轮换改为运行时发现;wx_xlxyh 文案校准
oppo.js —— 原来记的「活动已经结束」是误判,只是活动 id 换了。
硬编码的 2061050217641549824 是 2026-06 那期(拿它查详情,baseAwards
的日期区间就是 6/24~6/30)。当期活动在签到 H5 积木页里,楼层配置直出在
HTML 上:{"type":"SignIn","attr":{…,"activityInfo":{"activityId":"…",
"activityName":"8月积分商城签到"}}}。新增 discoverSignActivity() 用手机端
微信 UA 抓页面、定位 SignIn 楼层取 activityId(顺带取 creditsAddActionId),
detail 与 signIn 两处都用它;抓不到才回落到内置常量并明确提示。
实跑:签到成功 +2 积分,积分 2 -> 4。

wx_xlxyh.js —— 用户反馈手动签到正常。核对确认脚本这段本来就是对的:
客户端 userSign() 先看 signList.isSignToday,已签就不打 signIn,脚本照抄了
这个顺序,实跑输出「今日已签到(本月连续 1 天)」且任务列表 ✔每日签到。
未签时 signIn 恒回 40001 这条路,今天又重新下包核对 + 补做 5 轮变量法
(Referer 六种、requestId 三种、时间戳两种、头名大小写、换别人 userId 等),
同一把会话打 signInSupplement / upgradeConfirm 两个写接口都是 200,
故既非会话失效也非写操作被禁;hex_md5 也已确认是标准小写 md5。
把这些如实写进文件头,并把抽奖那条旧结论改准:code=1 是该后端的通用错误
兜底而非网关拦截(换 Referer 会变成客户端静默吞掉的 90002 请求太频繁,
同时段连只读的 luckDraw/list 也在回 code=1 服务异常)。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 12:36:16 +08:00
smallfawnandClaude Opus 5 9a7890eb51 fix(wxapp): bjhqbwz 会话失效走 HTTP 401 时进不去重登分支
api_post 的 raise_for_status() 在 run_account 的「会话失效则强制重登重试」
分支之前就把 401 抛成异常,缓存 token 一过期整个账号就报
"401 Client Error" 失败。改为把 401/403 翻译成带 code 的信封交给调用方,
其余 HTTP 错误照旧抛出。

实跑:缓存失效 -> 重新登录 -> 签到成功,连续签到 2 天。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 11:25:44 +08:00
smallfawn ebfdac459a Merge branch 'main' of https://github.com/smallfawn/QLScriptPublic 2026-08-17 10:49:19 +08:00
smallfawnandClaude Opus 5 ea55b92027 fix(wxapp): 修复 dasenlin 签到丢参数、补种人参活动;删除 ctrip/vipshop
dasenlin.js
- 修真因:GET 请求把 mobile/timestamp/sign 塞进了 axios 的 data,
  而 GET 分支只读 params,签名参数从未发出,服务端固定回
  {"status":403,"message":"签到失败","data":{"tored":1}}——看着像风控。
  对照实验:缺参 403 / 全参「今日已签到」/ 参数在但签名故意写错 403,
  说明该站 sign 是真校验的,脚本里的 salt 与算法本来就对。
  改为按 wx.request 的 GET 语义把 data 合并进查询串。
- 新增种人参活动(templateId=200,dcapi.dslbuy.com/dc-biz-activity):
  运行时发现 activityId,读取等级/水滴/浇水阈值并算差额。
  浇水接口在下不到的分包里,按规则不猜状态变更路径,只报状态并提示手动浇。
  实测签到不产水滴。
- 删掉 userSign/updateFormId.do {remind:false}:与签到无关,
  参数补齐后反而会改用户的签到提醒开关。
- 取码补 status:false 失败分支,避免 smallcat 限流被误报成登录失败。

删除 ctrip.js(携程运行态校验 invalid request + 404002)、
vipshop.js(唯品会风控 third login fds limit)——均为风控边界,不绕过。
README 顺手清掉 9 行已删脚本的陈旧记录(那张表由 workflow 生成,只增不删)。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 10:48:47 +08:00
smallfawn a4952b2e20 Merge branch 'main' of https://github.com/smallfawn/QLScriptPublic 2026-08-16 22:58:50 +08:00
smallfawnandClaude Opus 4.8 64a5a63efb feat(wxapp): 新增 6 个脚本、修复 9 个、删除 6 个失效脚本
新增(均自行下包核对登录链路 + 实跑验证):
- xinxianghui.js/py 芯享汇、liquanpijiu.py 力全啤酒、wanyazhenxuan.js 丸丫甄选
- bjhqbwz.py 北京环球度假区、hongsehuojian.py 红色火箭、wuyingyundiannao.py 无影云电脑

修复:
- haitian 把用户资料的 encryptedData 误喂给手机号登录接口,改用
  /wx/getphonenumber 的 data.raw(此前被误判成服务端 5xx)
- colorful 恢复被作者注释掉的主流程,登录改为 手填token -> 缓存 -> OnLogin
  -> 手机号授权首登;另修取码传错变量值、取码失败无分支、成功码只认 0、幂等正则漏项
- wx_xlxyh 骁龙骁友会 改为自动登录(原先要手填 sessionKey#userId),
  补齐点赞/阅读5分钟/VLOG1分钟三个每日任务;签到与抽奖被服务端账号态/风控拦下,
  已在文件头记录 10 轮变量法的排除过程,不做无谓重登
- guyu / nwdjg / fyzq / tclx_lc / fhxmh / feihe / ykb_all / quanmianshidai
  活动 id 改为运行时从只读接口发现、补签名、修幂等文案与取码失败分支

删除(服务端已下线或功能迁走,无从修复):
- airui hezj jsbhuiyuan miaoyouHome niuniuduanju qiaqia

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-16 22:58:41 +08:00
smallfawn e797f0bc8b Merge branch 'main' of https://github.com/smallfawn/QLScriptPublic 2026-08-16 07:05:42 +08:00
smallfawn a28b0490c2 Create jdCookie.js 2026-08-16 07:05:39 +08:00
smallfawn df09f7f446 fix bug 2026-07-24 18:34:06 +08:00
smallfawn 4a6417997f 1 2026-07-24 18:29:32 +08:00
smallfawn c654e1cc7f Merge branch 'main' of https://github.com/smallfawn/QLScriptPublic 2026-07-24 18:22:03 +08:00
smallfawn 9b95931f19 更新农场 2026-07-24 18:22:01 +08:00
smallfawn 276c279c61 Update 提现免费券.py 2026-07-11 16:12:04 +08:00
smallfawn 21c03258c3 fix some bug 2026-06-10 18:39:39 +08:00
smallfawn 671dcdc03e Merge branch 'main' of https://github.com/smallfawn/QLScriptPublic 2026-06-10 17:08:58 +08:00
smallfawn d577dbfbcd Create vipshop.js 2026-06-10 17:08:47 +08:00
smallfawn 9fd1d5aeab Merge branch 'main' of https://github.com/smallfawn/QLScriptPublic 2026-06-10 15:19:02 +08:00
smallfawn 019f90eb45 add some code 2026-06-10 15:19:00 +08:00
smallfawn e11084011b Create qqpcmgr.js 2026-06-09 09:32:07 +08:00
smallfawn 6fd4378b3f Create 提现免费券.py 2026-06-08 19:26:57 +08:00
smallfawn f940708ff3 Merge branch 'main' of https://github.com/smallfawn/QLScriptPublic 2026-06-06 20:12:57 +08:00
smallfawn 647af0363f fix bug 2026-06-06 20:12:44 +08:00
smallfawn 6ee018e314 Merge branch 'main' of https://github.com/smallfawn/QLScriptPublic 2026-06-06 19:58:46 +08:00
smallfawn d6cf5443f5 fix bug 2026-06-06 19:58:37 +08:00
smallfawn 9ed41449d2 Merge branch 'main' of https://github.com/smallfawn/QLScriptPublic 2026-06-06 19:02:18 +08:00
smallfawn cfc9f23bee add some code 2026-06-06 19:01:49 +08:00
smallfawn 16b1e92c0d 1 2026-06-05 22:19:04 +08:00
smallfawn 3d58ae7290 Create niuniuduanju.js 2026-06-01 21:01:09 +08:00
smallfawn 4ba1323b52 Merge branch 'main' of https://github.com/smallfawn/QLScriptPublic 2026-06-01 16:39:02 +08:00
smallfawn 3f0a9ee9a8 1 2026-06-01 16:39:00 +08:00
smallfawn ad27ef4059 1 2026-06-01 16:01:09 +08:00
smallfawn f8d42bf656 add 2026-06-01 14:27:54 +08:00
smallfawn 7d375a3858 move 2026-06-01 14:25:13 +08:00
smallfawn 4babb0ba12 fix daily miniapp code login scripts 2026-06-01 14:22:21 +08:00
smallfawn 8b0679680d Create gujiajiaju.js 2026-05-31 19:48:43 +08:00
smallfawn 4567842b81 add 2026-05-31 18:25:19 +08:00
smallfawn b3460343f7 1 2026-05-31 17:23:24 +08:00
smallfawn 9062fc3ea2 fix some code 2026-05-31 14:36:06 +08:00
smallfawn 0315c20c38 1 2026-05-31 14:25:09 +08:00
smallfawn cad66af5ba Add ROKI wxapp sign-in script 2026-05-31 10:53:00 +08:00
smallfawn e639542d37 Add YKB wxapp sign-in script 2026-05-31 10:30:45 +08:00
smallfawn cafb105101 Add fej Youzan check-in script 2026-05-31 09:55:31 +08:00
smallfawn ec4e3c5f83 add wxapp 2026-05-31 09:30:06 +08:00
smallfawn 19322d4e9f new some code 2026-05-14 17:47:57 +08:00
smallfawn 6b188fa835 fix some bug 2026-05-14 15:10:35 +08:00
smallfawn 740358a8ae Update wcs.js 2026-05-07 15:36:52 +08:00
smallfawn 6f99fa8863 fix bug 2026-04-21 15:16:35 +08:00
smallfawn f0253fe94b Update wcs.js 2026-04-20 15:19:54 +08:00
smallfawn 875d5945a6 Update choubao.js 2026-04-20 12:17:59 +08:00
smallfawn 1e06465a98 fix bug 2026-04-20 10:15:02 +08:00
smallfawn eaeade318e Delete guyu.js 2026-04-20 10:09:50 +08:00
smallfawn d5091f0820 new some code 2026-04-20 10:07:04 +08:00
smallfawn cb2020b3a0 Merge branch 'main' of https://github.com/smallfawn/QLScriptPublic 2026-04-20 09:58:02 +08:00
smallfawn c5593daadd new code 2026-04-20 09:58:00 +08:00
smallfawn 634b042851 fix bug 2026-04-17 20:43:06 +08:00
smallfawn a5542647df new some code 2026-04-17 19:36:25 +08:00
smallfawn bcfd799765 new code 2026-04-13 18:48:16 +08:00
smallfawn 10488a5a6f Merge branch 'main' of https://github.com/smallfawn/QLScriptPublic 2026-04-12 16:11:51 +08:00
smallfawn 92713dd0bc Update README.md 2026-04-12 16:11:19 +08:00
smallfawn 2afb6a7666 fix some code 2026-04-12 16:09:01 +08:00
smallfawn 0d4198ba95 Merge branch 'main' of https://github.com/smallfawn/QLScriptPublic 2026-04-12 14:41:48 +08:00
smallfawn 87722a4dfa fix yht 2026-04-12 14:41:36 +08:00
smallfawn 74eb3b4ccc Merge branch 'main' of https://github.com/smallfawn/QLScriptPublic 2026-04-12 14:09:08 +08:00
smallfawn 5a3e9be461 fix bug 2026-04-12 14:06:32 +08:00
smallfawn 14e62b5a9b fix some code 2026-04-12 13:28:34 +08:00
smallfawn 0a384fe732 Update colorful.js 2026-04-12 13:17:08 +08:00
smallfawn 585efa7a3e fix some bug 2026-04-12 13:12:04 +08:00
smallfawn 18eccc4f36 new some code 2026-04-12 12:59:30 +08:00
smallfawn 2bf84f1593 fix some bug 2026-04-12 12:19:36 +08:00