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

如何使PowerShell WebRequest请求含媒体的Twitter推文接口返回正常可读结果?

如何使PowerShell WebRequest请求含媒体的Twitter推文接口返回正常可读结果?

嘿,这个问题我之前也碰到过!你看到的乱码其实是Gzip/Deflate压缩后的二进制数据——Twitter对包含媒体(视频/图片)的推文接口响应启用了压缩,但Chrome DevTools复制出来的PowerShell代码默认没处理解压逻辑,而Linux下的curl会自动处理压缩响应,所以才会出现两边结果不一样的情况。

咱们直接来改代码解决问题,有两种方法:

方法一:添加解压参数(推荐)

找到复制的PowerShell代码里的Invoke-WebRequest命令行,直接加上-DecompressionMethod Gzip,Deflate参数就行:

# 修改前的最后一行大概是这样
Invoke-WebRequest -Uri "https://twitter.com/..." -Headers @{...} -ContentType "application/json"

# 修改后加上解压参数
Invoke-WebRequest -Uri "https://twitter.com/..." -Headers @{...} -ContentType "application/json" -DecompressionMethod Gzip,Deflate | select Content | FL

这个参数会告诉PowerShell自动处理服务器返回的Gzip或Deflate压缩内容,运行后就能得到正常可读的JSON结果了。

方法二:手动解压响应内容(兼容旧版PowerShell)

如果你的PowerShell版本比较旧(比如5.1之前的版本),-DecompressionMethod参数可能不可用,那可以手动处理解压:

# 先保存请求响应
$response = Invoke-WebRequest -Uri "https://twitter.com/..." -Headers @{...} -ContentType "application/json"

# 手动创建Gzip流解压内容
$gzipStream = New-Object System.IO.Compression.GzipStream($response.RawContentStream, [System.IO.Compression.CompressionMode]::Decompress)
$streamReader = New-Object System.IO.StreamReader($gzipStream)

# 读取解压后的内容
$readableContent = $streamReader.ReadToEnd()

# 输出结果
$readableContent

运行这段代码后,你就能看到和不带媒体的请求一样的清晰JSON结构了。

简单来说就是Twitter给带媒体的内容开了压缩,PowerShell默认没接这个“暗号”,加上解压配置就能正常解码啦!

备注:内容来源于stack exchange,提问作者July Elizabeth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 09:53:13