Skip to content

Commit dd0284a

Browse files
Update
1 parent cc62f62 commit dd0284a

10 files changed

+294
-266
lines changed

TS_USER_AGENTS.js

+67-62
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,12 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
3636
}
3737
};
3838
exports.__esModule = true;
39-
exports.jdpingou = exports.obj2str = exports.wechat_app_msg = exports.randomWord = exports.getShareCodePool = exports.getshareCodeHW = exports.randomNumString = exports.o2s = exports.resetHosts = exports.randomString = exports.exceptCookie = exports.h5st = exports.getJxToken = exports.decrypt = exports.requestAlgo = exports.getRandomNumberByRange = exports.wait = exports.requireConfig = exports.getFarmShareCode = exports.getBeanShareCode = exports.TotalBean = void 0;
39+
exports.jdpingou = exports.obj2str = exports.wechat_app_msg = exports.randomWord = exports.getShareCodePool = exports.getshareCodeHW = exports.randomNumString = exports.o2s = exports.resetHosts = exports.randomString = exports.exceptCookie = exports.getJxToken = exports.requestAlgo = exports.getRandomNumberByRange = exports.wait = exports.requireConfig = exports.getFarmShareCode = exports.getBeanShareCode = exports.TotalBean = void 0;
4040
var axios_1 = require("axios");
4141
var ts_md5_1 = require("ts-md5");
42-
var date_fns_1 = require("date-fns");
4342
var dotenv = require("dotenv");
4443
var fs_1 = require("fs");
45-
var CryptoJS = require('crypto-js');
44+
var sendNotify_1 = require("./sendNotify");
4645
dotenv.config();
4746
var fingerprint, token = '', enCryptMethodJD;
4847
var USER_AGENTS = [
@@ -149,30 +148,74 @@ function getFarmShareCode(cookie) {
149148
});
150149
}
151150
exports.getFarmShareCode = getFarmShareCode;
152-
function requireConfig(index) {
153-
if (index === void 0) { index = -1; }
151+
function requireConfig() {
154152
return __awaiter(this, void 0, void 0, function () {
155-
var cookiesArr, jdCookieNode;
153+
var cookiesArr, jdCookieNode, keys, i, cookie, username;
156154
return __generator(this, function (_a) {
157-
cookiesArr = [];
158-
jdCookieNode = require('./jdCookie.js');
159-
Object.keys(jdCookieNode).forEach(function (item) {
160-
if (jdCookieNode[item]) {
161-
cookiesArr.push(jdCookieNode[item]);
162-
}
163-
});
164-
console.log("\u5171".concat(cookiesArr.length, "\u4E2A\u4EAC\u4E1C\u8D26\u53F7\n"));
165-
if (index != -1) {
166-
return [2 /*return*/, [cookiesArr[index]]];
167-
}
168-
else {
169-
return [2 /*return*/, cookiesArr];
155+
switch (_a.label) {
156+
case 0:
157+
cookiesArr = [];
158+
jdCookieNode = require('./jdCookie.js');
159+
keys = Object.keys(jdCookieNode);
160+
i = 0;
161+
_a.label = 1;
162+
case 1:
163+
if (!(i < keys.length)) return [3 /*break*/, 6];
164+
cookie = jdCookieNode[keys[i]];
165+
return [4 /*yield*/, checkCookie(cookie)];
166+
case 2:
167+
if (!_a.sent()) return [3 /*break*/, 3];
168+
cookiesArr.push(cookie);
169+
return [3 /*break*/, 5];
170+
case 3:
171+
username = decodeURIComponent(jdCookieNode[keys[i]].match(/pt_pin=([^;]*)/)[1]);
172+
console.log('Cookie失效', username);
173+
return [4 /*yield*/, (0, sendNotify_1.sendNotify)('Cookie失效', '【京东账号】' + username)];
174+
case 4:
175+
_a.sent();
176+
_a.label = 5;
177+
case 5:
178+
i++;
179+
return [3 /*break*/, 1];
180+
case 6:
181+
console.log("\u5171".concat(cookiesArr.length, "\u4E2A\u4EAC\u4E1C\u8D26\u53F7\n"));
182+
return [2 /*return*/, cookiesArr];
170183
}
171-
return [2 /*return*/];
172184
});
173185
});
174186
}
175187
exports.requireConfig = requireConfig;
188+
function checkCookie(cookie) {
189+
return __awaiter(this, void 0, void 0, function () {
190+
var data, e_1;
191+
return __generator(this, function (_a) {
192+
switch (_a.label) {
193+
case 0: return [4 /*yield*/, wait(1000)];
194+
case 1:
195+
_a.sent();
196+
_a.label = 2;
197+
case 2:
198+
_a.trys.push([2, 4, , 5]);
199+
return [4 /*yield*/, axios_1["default"].get("https://api.m.jd.com/client.action?functionId=GetJDUserInfoUnion&appid=jd-cphdeveloper-m&body=".concat(encodeURIComponent(JSON.stringify({ "orgFlag": "JD_PinGou_New", "callSource": "mainorder", "channel": 4, "isHomewhite": 0, "sceneval": 2 })), "&loginType=2&_=").concat(Date.now(), "&sceneval=2&g_login_type=1&callback=GetJDUserInfoUnion&g_ty=ls"), {
200+
headers: {
201+
'authority': 'api.m.jd.com',
202+
'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',
203+
'referer': 'https://home.m.jd.com/',
204+
'cookie': cookie
205+
}
206+
})];
207+
case 3:
208+
data = (_a.sent()).data;
209+
data = JSON.parse(data.match(/GetJDUserInfoUnion\((.*)\)/)[1]);
210+
return [2 /*return*/, data.retcode === '0'];
211+
case 4:
212+
e_1 = _a.sent();
213+
return [2 /*return*/, false];
214+
case 5: return [2 /*return*/];
215+
}
216+
});
217+
});
218+
}
176219
function wait(timeout) {
177220
return new Promise(function (resolve) {
178221
setTimeout(resolve, timeout);
@@ -241,44 +284,6 @@ function generateFp() {
241284
i += e[Math.random() * e.length | 0];
242285
return (i + Date.now()).slice(0, 16);
243286
}
244-
function getQueryString(url, name) {
245-
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
246-
var r = url.split('?')[1].match(reg);
247-
if (r != null)
248-
return decodeURIComponent(r[2]);
249-
return '';
250-
}
251-
function decrypt(stk, url, appId) {
252-
var timestamp = ((0, date_fns_1.format)(new Date(), 'yyyyMMddhhmmssSSS'));
253-
var hash1;
254-
if (fingerprint && token && enCryptMethodJD) {
255-
hash1 = enCryptMethodJD(token, fingerprint.toString(), timestamp.toString(), appId.toString(), CryptoJS).toString(CryptoJS.enc.Hex);
256-
}
257-
else {
258-
var random = '5gkjB6SpmC9s';
259-
token = "tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc";
260-
fingerprint = 9686767825751161;
261-
var str = "".concat(token).concat(fingerprint).concat(timestamp).concat(appId).concat(random);
262-
hash1 = CryptoJS.SHA512(str, token).toString(CryptoJS.enc.Hex);
263-
}
264-
var st = '';
265-
stk.split(',').map(function (item, index) {
266-
st += "".concat(item, ":").concat(getQueryString(url, item)).concat(index === stk.split(',').length - 1 ? '' : '&');
267-
});
268-
var hash2 = CryptoJS.HmacSHA256(st, hash1.toString()).toString(CryptoJS.enc.Hex);
269-
return encodeURIComponent(["".concat(timestamp.toString()), "".concat(fingerprint.toString()), "".concat(appId.toString()), "".concat(token), "".concat(hash2)].join(";"));
270-
}
271-
exports.decrypt = decrypt;
272-
function h5st(url, stk, params, appId) {
273-
if (appId === void 0) { appId = 10032; }
274-
for (var _i = 0, _a = Object.entries(params); _i < _a.length; _i++) {
275-
var _b = _a[_i], key = _b[0], val = _b[1];
276-
url += "&".concat(key, "=").concat(val);
277-
}
278-
url += '&h5st=' + decrypt(stk, url, appId);
279-
return url;
280-
}
281-
exports.h5st = h5st;
282287
function getJxToken(cookie, phoneId) {
283288
if (phoneId === void 0) { phoneId = ''; }
284289
function generateStr(input) {
@@ -356,7 +361,7 @@ function randomWord(n) {
356361
exports.randomWord = randomWord;
357362
function getshareCodeHW(key) {
358363
return __awaiter(this, void 0, void 0, function () {
359-
var shareCodeHW, i, data, e_1;
364+
var shareCodeHW, i, data, e_2;
360365
return __generator(this, function (_a) {
361366
switch (_a.label) {
362367
case 0:
@@ -377,7 +382,7 @@ function getshareCodeHW(key) {
377382
}
378383
return [3 /*break*/, 6];
379384
case 4:
380-
e_1 = _a.sent();
385+
e_2 = _a.sent();
381386
console.log("getshareCodeHW Error, Retry...");
382387
return [4 /*yield*/, wait(getRandomNumberByRange(2000, 6000))];
383388
case 5:
@@ -394,7 +399,7 @@ function getshareCodeHW(key) {
394399
exports.getshareCodeHW = getshareCodeHW;
395400
function getShareCodePool(key, num) {
396401
return __awaiter(this, void 0, void 0, function () {
397-
var shareCode, i, data, e_2;
402+
var shareCode, i, data, e_3;
398403
return __generator(this, function (_a) {
399404
switch (_a.label) {
400405
case 0:
@@ -416,7 +421,7 @@ function getShareCodePool(key, num) {
416421
}
417422
return [3 /*break*/, 6];
418423
case 4:
419-
e_2 = _a.sent();
424+
e_3 = _a.sent();
420425
console.log("getShareCodePool Error, Retry...");
421426
return [4 /*yield*/, wait(getRandomNumberByRange(2000, 6000))];
422427
case 5:

TS_USER_AGENTS.ts

+30-49
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
import axios from "axios"
22
import {Md5} from "ts-md5"
3-
import {format} from 'date-fns'
43
import * as dotenv from "dotenv"
54
import {existsSync, readFileSync, writeFileSync} from "fs"
6-
7-
const CryptoJS = require('crypto-js')
5+
import {sendNotify} from './sendNotify'
86
dotenv.config()
97

108
let fingerprint: string | number, token: string = '', enCryptMethodJD: any
@@ -98,19 +96,39 @@ async function getFarmShareCode(cookie: string) {
9896
return ''
9997
}
10098

101-
async function requireConfig(index: number = -1): Promise<string[]> {
99+
async function requireConfig(): Promise<string[]> {
102100
let cookiesArr: string[] = []
103101
const jdCookieNode = require('./jdCookie.js')
104-
Object.keys(jdCookieNode).forEach((item) => {
105-
if (jdCookieNode[item]) {
106-
cookiesArr.push(jdCookieNode[item])
102+
let keys: string[] = Object.keys(jdCookieNode)
103+
for (let i = 0; i < keys.length; i++) {
104+
let cookie = jdCookieNode[keys[i]]
105+
if (await checkCookie(cookie)) {
106+
cookiesArr.push(cookie)
107+
} else {
108+
let username = decodeURIComponent(jdCookieNode[keys[i]].match(/pt_pin=([^;]*)/)![1])
109+
console.log('Cookie失效', username)
110+
await sendNotify('Cookie失效', '【京东账号】' + username)
107111
}
108-
})
112+
}
109113
console.log(`共${cookiesArr.length}个京东账号\n`)
110-
if (index != -1) {
111-
return [cookiesArr[index]]
112-
} else {
113-
return cookiesArr
114+
return cookiesArr
115+
}
116+
117+
async function checkCookie(cookie) {
118+
await wait(1000)
119+
try {
120+
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`, {
121+
headers: {
122+
'authority': 'api.m.jd.com',
123+
'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',
124+
'referer': 'https://home.m.jd.com/',
125+
'cookie': cookie
126+
}
127+
})
128+
data = JSON.parse(data.match(/GetJDUserInfoUnion\((.*)\)/)[1])
129+
return data.retcode === '0';
130+
} catch (e) {
131+
return false
114132
}
115133
}
116134

@@ -167,41 +185,6 @@ function generateFp() {
167185
return (i + Date.now()).slice(0, 16)
168186
}
169187

170-
function getQueryString(url: string, name: string) {
171-
let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i")
172-
let r = url.split('?')[1].match(reg)
173-
if (r != null) return decodeURIComponent(r[2])
174-
return ''
175-
}
176-
177-
function decrypt(stk: string, url: string, appId: number) {
178-
const timestamp = (format(new Date(), 'yyyyMMddhhmmssSSS'))
179-
let hash1: string
180-
if (fingerprint && token && enCryptMethodJD) {
181-
hash1 = enCryptMethodJD(token, fingerprint.toString(), timestamp.toString(), appId.toString(), CryptoJS).toString(CryptoJS.enc.Hex)
182-
} else {
183-
const random = '5gkjB6SpmC9s'
184-
token = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`
185-
fingerprint = 9686767825751161
186-
const str = `${token}${fingerprint}${timestamp}${appId}${random}`
187-
hash1 = CryptoJS.SHA512(str, token).toString(CryptoJS.enc.Hex)
188-
}
189-
let st: string = ''
190-
stk.split(',').map((item, index) => {
191-
st += `${item}:${getQueryString(url, item)}${index === stk.split(',').length - 1 ? '' : '&'}`
192-
})
193-
const hash2 = CryptoJS.HmacSHA256(st, hash1.toString()).toString(CryptoJS.enc.Hex)
194-
return encodeURIComponent(["".concat(timestamp.toString()), "".concat(fingerprint.toString()), "".concat(appId.toString()), "".concat(token), "".concat(hash2)].join(";"))
195-
}
196-
197-
function h5st(url: string, stk: string, params: object, appId: number = 10032) {
198-
for (const [key, val] of Object.entries(params)) {
199-
url += `&${key}=${val}`
200-
}
201-
url += '&h5st=' + decrypt(stk, url, appId)
202-
return url
203-
}
204-
205188
function getJxToken(cookie: string, phoneId: string = '') {
206189
function generateStr(input: number) {
207190
let src = 'abcdefghijklmnopqrstuvwxyz1234567890'
@@ -368,9 +351,7 @@ export {
368351
wait,
369352
getRandomNumberByRange,
370353
requestAlgo,
371-
decrypt,
372354
getJxToken,
373-
h5st,
374355
exceptCookie,
375356
randomString,
376357
resetHosts,

jd_checkCookie.js

+12-62
Original file line numberDiff line numberDiff line change
@@ -36,72 +36,22 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
3636
}
3737
};
3838
exports.__esModule = true;
39-
/**
40-
* 每天检测cookie是否有效
41-
* cron: 10 * * * *
42-
*/
43-
var axios_1 = require("axios");
4439
var TS_USER_AGENTS_1 = require("./TS_USER_AGENTS");
45-
var notify = require('./sendNotify');
46-
var cookie = '', UserName, index, errMsg = '';
40+
var cookie = '', UserName;
4741
!(function () { return __awaiter(void 0, void 0, void 0, function () {
48-
var cookiesArr, i;
49-
return __generator(this, function (_a) {
50-
switch (_a.label) {
42+
var cookiesArr, _i, _a, _b, index, value;
43+
return __generator(this, function (_c) {
44+
switch (_c.label) {
5145
case 0: return [4 /*yield*/, (0, TS_USER_AGENTS_1.requireConfig)()];
5246
case 1:
53-
cookiesArr = _a.sent();
54-
i = 0;
55-
_a.label = 2;
56-
case 2:
57-
if (!(i < cookiesArr.length)) return [3 /*break*/, 5];
58-
cookie = cookiesArr[i];
59-
UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)[1]);
60-
index = i + 1;
61-
return [4 /*yield*/, api(index, cookie, UserName)];
62-
case 3:
63-
_a.sent();
64-
_a.label = 4;
65-
case 4:
66-
i++;
67-
return [3 /*break*/, 2];
68-
case 5:
69-
if (!errMsg) return [3 /*break*/, 7];
70-
return [4 /*yield*/, notify.sendNotify("Cookie失效", errMsg, '', '你好,世界!')];
71-
case 6:
72-
_a.sent();
73-
_a.label = 7;
74-
case 7: return [2 /*return*/];
47+
cookiesArr = _c.sent();
48+
for (_i = 0, _a = cookiesArr.entries(); _i < _a.length; _i++) {
49+
_b = _a[_i], index = _b[0], value = _b[1];
50+
cookie = value;
51+
UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)[1]);
52+
console.log(index + 1, UserName);
53+
}
54+
return [2 /*return*/];
7555
}
7656
});
7757
}); })();
78-
function api(index, cookie, username) {
79-
return __awaiter(this, void 0, void 0, function () {
80-
var data;
81-
return __generator(this, function (_a) {
82-
switch (_a.label) {
83-
case 0: return [4 /*yield*/, axios_1["default"].get("https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", {
84-
headers: {
85-
Host: "me-api.jd.com",
86-
Connection: "keep-alive",
87-
Cookie: cookie,
88-
"User-Agent": TS_USER_AGENTS_1["default"],
89-
"Accept-Language": "zh-cn",
90-
"Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&",
91-
"Accept-Encoding": "gzip, deflate, br"
92-
}
93-
})];
94-
case 1:
95-
data = (_a.sent()).data;
96-
if (data.retcode === '0') {
97-
console.log(index, '✅', username);
98-
}
99-
else {
100-
console.log(index, '❌', username);
101-
errMsg += "".concat(index, " ").concat(username, "\n");
102-
}
103-
return [2 /*return*/];
104-
}
105-
});
106-
});
107-
}

0 commit comments

Comments
 (0)