Request Headers是爬虫模拟浏览器请求的关键,需通过开发者工具Network面板筛选XHR/Fetch请求后复制;推荐用cURL转Python方式获取适配requests的代码,或手动正则转字典并校验格式。
爬虫开发中需要精准复现浏览器请求,而Request Headers是模拟真实访问的关键凭证,漏掉Host、Referer或Cookie字段常导致403或空响应。
在已登录目标网站(如小红书、知乎)的前提下,按 F12 打开开发者工具 → 切换到 Network 选项卡 → 按 Ctrl + R 硬刷新页面(避免缓存干扰)。
在请求列表中,优先筛选 XHR 或 Fetch 类型,再找名称含 feed、search、api 或具体业务关键词的请求项。点击它,右侧自动展开详情面板。
方法一:直接右键复制(最快,但格式带换行)
在右侧详情页中,展开 Headers 标签 → 向下滚动至 Request Headers 区域 → 右键任意一行 → 选择 Copy → Copy request headers。
方法二:cURL 转 Python(最适配 requests)
右键同一请求 → 选择 Copy → Copy as cURL (bash) → 打开在线转换网站 curlconverter.com → 粘贴 cURL 内容 → 左侧选 Python → requests → 复制生成的完整代码块。该方式自动处理引号转义、反斜杠、空格和多行拼接,【无需手动清洗换行或冒号空格】。
方法三:手动提取+正则转字典(适合调试中间态)
若需逐字段校验,可展开 Request Headers → 拖动滚动条全选所有键值对 → Ctrl + C 复制 → 粘贴到 PyCharm 或 VS Code → 使用正则替换:
查找:(.*?):s*(.*)$ → 替换为:"$1": "$2", → 最后补上大括号包裹即成合法字典。注意:此法会把 Accept-Encoding: gzip, deflate 中的逗号误判为分隔符,【务必检查生成后是否有多余引号或断行】。
第一步:将复制内容粘贴进 Python 文件,用三引号包裹成字符串;
第二步:执行以下清洗逻辑(可直接运行):
headers_str = """<你粘贴的原始内容>"""
headers = {line.split(':', 1)[0].strip(): line.split(':', 1)[1].strip() for line in headers_str.strip().split('n') if ':' in line}
第三步:打印 print(headers),确认输出为标准字典结构,且无 GET /xxx HTTP/1.1 这类非法首行——若有,说明复制时误包含了请求行,需重新从 Headers 区域内精确选取。