Spaces:
Paused
Paused
Update index.js
Browse files
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 |
-
|
| 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 |
-
|
| 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 |
-
|
| 540 |
-
|
| 541 |
-
|
| 542 |
-
|
| 543 |
-
|
| 544 |
-
|
| 545 |
-
|
| 546 |
-
|
| 547 |
-
|
| 548 |
-
|
| 549 |
-
|
| 550 |
-
|
| 551 |
-
|
| 552 |
-
|
| 553 |
-
|
| 554 |
-
|
| 555 |
-
|
| 556 |
-
|
| 557 |
-
|
| 558 |
-
|
| 559 |
-
|
| 560 |
-
|
| 561 |
-
|
| 562 |
-
|
| 563 |
-
|
| 564 |
-
|
| 565 |
-
|
| 566 |
-
|
| 567 |
-
|
| 568 |
-
|
| 569 |
-
|
| 570 |
-
|
| 571 |
-
|
| 572 |
-
|
| 573 |
-
|
| 574 |
-
|
| 575 |
-
|
| 576 |
-
|
| 577 |
-
|
| 578 |
-
|
| 579 |
-
|
| 580 |
-
|
| 581 |
-
|
| 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({
|