From 1b7ce8e7a57d7ce26e32f8299ed223198534b385 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sat, 27 Apr 2024 22:10:07 +0800 Subject: [PATCH] fix --- src/common/utils/request.ts | 38 +++++++++++++++++--------- src/onebot11/action/user/GetCookies.ts | 25 +++++++++++------ 2 files changed, 41 insertions(+), 22 deletions(-) diff --git a/src/common/utils/request.ts b/src/common/utils/request.ts index 9c875ae32..3f4941785 100644 --- a/src/common/utils/request.ts +++ b/src/common/utils/request.ts @@ -1,17 +1,29 @@ const https = require('node:https'); -export async function HttpGetWithCookies(url: string) { - const req = https.get(url, (res: any) => { - res.on('data', (data: any) => { - }); - res.on('end', () => { - const responseCookies = res.headers['set-cookie']; - console.log('获取到的 cookies:', responseCookies); - console.log(res.headers) - }); - }); +export async function HttpGetWithCookies(url: string): Promise> { + return new Promise((resolve, reject) => { + let result: Map = new Map(); + const req = https.get(url, (res: any) => { + res.on('data', (data: any) => { + }); + res.on('end', () => { + try { + const responseCookies = res.headers['set-cookie']; + for (const line of responseCookies) { + const parts = line.split(';'); + const [key, value] = parts[0].split('='); + result.set(key, value); + } + } catch (e) { + } + resolve(result); - req.on('error', (error: any) => { - // console.log(error) + }); + }); + req.on('error', (error: any) => { + resolve(result); + // console.log(error) + }) + req.end() }) - req.end() + } \ No newline at end of file diff --git a/src/onebot11/action/user/GetCookies.ts b/src/onebot11/action/user/GetCookies.ts index fe746a44f..84d2549c4 100644 --- a/src/onebot11/action/user/GetCookies.ts +++ b/src/onebot11/action/user/GetCookies.ts @@ -4,13 +4,18 @@ import { friends } from '../../../common/data'; import BaseAction from '../BaseAction'; import { ActionName } from '../types'; import { NTQQUserApi } from '@/core/apis'; - - -export class GetCookies extends BaseAction { +interface Payload { + domain: string +} +interface Response { + Pskey: Object; + Skey: string; +} +export class GetCookies extends BaseAction { actionName = ActionName.GetCookies; - protected async _handle(payload: null) { - NTQQUserApi.getSkey(); + protected async _handle(payload: Payload) { + let _Skey = await NTQQUserApi.getSkey(); // 取Skey // 先NodeIKernelTicketService.forceFetchClientKey('') // 返回值 @@ -24,17 +29,19 @@ export class GetCookies extends BaseAction { // } // request https://ssl.ptlogin2.qq.com/jump?ptlang=1033&clientuin=1627126029&clientkey=key // &u1=https%3A%2F%2Fh5.qzone.qq.com%2Fqqnt%2Fqzoneinpcqq%2Ffriend%3Frefresh%3D0%26clientuin%3D0%26darkMode%3D0&keyindex=keyIndex - // 取Location - // onBeforeSendHeaders info {"sec-ch-ua":"\\"Not_A Brand\\";v=\\"8\\", \\"Chromium\\";v=\\"120\\"","Accept":"application/json, text/plain, */*","sec-ch-ua-mobile":"?0","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) QQ/9.9.9-23159 Chrome/120.0.6099.56 Electron/28.0.0 Safari/537.36 OS/win32,x64,10.0.26100,Windows 10 Pro","sec-ch-ua-platform":"\\"Windows\\"","Origin":"https://h5.qzone.qq.com","Sec-Fetch-Site":"cross-site","Sec-Fetch-Mode":"cors","Sec-Fetch-Dest":"empty","Accept-Encoding":"gzip, deflate, br","Accept-Language":"zh-CN","referer":"https://h5.qzone.qq.com","Referer":"https://h5.qzone.qq.com","origin":"https://h5.qzone.qq.com"} + let _PSkey = await NTQQUserApi.getPSkey([payload.domain]); // 取Pskey // NodeIKernelTipOffService.getPskey([ 'qun.qq.com' ], true ) // { - // result: 0, + // domainPskeyMap: 0, // errMsg: 'success', // domainPskeyMap: Map(1) { // 'qun.qq.com' => 'pskey' // } // } - return null; + if (!_PSkey || !_Skey) { + throw new Error("获取Cookies失败"); + } + return { Pskey: _PSkey, Skey: _Skey }; } }