Files
dy/backend/rpa_engine/device_profiles.py
2026-07-23 17:56:25 +08:00

90 lines
2.7 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""浏览器 / IM 伪装设备头(User-Agent)预设。
a_bogus 签名、Playwright 浏览器上下文、IM HTTP 请求头、Protobuf body 必须使用同一 UA
否则抖音会返回 7911 安全校验失败。
"""
from rpa_engine.douyin_im.dy_util import DEFAULT_USER_AGENT
# id 用于前端下拉;user_agent 为完整字符串
DEVICE_PROFILES: list[dict[str, str]] = [
{
"id": "chrome_win120",
"label": "Chrome 120 · Windows(默认,推荐)",
"platform": "Windows",
"user_agent": DEFAULT_USER_AGENT,
},
{
"id": "chrome_win131",
"label": "Chrome 131 · Windows",
"platform": "Windows",
"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"
),
},
{
"id": "edge_win125",
"label": "Edge 125 · Windows",
"platform": "Windows",
"user_agent": (
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
"(KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0"
),
},
{
"id": "firefox_win117",
"label": "Firefox 117 · Windows",
"platform": "Windows",
"user_agent": (
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) "
"Gecko/20100101 Firefox/117.0"
),
},
{
"id": "chrome_mac120",
"label": "Chrome 120 · macOS",
"platform": "macOS",
"user_agent": (
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 "
"(KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
),
},
{
"id": "safari_mac17",
"label": "Safari 17 · macOS",
"platform": "macOS",
"user_agent": (
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 "
"(KHTML, like Gecko) Version/17.0 Safari/605.1.15"
),
},
]
_PROFILE_BY_UA = {p["user_agent"]: p for p in DEVICE_PROFILES}
def list_device_profiles() -> list[dict[str, str]]:
return [
{"id": p["id"], "label": p["label"], "platform": p["platform"], "user_agent": p["user_agent"]}
for p in DEVICE_PROFILES
]
def resolve_user_agent(stored: str | None) -> str:
"""账号保存的 UA;空则使用默认 Chrome 120。"""
text = (stored or "").strip()
return text or DEFAULT_USER_AGENT
def profile_label_for_ua(ua: str | None) -> str:
text = (ua or "").strip()
if not text:
return "Chrome 120 · Windows(默认)"
hit = _PROFILE_BY_UA.get(text)
if hit:
return hit["label"]
if len(text) > 48:
return text[:48] + "…"
return text