You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何生成与选定User Agent匹配的标准随机Client Hints?

实现方案

核心思路

  1. 过滤无需生成Client Hints的浏览器:直接跳过Firefox、Safari,仅处理Chrome/Chromium系浏览器
  2. 提取浏览器主版本号:从UA数据的browser_version字段中提取主版本(比如114.0.0取114)
  3. 按照真实规范生成请求头:
    • sec-ch-ua严格遵循Chrome的格式,其中Not=A?Brand的版本号固定为24(符合真实Chrome的发送规则)
    • sec-ch-ua-platform直接使用UA数据中的os字段,包裹双引号

代码实现(Python示例)

def generate_client_hints(ua_data):
    client_hints = {}
    browser = ua_data.get('browser', '').lower()
    
    # 跳过Firefox和Safari
    if browser in ['firefox', 'safari']:
        return client_hints
    
    # 处理Chrome/Chromium系浏览器
    if browser in ['chrome', 'chromium']:
        # 提取主版本号
        browser_version = ua_data.get('browser_version', '')
        main_version = browser_version.split('.')[0] if browser_version else '0'
        
        # 生成sec-ch-ua:直接用提取的主版本,满足"不低于UA版本"的要求
        sec_ch_ua = f'"Google Chrome";v="{main_version}", "Chromium";v="{main_version}", "Not=A?Brand";v="24"'
        client_hints['sec-ch-ua'] = sec_ch_ua
        
        # 生成sec-ch-ua-platform
        os_name = ua_data.get('os', '')
        client_hints['sec-ch-ua-platform'] = f'"{os_name}"'
    
    return client_hints

# 测试示例
test_ua_data = {
    'user_agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',
    'os': 'Windows',
    'os_version': '10',
    'browser': 'Chrome',
    'browser_version': '114.0.0'
}

print(generate_client_hints(test_ua_data))

关键说明

  • 版本要求:提取的主版本号直接使用即可保证不低于UA中的版本(UA本身就是当前浏览器的实际版本)
  • Not=A?Brand规则:Chrome从90版本开始,该字段的版本固定为24,完全匹配真实浏览器的发送规范
  • 扩展支持:如果后续需要兼容Edge等其他Chromium系浏览器,只需扩展browser的判断条件,并调整sec-ch-ua中的浏览器名称(比如Edge对应"Microsoft Edge")

内容的提问来源于stack exchange,提问作者Harry Partridge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 12:45:21