From 862a521c2896bd05731538fa1784e522ed77eec0 Mon Sep 17 00:00:00 2001 From: Hex Date: Sun, 30 Jul 2023 15:19:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=20User=20Agent?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 ++ bot.js | 27 +++++++++++++++++++++++---- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index c3075ff..39ea524 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,8 @@ ql repo https://github.com/hex-ci/smzdm_script.git "" "env.js|bot.js|sendNotify. * `SMZDM_COOKIE`: 抓包抓到的 Cookie 内容,需要所有 Cookie 内容,多用户可以用 `&` 分隔,或者使用多个同名环境变量。 * `SMZDM_SK`: 这个值是可选值,是从安卓 App 的 `https://user-api.smzdm.com/checkin` 请求参数中抓包抓到的,如果抓到这个值可以填写(强烈建议填写),如果没抓到可以忽略,多用户可以用 `&` 分隔,或者使用多个同名环境变量,顺序要保持与 `SMZDM_COOKIE` 多用户顺序一致。 +* `SMZDM_USER_AGENT_APP`: 这个值是可选值,是指 APP 的 User-Agent,从 APP 的 API 请求头中抓包得到,建议抓取 Android 的 User-Agent,不填使用脚本默认值。 +* `SMZDM_USER_AGENT_WEB`: 这个值是可选值,是指 APP 中访问网页的 User-Agent,一般在 APP 内的转盘网页中抓包得到,建议抓取 Android 的 User-Agent,不填使用脚本默认值。 * `SMZDM_COMMENT`: 如果要完成评论文章的任务请设置这个环境变量,环境变量的内容是评论的文案,文案要大于 10 个汉字,建议用比较个性化的文案,脚本发布评论后会删除这条评论,但是为防止删除失败的情况,请尽量用好一点的文案,防止被判定为恶意灌水。 * `SMZDM_CROWD_SILVER_5`: 每日抽奖任务默认只进行免费抽奖,如要进行 5 碎银子的抽奖,请设置这个环境变量的值为 `yes`。 * `SMZDM_CROWD_KEYWORD`: 抽奖关键词,执行非免费抽奖时,会优先选择包含此关键词的抽奖,如果未找到包含此关键词的抽奖,则会随机选择一个。 diff --git a/bot.js b/bot.js index 9950a6e..ed57f56 100644 --- a/bot.js +++ b/bot.js @@ -6,13 +6,16 @@ const got = require('got'); const APP_VERSION = '10.4.26'; const APP_VERSION_REV = '866'; -const DEFAULT_USER_AGENT = `smzdm_android_V${APP_VERSION} rv:${APP_VERSION_REV} (Redmi Note 3;Android10.0;zh)smzdmapp`; -const DEFAULT_WEB_USER_AGENT = `Mozilla/5.0 (Linux; Android 10.0; Redmi Build/Redmi Note 3; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/95.0.4638.74 Mobile Safari/537.36 smzdm_android_V${APP_VERSION} rv:${APP_VERSION_REV} (Redmi;Android10.0;zh) jsbv_1.0.0 webv_2.0 smzdmapp`; +const DEFAULT_USER_AGENT_APP = `smzdm_android_V${APP_VERSION} rv:${APP_VERSION_REV} (Redmi Note 3;Android10.0;zh)smzdmapp`; +const DEFAULT_USER_AGENT_WEB = `Mozilla/5.0 (Linux; Android 10.0; Redmi Build/Redmi Note 3; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/95.0.4638.74 Mobile Safari/537.36 smzdm_android_V${APP_VERSION} rv:${APP_VERSION_REV} (Redmi;Android10.0;zh) jsbv_1.0.0 webv_2.0 smzdmapp`; const SIGN_KEY = 'apr1$AwP!wRRT$gJ/q.X24poeBInlUJC'; // ------------------------------------ +const reVersion = /(smzdm_android_V|smzdm\s|iphone_smzdmapp\/)([\d.]+)/i; +const reRev = /rv:([\d.]+)/i; + const randomStr = (len = 18) => { const char = '0123456789'; let str = ''; @@ -200,22 +203,38 @@ class SmzdmBot { } getHeaders() { + let userAgent = DEFAULT_USER_AGENT_APP; + + if (process.env.SMZDM_USER_AGENT_APP) { + userAgent = process.env.SMZDM_USER_AGENT_APP + .replace(reVersion, `$1${APP_VERSION}`) + .replace(reRev, `rv:${APP_VERSION_REV}`); + } + return { Accept: '*/*', 'Accept-Language': 'zh-Hans-CN;q=1', 'Accept-Encoding': 'gzip', 'request_key': randomStr(18), - 'User-Agent': DEFAULT_USER_AGENT, + 'User-Agent': userAgent, Cookie: this.androidCookie }; } getHeadersForWeb() { + let userAgent = DEFAULT_USER_AGENT_WEB; + + if (process.env.SMZDM_USER_AGENT_WEB) { + userAgent = process.env.SMZDM_USER_AGENT_WEB + .replace(reVersion, `$1${APP_VERSION}`) + .replace(reRev, `rv:${APP_VERSION_REV}`); + } + return { Accept: '*/*', 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', 'Accept-Encoding': 'gzip', - 'User-Agent': DEFAULT_WEB_USER_AGENT, + 'User-Agent': userAgent, Cookie: this.androidCookie }; }