sublime中可三步将http请求头转为python字典:粘贴key: value格式文本→正则替换^(.):\s(.)$为"\1": "\2"→补{和};需注意空行分隔header与body、删自动生成字段(如host)、补全url及校验content-length与编码一致性。

HTTP请求报文在Sublime里怎么快速转成Python字典
抓包工具(如Fiddler、Wireshark)导出的原始请求头是纯文本格式,直接复制进Python代码会语法报错。Sublime Text 的正则替换能力刚好能解决这个问题——不用写脚本,三步搞定。
- 把抓到的请求头粘贴进新文件,确保每行都是
Key: Value格式,且冒号后有一个空格(比如User-Agent: Mozilla/5.0) - 打开 查找 → 替换,勾选「正则表达式」,填入:
^(.*):\s(.*)$→"\1": "\2" - 全选内容执行替换,再手动补上
{和},就得到合法字典。注意Cookie字段值含分号和等号,无需额外处理,Python dict 能原样接收
为什么Content-Type和空行位置会影响HTTP Requester插件发送结果
HTTP Requester 插件严格遵循 HTTP 报文格式:Header 和 Body 之间必须用一个**完全空白行**分隔。少一个换行或多了空格,它就把 Body 当作 Header 解析,导致服务端收不到数据或返回 400 Bad Request。
- 常见错误:复制 Postman 导出的请求时,Body 前多了一个缩进空格,或空行被自动删掉
- 正确写法示例(注意第4行是空行):
POST https://api.example.com/login<br>Content-Type: application/json<br><br>{"email":"a@b.c","password":"123"} - 如果 Body 是 form-data,不能直接写 JSON,得用
Content-Type: application/x-www-form-urlencoded并把参数拼成key1=value1&key2=value2
抓包导出的Host、Connection等字段要不要保留进Python请求
绝大多数时候要删掉。Python 的 requests 库会自动生成这些字段,硬写进去反而可能冲突或触发服务端校验失败。
- 必须保留的只有业务相关 Header:
Authorization、X-API-Key、Cookie、Accept等 - 可安全删除的典型字段:
Host(requests 自动根据 URL 填)、Connection、Pragma、Cache-Control、Accept-Encoding(除非你明确要禁用 gzip) - 特别注意
User-Agent:有些接口会拦截默认 UA,这时才需要显式带上;否则删掉更干净
Fiddler抓包后导出的请求,在Sublime里编辑时容易漏掉哪些关键细节
导出的原始请求文本往往缺关键上下文,直接拿来用大概率失败。重点检查三处:
-
URL是否完整:Fiddler 导出有时只给路径(如/api/v1/user),漏了协议和域名,得手动补成https://example.com/api/v1/user -
Content-Length字段:抓包导出常带这个头,但 Python requests 会自动计算并覆盖它,留着反而可能因长度不匹配被拒绝 - 中文或特殊字符是否被 URL 编码:比如
name=张三在抓包里显示为name=%E5%BC%A0%E4%B8%89,直接复制进 Python 字符串没问题;但如果手动改过内容,记得用urllib.parse.quote()处理
Content-Type 不一致——这两点没法靠插件自动发现,得人眼对齐。











