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

如何将HAR格式请求转换为PowerShell的WebRequest/RestMethod请求?

HAR 请求转 PowerShell Invoke-WebRequest/Invoke-RestMethod 指南

针对你提供的简单HAR GET请求,直接转换后的PowerShell代码如下:

# 使用 Invoke-RestMethod(适合API请求,自动解析响应)
Invoke-RestMethod -Uri "https://example.com" -Method GET -HttpVersion 1.1

# 或者使用 Invoke-WebRequest(返回完整响应对象,包含状态码、头等信息)
Invoke-WebRequest -Uri "https://example.com" -Method GET -HttpVersion 1.1

复杂HAR请求的手动转换方案

针对Httpsnippet无法处理的复杂场景,可以按以下步骤拆解转换:

1. 处理请求方法与URL

直接从HAR的method和url字段提取,对应PowerShell的-Method和-Uri参数。如果HAR中单独列出queryString,可以构建哈希表传入-Body参数:
比如HAR的查询参数部分:

"queryString": [
    {"name": "id", "value": "123"},
    {"name": "filter", "value": "active"}
]

转换为:

$queryParams = @{
    id = "123"
    filter = "active"
}
Invoke-RestMethod -Uri "https://example.com" -Method GET -HttpVersion 1.1 -Body $queryParams

2. 转换请求头

从HAR的headers数组提取键值对,构建PowerShell哈希表传入-Headers参数:
HAR示例:

"headers": [
    {"name": "Content-Type", "value": "application/json"},
    {"name": "Authorization", "value": "Bearer token123"}
]

转换为:

$reqHeaders = @{
    "Content-Type" = "application/json"
    "Authorization" = "Bearer token123"
}
Invoke-RestMethod -Uri "https://example.com/api" -Method POST -HttpVersion 1.1 -Headers $reqHeaders

3. 处理Cookies

HAR的cookies数组有两种转换方式:

  • 直接拼接为Cookie请求头:
# HAR的cookies字段:[{"name": "sessionId", "value": "abc456"}, {"name": "theme", "value": "dark"}]
$reqHeaders["Cookie"] = "sessionId=abc456; theme=dark"
Invoke-RestMethod -Uri "https://example.com" -Method GET -HttpVersion 1.1 -Headers $reqHeaders
  • 使用会话变量维持Cookie(适合多请求会话):
$webSession = New-Object Microsoft.PowerShell.Commands.WebRequestSession
$webSession.Cookies.Add((New-Object System.Net.Cookie("sessionId", "abc456", "/", "example.com")))
$webSession.Cookies.Add((New-Object System.Net.Cookie("theme", "dark", "/", "example.com")))
Invoke-RestMethod -Uri "https://example.com" -Method GET -HttpVersion 1.1 -WebSession $webSession

4. 转换POST请求体

根据HAR的postData类型处理:

  • JSON格式请求体:
"postData": {
    "mimeType": "application/json",
    "text": "{\"username\":\"test\",\"password\":\"123456\"}"
}

转换为:

$reqBody = '{"username":"test","password":"123456"}'
Invoke-RestMethod -Uri "https://example.com/login" -Method POST -HttpVersion 1.1 -Headers @{"Content-Type"="application/json"} -Body $reqBody
  • 表单编码请求体:
"postData": {
    "mimeType": "application/x-www-form-urlencoded",
    "params": [
        {"name": "username", "value": "test"},
        {"name": "password", "value": "123456"}
    ]
}

转换为:

$reqBody = @{
    username = "test"
    password = "123456"
}
Invoke-RestMethod -Uri "https://example.com/login" -Method POST -HttpVersion 1.1 -Headers @{"Content-Type"="application/x-www-form-urlencoded"} -Body $reqBody

额外说明

  • Invoke-RestMethod默认解析JSON/XML响应,适合API场景;Invoke-WebRequest返回包含状态码、响应头、原始内容的完整对象,适合需要精细控制的场景。
  • 对于multipart/form-data类型的请求体,可以构建MultipartFormDataContent对象或使用-InFile参数上传文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 00:45:33