返回提交历史
Modified
g4f/Provider/Blackbox.py
+21
-1
XFEstudio/gpt4free
feat(g4f/Provider/Blackbox.py): Enhance Blackbox AI with dynamic validated token retrieval
18be4902
代码差异
1 个文件
+21
-1
@@ -5,6 +5,7 @@ import random
5
5
import string
6
6
import json
7
7
import re
8
import aiohttp
8
9
9
10
from ..typing import AsyncResult, Messages, ImageType
10
11
from .base_provider import AsyncGeneratorProvider, ProviderModelMixin
@@ -18,6 +19,7 @@ class Blackbox(AsyncGeneratorProvider, ProviderModelMixin):
18
19
supports_stream = True
19
20
supports_system_message = True
20
21
supports_message_history = True
22
_last_validated_value = None
21
23
22
24
default_model = 'blackboxai'
23
25
@@ -82,6 +84,23 @@ class Blackbox(AsyncGeneratorProvider, ProviderModelMixin):
82
84
"flux": "Image Generation",
83
85
}
84
86
87
@classmethod
88
async def fetch_validated(cls):
89
async with aiohttp.ClientSession() as session:
90
try:
91
async with session.get('https://www.blackbox.ai/_next/static/chunks/2052-0407a0af8bffe0a9.js') as response:
92
page_content = await response.text()
93
validated_match = re.search(r'w="([0-9a-fA-F-]{36})"', page_content)
94
95
if validated_match:
96
validated_value = validated_match.group(1)
97
cls._last_validated_value = validated_value
98
return validated_value
99
except Exception as e:
100
pass
101
102
return cls._last_validated_value
103
85
104
@staticmethod
86
105
def generate_id(length=7):
87
106
characters = string.ascii_letters + string.digits
@@ -125,6 +144,7 @@ class Blackbox(AsyncGeneratorProvider, ProviderModelMixin):
125
144
model = cls.get_model(model)
126
145
message_id = cls.generate_id()
127
146
messages_with_prefix = cls.add_prefix_to_messages(messages, model)
147
validated_value = await cls.fetch_validated()
128
148
129
149
if image is not None:
130
150
messages_with_prefix[-1]['data'] = {
@@ -173,7 +193,7 @@ class Blackbox(AsyncGeneratorProvider, ProviderModelMixin):
173
193
"mobileClient": False,
174
194
"userSelectedModel": model if model in cls.userSelectedModel else None,
175
195
"webSearchMode": web_search,
176
"validated": "00f37b34-a166-4efb-bce5-1312d87f2f94"
196
"validated": validated_value,
177
197
}
178
198
179
199
async with ClientSession(headers=headers) as session: