diff --git a/TS_USER_AGENTS.ts b/TS_USER_AGENTS.ts index 2015fff..3ca25eb 100644 --- a/TS_USER_AGENTS.ts +++ b/TS_USER_AGENTS.ts @@ -5,10 +5,7 @@ import {existsSync, readFileSync} from "fs" import {sendNotify} from './sendNotify' dotenv.config() - -let fingerprint: string | number, token: string = '', enCryptMethodJD: any - -const USER_AGENTS: Array = [ +const USER_AGENTS_ARR: string[] = [ "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; ONEPLUS A5010 Build/QKQ1.191014.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", "jdapp;android;10.0.2;9;network/4g;Mozilla/5.0 (Linux; Android 9; Mi Note 3 Build/PKQ1.181007.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045131 Mobile Safari/537.36", @@ -47,20 +44,12 @@ const USER_AGENTS: Array = [ "jdapp;iPhone;10.0.2;14.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", ] -function TotalBean(cookie: string) { - return { - cookie: cookie, - isLogin: true, - nickName: '' - } -} - function getRandomNumberByRange(start: number, end: number) { end <= start && (end = start + 100) return Math.floor(Math.random() * (end - start) + start) } -let USER_AGENT = USER_AGENTS[getRandomNumberByRange(0, USER_AGENTS.length)] +let USER_AGENT = USER_AGENTS_ARR[getRandomNumberByRange(0, USER_AGENTS_ARR.length)] async function getBeanShareCode(cookie: string) { let {data}: any = await axios.post('https://api.m.jd.com/client.action', @@ -98,99 +87,31 @@ async function getFarmShareCode(cookie: string) { return '' } -async function requireConfig(check: boolean = false): Promise { +async function getCookie(): Promise { let cookiesArr: string[] = [] const jdCookieNode = require('./jdCookie.js') - let keys: string[] = Object.keys(jdCookieNode) - for (let i = 0; i < keys.length; i++) { - let cookie = jdCookieNode[keys[i]] - if (!check) { - cookiesArr.push(cookie) - } else { - if (await checkCookie(cookie)) { - cookiesArr.push(cookie) - } else { - let username = decodeURIComponent(jdCookieNode[keys[i]].match(/pt_pin=([^;]*)/)![1]) - console.log('Cookie失效', username) - await sendNotify('Cookie失效', '【京东账号】' + username) - } + for (let keys of Object.keys(jdCookieNode)) { + cookiesArr.push(jdCookieNode[keys]) + } + let ptpin_temp: string[] = [], uniqueCookieArr: string[] = [] + for (let cookie of cookiesArr) { + let UserName: string = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1]) + if (!ptpin_temp.includes(UserName)) { + ptpin_temp.push(UserName) + uniqueCookieArr.push(cookie) } } + cookiesArr = uniqueCookieArr console.log(`共${cookiesArr.length}个京东账号\n`) return cookiesArr } -async function checkCookie(cookie: string) { - await wait(3000) - try { - let {data}: any = await axios.get(`https://api.m.jd.com/client.action?functionId=GetJDUserInfoUnion&appid=jd-cphdeveloper-m&body=${encodeURIComponent(JSON.stringify({"orgFlag": "JD_PinGou_New", "callSource": "mainorder", "channel": 4, "isHomewhite": 0, "sceneval": 2}))}&loginType=2&_=${Date.now()}&sceneval=2&g_login_type=1&callback=GetJDUserInfoUnion&g_ty=ls`, { - headers: { - 'authority': 'api.m.jd.com', - 'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1', - 'referer': 'https://home.m.jd.com/', - 'cookie': cookie - } - }) - data = JSON.parse(data.match(/GetJDUserInfoUnion\((.*)\)/)[1]) - return data.retcode === '0'; - } catch (e) { - return false - } -} - -function wait(timeout: number) { +function wait(ms: number) { return new Promise(resolve => { - setTimeout(resolve, timeout) + setTimeout(resolve, ms) }) } -async function requestAlgo(appId: number = 10032) { - fingerprint = generateFp() - return new Promise(async resolve => { - let {data}: any = await axios.post('https://cactus.jd.com/request_algo?g_ty=ajax', { - "version": "1.0", - "fp": fingerprint, - "appId": appId, - "timestamp": Date.now(), - "platform": "web", - "expandParams": "" - }, { - "headers": { - 'Authority': 'cactus.jd.com', - 'Pragma': 'no-cache', - 'Cache-Control': 'no-cache', - 'Accept': 'application/json', - 'User-Agent': USER_AGENT, - 'Content-Type': 'application/json', - 'Origin': 'https://st.jingxi.com', - 'Sec-Fetch-Site': 'cross-site', - 'Sec-Fetch-Mode': 'cors', - 'Sec-Fetch-Dest': 'empty', - 'Referer': 'https://st.jingxi.com/', - 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' - }, - }) - if (data['status'] === 200) { - token = data.data.result.tk - let enCryptMethodJDString = data.data.result.algo - if (enCryptMethodJDString) enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)() - } else { - console.log(`fp: ${fingerprint}`) - console.log('request_algo 签名参数API请求失败:') - } - resolve() - }) -} - -function generateFp() { - let e = "0123456789" - let a = 13 - let i = '' - for (; a--;) - i += e[Math.random() * e.length | 0] - return (i + Date.now()).slice(0, 16) -} - function getJxToken(cookie: string, phoneId: string = '') { function generateStr(input: number) { let src = 'abcdefghijklmnopqrstuvwxyz1234567890' @@ -289,7 +210,8 @@ async function getShareCodePool(key: string, num: number) { return shareCode } -/*async function wechat_app_msg(title: string, content: string, user: string) { +/* +async function wechat_app_msg(title: string, content: string, user: string) { let corpid: string = "", corpsecret: string = "" let {data: gettoken} = await axios.get(`https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=${corpid}&corpsecret=${corpsecret}`) let access_token: string = gettoken.access_token @@ -308,11 +230,8 @@ async function getShareCodePool(key: string, num: number) { } else { console.log('企业微信应用消息发送失败', send) } -}*/ - -function obj2str(obj: object) { - return JSON.stringify(obj) } +*/ async function getDevice() { let {data} = await axios.get('https://betahub.cn/api/apple/devices/iPhone', { @@ -377,13 +296,11 @@ function post(url: string, prarms?: string | object, headers?: any): Promise