Instagram 高清图文视频,GraphQL 完整捕获
录下你自己已登录的浏览器本来就会收到的 GraphQL 响应,按原始分辨率保存每张图片和每段视频,最高 3072×4096 JPEG。
- Instagram 企业版 (需企业版 Operator 构建)
- GraphQL
- HAR 1.2
业务痛点
现在卡在哪里
大响应被截成两半
一条 Instagram GraphQL 响应可达 1.97MB。把响应体限制在 1MB 的插件和抓取工具拿回的是半截数据,一解析就报 Unterminated string。
截图和另存都是压缩图
信息流里显示的是缩小后的预览图,3072×4096 的原图地址只在响应数据里。
302 跳转让素材对不上帖子
媒体地址要经过 302 跳转,只记录最后一跳的工具会丢掉帖子和文件之间的对应关系。
Operun 怎么解决
为什么用 Operun 更稳
单个响应 5MB 预算
默认保留单个响应体最多 5MiB(可用 --max-body-size 调整),整次录制上限 8MiB。被截断的响应会标出它的真实大小。
双向 FIFO RequestChain 队列
每个请求 id 按跳转链追踪,用两个先进先出队列配对,无论 Chrome 以什么顺序上报,请求头和 Cookie 都对得上正确的那一跳。
302 无损追踪
每一跳重定向都从下一跳的 redirectResponse 补全,并带上 redirectURL 导出,每个文件都能追溯到引用它的帖子。
- 01
开始录制
在你已登录的浏览器里打开 Instagram,开启只记录 GraphQL 请求、带响应体的录制。
- 02
浏览主页
Operun 打开并滚动主页,Instagram 像平常一样把帖子加载进页面。
- 03
停止并导出 HAR
停止录制,写出包含完整响应体和每一跳 302 的 HAR 1.2 文件。
- 04
保存原图素材
根据响应生成素材索引,按帖子保存每张原图和每段视频。
动手跑一遍
这套方案背后的 Operun 命令
运行环境:企业级 Operator 专版
# capture start|stop 需要 Operator 专版
operun browser capture start --tab 7 --match "graphql" \
--bodies --max-body-size 5242880
operun browser goto --tab 7 "https://www.instagram.com/<your-brand>/"
operun browser act --action scroll --tab 7 --direction down --amount 2400
operun browser capture stop --tab 7 --out brand-feed.har {
"entries": 38,
"body_limit": 5242880,
"bodies_omitted": 0,
"dropped": 0
} 仅限授权使用:仅用于从你本人已授权的账号,或公开且已获许可的来源导出数据,并遵守平台条款。只录制你拥有或获得授权使用的内容,并遵守 Instagram 服务条款。Operun 记录的是你自己已登录的浏览器本来就会收到的数据,看不到你无权访问的私密账号。
输入与产出
你给什么,拿到什么
需要准备
-
账号或主页
你自己的品牌账号,或你有权使用的内容
-
抓包过滤
URL 正则,例如 graphql
-
保存目录
本地文件夹或 NAS 路径
交付结果
-
HAR 1.2 录制文件
.har,含完整响应体和跳转链
-
原始分辨率素材
JPEG / MP4 原始分辨率,每个帖子一个文件夹
-
素材索引
CSV / JSON:帖子、文案、媒体地址、尺寸
效果
省下来的时间看得见
2MB+
GraphQL 响应完整保留,不截断
3072×4096
原图分辨率无损保存
0
截图和手动另存
以上为实际项目中的典型结果,具体效果取决于店铺数量和流程范围。