pull/20/head
Bakadax 2025-04-28 10:04:00 +08:00
parent 94d96526cb
commit 62cc098bb2
1 changed files with 11 additions and 20 deletions

View File

@ -5,27 +5,20 @@ import uuid
from .logger import logger from .logger import logger
from .message_queue import get_response from .message_queue import get_response
import requests import urllib3
import ssl import ssl
from requests.adapters import HTTPAdapter
from PIL import Image from PIL import Image
import io import io
class SSLAdapter(HTTPAdapter): class SSLAdapter(urllib3.PoolManager):
def init_poolmanager(self, *args, **kwargs): def __init__(self, *args, **kwargs):
""" context = ssl.create_default_context()
tls1.3 不再支持RSA KEY exchangepy3.10 增加TLS的默认安全设置可能导致握手失败 context.set_ciphers('DEFAULT@SECLEVEL=1')
使用 `ssl_context.set_ciphers('DEFAULT')` DEFAULT 老的加密设置 context.minimum_version = ssl.TLSVersion.TLSv1_2
""" kwargs['ssl_context'] = context
ssl_context = ssl.create_default_context() super().__init__(*args, **kwargs)
ssl_context.set_ciphers("DEFAULT")
ssl_context.check_hostname = False # 避免在请求时 verify=False 设置时报错, 如果设置需要校验证书可去掉该行。
ssl_context.minimum_version = ssl.TLSVersion.TLSv1_2 # 最小版本设置成1.2 可去掉低版本的警告
ssl_context.maximum_version = ssl.TLSVersion.TLSv1_2 # 最大版本设置成1.2
kwargs["ssl_context"] = ssl_context
return super().init_poolmanager(*args, **kwargs)
async def get_group_info(websocket: Server.ServerConnection, group_id: int) -> dict: async def get_group_info(websocket: Server.ServerConnection, group_id: int) -> dict:
@ -79,11 +72,9 @@ async def get_member_info(websocket: Server.ServerConnection, group_id: int, use
async def get_image_base64(url: str) -> str: async def get_image_base64(url: str) -> str:
"""获取图片/表情包的Base64""" """获取图片/表情包的Base64"""
try: try:
sess = requests.session() http = SSLAdapter()
sess.mount("https://", SSLAdapter()) # 将上面定义的SSLAdapter 应用起来 response = http.request('GET', url, timeout=10)
response = sess.get(url, timeout=10, verify=True) image_bytes = response.data
response.raise_for_status()
image_bytes = response.content
return base64.b64encode(image_bytes).decode("utf-8") return base64.b64encode(image_bytes).decode("utf-8")
except Exception as e: except Exception as e:
logger.error(f"图片下载失败: {str(e)}") logger.error(f"图片下载失败: {str(e)}")