yxmiler commited on
Commit
5899d72
·
verified ·
1 Parent(s): c2211d3

Update index.js

Browse files
Files changed (1) hide show
  1. index.js +52 -89
index.js CHANGED
@@ -39,6 +39,7 @@ const CONFIG = {
39
  'mistral-large': 'bedrock-mistral.mistral-large-2407-v1-0'
40
  },
41
  DEFAULT_HEADERS: {
 
42
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
43
  "Connection": "keep-alive",
44
  "Accept": "text/event-stream",
@@ -101,7 +102,6 @@ class TokenManager {
101
  CONFIG.DEFAULT_HEADERS["anti-csrftoken-a2z"] = Tokens[currentIndex].anti_csrftoken_a2z;
102
  CONFIG.DEFAULT_HEADERS.Cookie = `idToken=${Tokens[currentIndex].idToken}; pr_refresh_token=${Tokens[currentIndex].pr_refresh_token};aws-waf-token=${Tokens[currentIndex].aws_waf_token};cwr_s=${Tokens[currentIndex].cwr_s};cwr_u=${sessionId}`;
103
  CONFIG.DEFAULT_HEADERS.referer = Tokens[currentIndex].refreshUrl;
104
- CONFIG.DEFAULT_HEADERS["User-Agent"] = await Utils.getRandomUserAgent();
105
  }
106
 
107
  async updateTokens(response, isWaf = false) {
@@ -111,9 +111,12 @@ class TokenManager {
111
  Tokens[currentIndex].aws_waf_token = wafToken;
112
  await this.updateCacheTokens();
113
  this.updateRedisTokens();
 
 
114
  } else {
115
  currentIndex = (currentIndex + 1) % Tokens.length;
116
  await this.updateCacheTokens();
 
117
  }
118
  } else {
119
  const newCsrfToken = response.headers.get('anti-csrftoken-a2z');
@@ -149,6 +152,7 @@ class Utils {
149
  }
150
  }
151
  static async extractWaf() {
 
152
  const browser = await puppeteer.launch({
153
  headless: true,
154
  args: [
@@ -165,7 +169,7 @@ class Utils {
165
  cookie: `pr_refresh_token=${Tokens[currentIndex].pr_refresh_token};idToken=${Tokens[currentIndex].idToken};aws-waf-token=${Tokens[currentIndex].aws_waf_token};cwr_s=${Tokens[currentIndex].cwr_s};cwr_u=${Utils.uuidv4()}`
166
  });
167
  await page.setUserAgent(
168
- await Utils.getRandomUserAgent()
169
  )
170
  await page.goto(Tokens[currentIndex].refreshUrl, {
171
  waitUntil: 'networkidle2',
@@ -184,11 +188,9 @@ class Utils {
184
  )?.value;
185
 
186
  if (awsWafToken) {
187
- console.log("成功提取 aws-waf-token");
188
  await browser.close();
189
  return awsWafToken;
190
  } else {
191
- console.log("提取aws-waf-token失败");
192
  await browser.close();
193
  return null;
194
  }
@@ -242,7 +244,6 @@ async function initializeService() {
242
  console.log('服务初始化中...');
243
  tokenManager = new TokenManager();
244
  redisClient = new RedisClient();
245
- puppeteer.use(StealthPlugin())
246
  let index = 0;
247
  while (true) {
248
  console.log(index, '开始检测是否有缓存');
@@ -515,17 +516,7 @@ app.get('/hf/v1/models', (req, res) => {
515
  }))
516
  });
517
  });
518
- app.post('/hf/delete/redis', (req, res) => {
519
- res.json({
520
- object: "list",
521
- data: Object.keys(CONFIG.MODELS).map((model, index) => ({
522
- id: model,
523
- object: "model",
524
- created: Math.floor(Date.now() / 1000),
525
- owned_by: "partyrock",
526
- }))
527
- });
528
- });
529
  app.post('/hf/v1/chat/completions', async (req, res) => {
530
  var reqStatus = 500;
531
  try {
@@ -536,80 +527,52 @@ app.post('/hf/v1/chat/completions', async (req, res) => {
536
  await tokenManager.updateCacheTokens();
537
  const apiClient = new ApiClient(req.body.model);
538
  const requestPayload = await apiClient.transformMessages(req.body);
539
- let retryCount = 0;
540
-
541
- while (retryCount < CONFIG.RETRY.MAX_ATTEMPTS) {
542
- try {
543
- console.log("开始请求");
544
- //发送请求
545
- var response = await fetch(`https://partyrock.aws/stream/getCompletion`, {
546
- method: "POST",
547
- headers: {
548
- ...CONFIG.DEFAULT_HEADERS
549
- },
550
- body: JSON.stringify(requestPayload)
551
- });
552
- reqStatus = response.status;
553
- switch (reqStatus) {
554
- case 200:
555
- console.log("请求成功");
556
- // 异步更新token
557
- tokenManager.updateTokens(response)
558
- // 处理响应
559
- if (req.body.stream) {
560
- await ResponseHandler.handleStreamResponse(response, req.body.model, res);
561
- } else {
562
- await ResponseHandler.handleNormalResponse(response, req.body.model, res);
563
- }
564
- return;
565
- case 202:
566
- console.log("请求受限,更新WAF");
567
- await tokenManager.updateTokens(response, true);
568
- break;
569
- case 405:
570
- console.log("人机验证");
571
- await tokenManager.updateTokens(response, true);//常识获取waf,然后返回错误提示。
572
- res.status(405).json({
573
- error: {
574
- message: "人机验证,请重新请求,如果多次失败,请重新更换token",
575
- type: 'server_error',
576
- param: null,
577
- code: null
578
- }
579
- });
580
- return;
581
- case 400:
582
- console.log("信息过期,请求失败");
583
- await tokenManager.updateTokens(response);
584
- res.status(400).json({
585
- error: {
586
- message: "已刷新验证信息,请重新请求",
587
- type: 'server_error',
588
- param: null,
589
- code: null
590
- }
591
- });
592
- return;
593
- case 403:
594
- console.log("请求被阻止");
595
- throw new Error(`请求失败! status: ${response.statusText},请重新请求,如果多次失败,请重新更换token`);
596
- default:
597
- throw new Error(`请求失败! status: ${response.status}`);
598
- }
599
- console.log("请求失败,重试中...");
600
- retryCount++;
601
- if (retryCount >= CONFIG.RETRY.MAX_ATTEMPTS) {
602
- throw new Error(`上游服务请求失败! status: ${response.status}`);
603
- }
604
- await new Promise(resolve => setTimeout(resolve, CONFIG.RETRY.DELAY_BASE * retryCount));
605
-
606
- } catch (error) {
607
- retryCount++;
608
- if (retryCount >= CONFIG.RETRY.MAX_ATTEMPTS) {
609
- throw error;
610
- }
611
- await new Promise(resolve => setTimeout(resolve, CONFIG.RETRY.DELAY_BASE * retryCount));
612
  }
 
 
613
  }
614
  } catch (error) {
615
  res.status(reqStatus).json({
 
39
  'mistral-large': 'bedrock-mistral.mistral-large-2407-v1-0'
40
  },
41
  DEFAULT_HEADERS: {
42
+ "Host": "partyrock.aws",
43
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
44
  "Connection": "keep-alive",
45
  "Accept": "text/event-stream",
 
102
  CONFIG.DEFAULT_HEADERS["anti-csrftoken-a2z"] = Tokens[currentIndex].anti_csrftoken_a2z;
103
  CONFIG.DEFAULT_HEADERS.Cookie = `idToken=${Tokens[currentIndex].idToken}; pr_refresh_token=${Tokens[currentIndex].pr_refresh_token};aws-waf-token=${Tokens[currentIndex].aws_waf_token};cwr_s=${Tokens[currentIndex].cwr_s};cwr_u=${sessionId}`;
104
  CONFIG.DEFAULT_HEADERS.referer = Tokens[currentIndex].refreshUrl;
 
105
  }
106
 
107
  async updateTokens(response, isWaf = false) {
 
111
  Tokens[currentIndex].aws_waf_token = wafToken;
112
  await this.updateCacheTokens();
113
  this.updateRedisTokens();
114
+ currentIndex = (currentIndex + 1) % Tokens.length;
115
+ console.log("成功提取 aws-waf-token");
116
  } else {
117
  currentIndex = (currentIndex + 1) % Tokens.length;
118
  await this.updateCacheTokens();
119
+ console.log("提取aws-waf-token失败");
120
  }
121
  } else {
122
  const newCsrfToken = response.headers.get('anti-csrftoken-a2z');
 
152
  }
153
  }
154
  static async extractWaf() {
155
+ puppeteer.use(StealthPlugin())
156
  const browser = await puppeteer.launch({
157
  headless: true,
158
  args: [
 
169
  cookie: `pr_refresh_token=${Tokens[currentIndex].pr_refresh_token};idToken=${Tokens[currentIndex].idToken};aws-waf-token=${Tokens[currentIndex].aws_waf_token};cwr_s=${Tokens[currentIndex].cwr_s};cwr_u=${Utils.uuidv4()}`
170
  });
171
  await page.setUserAgent(
172
+ CONFIG.DEFAULT_HEADERS["User-Agent"]
173
  )
174
  await page.goto(Tokens[currentIndex].refreshUrl, {
175
  waitUntil: 'networkidle2',
 
188
  )?.value;
189
 
190
  if (awsWafToken) {
 
191
  await browser.close();
192
  return awsWafToken;
193
  } else {
 
194
  await browser.close();
195
  return null;
196
  }
 
244
  console.log('服务初始化中...');
245
  tokenManager = new TokenManager();
246
  redisClient = new RedisClient();
 
247
  let index = 0;
248
  while (true) {
249
  console.log(index, '开始检测是否有缓存');
 
516
  }))
517
  });
518
  });
519
+
 
 
 
 
 
 
 
 
 
 
520
  app.post('/hf/v1/chat/completions', async (req, res) => {
521
  var reqStatus = 500;
522
  try {
 
527
  await tokenManager.updateCacheTokens();
528
  const apiClient = new ApiClient(req.body.model);
529
  const requestPayload = await apiClient.transformMessages(req.body);
530
+ try {
531
+ console.log("开始请求");
532
+ //发送请求
533
+ var response = await fetch(`https://partyrock.aws/stream/getCompletion`, {
534
+ method: "POST",
535
+ headers: {
536
+ ...CONFIG.DEFAULT_HEADERS
537
+ },
538
+ body: JSON.stringify(requestPayload)
539
+ });
540
+ reqStatus = response.status;
541
+ switch (reqStatus) {
542
+ case 200:
543
+ console.log("请求成功");
544
+ // 异步更新token
545
+ tokenManager.updateTokens(response)
546
+ // 处理响应
547
+ if (req.body.stream) {
548
+ await ResponseHandler.handleStreamResponse(response, req.body.model, res);
549
+ } else {
550
+ await ResponseHandler.handleNormalResponse(response, req.body.model, res);
551
+ }
552
+ return;
553
+ case 202:
554
+ console.log("请求受限,更新WAF");
555
+ await tokenManager.updateTokens(response, true);
556
+ throw new Error(`请求失败! status: ${response.statusText},已刷新验证信息,请重新请求`);
557
+ case 405:
558
+ console.log("人机验证");
559
+ await tokenManager.updateTokens(response, true);//尝试获取waf,然后返回错误提示。
560
+ throw new Error(`请求失败! status: ${response.statusText},人机验证,请重新请求,如果多次失败,请重新更换token`);
561
+ case 400:
562
+ console.log("信息过期,请求失败");
563
+ await tokenManager.updateTokens(response);
564
+ throw new Error(`请求失败! status: ${response.statusText},已刷新验证信息,请重新请求`);
565
+ case 403:
566
+ console.log("请求被阻止");
567
+ console.log(JSON.stringify(CONFIG.DEFAULT_HEADERS, null, 2));
568
+ //CONFIG.DEFAULT_HEADERS["User-Agent"] = await Utils.getRandomUserAgent();
569
+ console.log(response.headers);
570
+ throw new Error(`请求失败! status: ${response.statusText},请重新请求,如果多次失败,请重新更换token`);
571
+ default:
572
+ throw new Error(`请求失败! status: ${response.status}`);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
573
  }
574
+ } catch (error) {
575
+ throw new Error(`请求失败! status: ${response.status}`);
576
  }
577
  } catch (error) {
578
  res.status(reqStatus).json({