From c5f40f6a24b5ffb0066fd39f91972c9a03edba7b Mon Sep 17 00:00:00 2001 From: kissnavel Date: Sun, 22 Sep 2024 08:12:02 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E8=A1=A5=E5=85=85=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- lib/mysapi.js | 41 +++++++++++++++++++---------------------- 2 files changed, 20 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 7a2ae75..974bd5e 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ git clone --depth=1 https://gitee.com/bietiaop/ZZZ-Plugin.git ./plugins/ZZZ-Plug ## 绑定设备 -本插件会自带一个默认设备参数模拟真机进行请求,但是这个设备参数会被所有使用本插件的用户共同使用,因此**大概率**会遭遇账号异常,因此在遇到米游社抛出对应错误时,需要每个人绑定登陆米游社账号的常用设备参数进行请求。 +本插件会自带一个默认设备参数模拟真机进行请求,但是这个设备参数会被所有使用本插件的用户共同使用,因此**大概率**会遭遇账号异常,因此在遇到米游社抛出对应错误时,需要每个人绑定**已经登陆米游社账号的常用设备参数**进行请求。 如果需要绑定设备,请发送 `%绑定设备帮助` 进行查看如何绑定。第一种方法就是抓包,此种方法危害性较小,技术难度相对较高,但是IOS与Android设备通用。 diff --git a/lib/mysapi.js b/lib/mysapi.js index 76d891a..f04be7c 100644 --- a/lib/mysapi.js +++ b/lib/mysapi.js @@ -130,7 +130,7 @@ export default class MysZZZApi extends MysApi { if (data.deviceId) { headers['x-rpc-device_id'] = data.deviceId; } - // 如果有设备信息,写入设备信息 + // 如果有绑定设备信息,写入绑定设备信息,否则写入默认设备信息 if (data?.deviceInfo && data?.modelName) { const deviceBrand = data.deviceInfo?.split('/')[0]; try { @@ -140,6 +140,19 @@ export default class MysZZZApi extends MysApi { } catch (error) { logger.error(`[ZZZ]设备信息解析失败:${error.message}`); } + } else { + const deviceCfg = settings.getConfig('device'); + const defDeviceCfg = settings.getdefSet('device'); + const modelName = _.get(deviceCfg, 'modelName') ?? _.get(defDeviceCfg, 'modelName'); + const deviceInfo = _.get(deviceCfg, 'deviceInfo') ?? _.get(defDeviceCfg, 'deviceInfo'); + const deviceBrand = deviceInfo.split('/')[0]; + try { + headers['x-rpc-device_name'] = `${deviceBrand} ${modelName}`; + headers['x-rpc-device_model'] = modelName; + headers['x-rpc-csm_source'] = 'myself'; + } catch (error) { + logger.error(`[ZZZ]设备信息解析失败:${error.message}`); + } } // 写入DS switch (dsSalt) { @@ -212,12 +225,11 @@ export default class MysZZZApi extends MysApi { * @returns {object} */ getHeaders(query = '', body = '') { - const info = this.getBindInfo() const deviceCfg = settings.getConfig('device'); const defDeviceCfg = settings.getdefSet('device'); - const deviceInfo = info?.deviceFingerprint ?? _.get(deviceCfg, 'deviceInfo') ?? _.get(defDeviceCfg, 'deviceInfo'); - const osVersion = info?.androidVersion ?? _.get(deviceCfg, 'osVersion') ?? _.get(defDeviceCfg, 'osVersion'); - const modelName = info?.deviceModel ?? _.get(deviceCfg, 'modelName') ?? _.get(defDeviceCfg, 'modelName'); + const osVersion = _.get(deviceCfg, 'osVersion') ?? _.get(defDeviceCfg, 'osVersion'); + const modelName = _.get(deviceCfg, 'modelName') ?? _.get(defDeviceCfg, 'modelName'); + const deviceInfo = _.get(deviceCfg, 'deviceInfo') ?? _.get(defDeviceCfg, 'deviceInfo'); const deviceDisplay = deviceInfo.split('/')[3]; const cn = { app_version: '2.73.1', @@ -257,22 +269,6 @@ export default class MysZZZApi extends MysApi { }; } - async getBindInfo() { - // 从 this.cookie 中获取ltuid - const ck = this.cookie; - let ltuid = ck.match(/ltuid=(\d+);/); - if (ltuid) { - ltuid = ltuid[1]; - } - let bindInfo = await redis.get(`ZZZ:DEVICE_FP:${ltuid}:BIND`); - if (bindInfo) { - bindInfo = JSON.parse(bindInfo); - } else { - bindInfo = null; - } - return { bindInfo }; - } - /** * 校验状态码 * @param e 消息e @@ -333,8 +329,9 @@ export default class MysZZZApi extends MysApi { ltuid = ltuid[1]; } if (ltuid) { - let bindInfo = this.getBindInfo(); + let bindInfo = await redis.get(`ZZZ:DEVICE_FP:${ltuid}:BIND`); if (bindInfo) { + bindInfo = JSON.parse(bindInfo); try { data = { ...data,