XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet
公开
关注 0 Fork 0 Star 1
返回提交历史

XFEstudio/gpt4free

feat(g4f/Provider/Blackbox.py): Enhance Blackbox AI with dynamic validated token retrieval

18be4902
kqlio67 <kqlio67@users.noreply.github.com>
提交于

代码差异

1 个文件 +21 -1
Modified g4f/Provider/Blackbox.py +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: