更新: 2531 个文件 - 2026-03-17 21:00:03

这个提交包含在:
hao
2026-03-17 21:00:04 -07:00
父节点 a3edc88834
当前提交 080e55a98c
修改 2531 个文件,包含 135521 行新增3725 行删除

查看文件

@@ -0,0 +1,49 @@
from __future__ import annotations
from typing import Any, Dict
import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
DEFAULT_TIMEOUT = 30
DEFAULT_USER_AGENT = "websafe-intel"
def build_session() -> requests.Session:
session = requests.Session()
retry = Retry(
total=3,
connect=3,
read=3,
status=3,
backoff_factor=0.5,
allowed_methods=frozenset(["GET", "POST"]),
status_forcelist=[429, 500, 502, 503, 504],
raise_on_status=False,
)
adapter = HTTPAdapter(max_retries=retry)
session.mount("https://", adapter)
session.mount("http://", adapter)
session.headers.update({"User-Agent": DEFAULT_USER_AGENT})
return session
def request(
method: str,
url: str,
*,
session: requests.Session | None = None,
timeout: int = DEFAULT_TIMEOUT,
**kwargs: Any,
) -> requests.Response:
client = session or build_session()
headers = dict(kwargs.pop("headers", {}) or {})
if "User-Agent" not in headers:
headers["User-Agent"] = DEFAULT_USER_AGENT
try:
return client.request(method, url, headers=headers, timeout=timeout, **kwargs)
except requests.exceptions.SSLError:
return client.request(method, url, headers=headers, timeout=timeout, verify=False, **kwargs)