sublime中三步将http请求头转为python字典:先清理空行及host等自动生成字段,再用正则^(.):\s(.)$→"\1": "\2"替换,最后手动补{、}和逗号;需确保冒号后仅一个空格、文件编码为utf-8、content-length已删除。

直接把抓包导出的 HTTP 请求头转成 Python 字典,用 Sublime 的正则替换最稳——不用装插件、不写脚本,三步到位,但每步都有明确坑点,跳过就语法报错。
粘贴后第一件事:确认格式和分隔空行
抓包工具(Fiddler/Wireshark)导出的请求头是纯文本,形如 User-Agent: Mozilla/5.0,但常混着空行、Host、Content-Length 等自动生成字段。这些必须提前清理,否则后续字典会多出非法键或长度不一致。
- 确保每行都是
Key: Value格式,冒号后**必须有一个空格**(User-Agent:Mozilla/5.0会匹配失败) - 删掉所有空行——特别是 Header 和 Body 之间的那个空行,它不是字典的一部分,留着会导致
{和}包不住全部内容 - 手动删掉
Host、Content-Length、Connection这类由客户端/代理自动加的字段,它们在 Pythonrequests中通常不需要硬编码
正则替换生成字典键值对:^(.*):\s(.*)$ → "\1": "\2"
这是核心一步,但必须严格按顺序操作,否则 、 为空或错位。
- 先按
Ctrl+F(Windows/Linux)或Cmd+F(macOS),点击右下角.*图标启用正则模式 - 查找框填:
^(.*):\s(.*)$——^和$锚定整行,\s确保只匹配冒号后的**一个空格**(不是任意空白),避免误吞 Tab 或多个空格 - 替换框填:
"\1": "\2"—— 注意用\1而不是$1,Sublime 的替换引擎在单文件内认\1更稳定;双引号必须手动加,不能靠正则生成 - 点
Replace All前,务必先点Find All看是否所有行都被高亮,且没卷入注释或 Body 内容
补全字典结构:手动加 {、} 和逗号
替换后得到的是多行 "Key": "Value",还不是合法字典。这时候别用正则硬补逗号——容易在最后一行多加,或漏掉换行。
- 把光标移到第一行开头,按
Ctrl+Shift+L(Windows/Linux)或Cmd+Shift+L(macOS),给每行末尾加一个光标 - 统一按
,输入逗号,此时最后一行也会被加上 - 再把光标移到文件最前,输入
{;移到文件末尾,输入}(注意末尾要换一行再写},否则和最后一行挤一起) - 检查
Content-Length是否还残留——如果之前没删干净,现在它会变成字典里的一个键,但 Pythonrequests发送时会自动计算,硬写反而导致 400 错误
验证编码与 Body 一致性
字典只是 Header 部分。如果你还要拼完整请求(比如带 data= 或 json=),得同步看 Body 编码是否匹配 Content-Type 头。
- 如果 Header 里有
Content-Type: application/json,那 Body 必须是合法 JSON 字符串,不能是 Python 字典字面量 - 如果 Header 是
application/x-www-form-urlencoded,Body 应为a=1&b=2形式,不是字典 - 复制进 Python 后,用
ast.literal_eval()或json.loads()测试能否解析——前者验字典字面量,后者验 JSON 字符串,二者不能混用
最容易被忽略的是:抓包导出的请求头可能含中文或特殊字符(如 Authorization: Bearer xxx 中的 token),Sublime 默认用系统编码读取,若原始是 UTF-8 而文件被识别为 GBK,\2 会截断乱码。遇到这种情况,先用 File → Reopen with Encoding → UTF-8 强制重载。











