生成动态浏览器 headers,包含随机 User-Agent Args: referer: 引用页面 URL origin: 源站 URL browser_type: 指定浏览器类型 additional_headers: 额外的 headers Returns: Dict[str, str]: 包含动态 User-Agent 的 headers
(
referer: Optional[str] = None,
origin: Optional[str] = None,
browser_type: Optional[str] = None,
additional_headers: Optional[Dict[str, str]] = None
)
| 57 | |
| 58 | # 通用 UserAgent headers 生成函数 |
| 59 | def get_dynamic_headers( |
| 60 | referer: Optional[str] = None, |
| 61 | origin: Optional[str] = None, |
| 62 | browser_type: Optional[str] = None, |
| 63 | additional_headers: Optional[Dict[str, str]] = None |
| 64 | ) -> Dict[str, str]: |
| 65 | """ |
| 66 | 生成动态浏览器 headers,包含随机 User-Agent |
| 67 | |
| 68 | Args: |
| 69 | referer: 引用页面 URL |
| 70 | origin: 源站 URL |
| 71 | browser_type: 指定浏览器类型 |
| 72 | additional_headers: 额外的 headers |
| 73 | |
| 74 | Returns: |
| 75 | Dict[str, str]: 包含动态 User-Agent 的 headers |
| 76 | """ |
| 77 | user_agent = get_random_user_agent(browser_type) |
| 78 | |
| 79 | # 基础 headers |
| 80 | headers = { |
| 81 | "User-Agent": user_agent, |
| 82 | "Accept": "application/json, text/event-stream", |
| 83 | "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8", |
| 84 | "Accept-Encoding": "gzip, deflate, br", |
| 85 | "Cache-Control": "no-cache", |
| 86 | "Connection": "keep-alive", |
| 87 | "Pragma": "no-cache", |
| 88 | } |
| 89 | |
| 90 | # 添加可选的 headers |
| 91 | if referer: |
| 92 | headers["Referer"] = referer |
| 93 | |
| 94 | if origin: |
| 95 | headers["Origin"] = origin |
| 96 | |
| 97 | # 根据用户代理添加浏览器特定的 headers |
| 98 | if "Chrome/" in user_agent or "Edg/" in user_agent: |
| 99 | # Chrome/Edge 特定的 headers |
| 100 | chrome_version = "139" |
| 101 | edge_version = "139" |
| 102 | |
| 103 | try: |
| 104 | if "Chrome/" in user_agent: |
| 105 | chrome_version = user_agent.split("Chrome/")[1].split(".")[0] |
| 106 | except: |
| 107 | pass |
| 108 | |
| 109 | try: |
| 110 | if "Edg/" in user_agent: |
| 111 | edge_version = user_agent.split("Edg/")[1].split(".")[0] |
| 112 | sec_ch_ua = f'"Microsoft Edge";v="{edge_version}", "Chromium";v="{chrome_version}", "Not_A Brand";v="24"' |
| 113 | else: |
| 114 | sec_ch_ua = f'"Not_A Brand";v="8", "Chromium";v="{chrome_version}", "Google Chrome";v="{chrome_version}"' |
| 115 | except: |
| 116 | sec_ch_ua = f'"Not_A Brand";v="8", "Chromium";v="{chrome_version}", "Google Chrome";v="{chrome_version}"' |
nothing calls this directly
no test coverage detected