开发Chrome扩展:无需API令牌,能否通过Reel ID获取Ins视频JSON元数据?
解决方案:登录状态下通过Reel ID获取元数据
你可以通过以下两种无需访问令牌的方式,在用户登录状态下获取Reel的JSON数据:
1. 使用Instagram移动端API端点
登录状态下,浏览器已携带有效会话Cookie,直接请求移动端的媒体信息端点即可拿到完整元数据:
- 请求地址:
https://i.instagram.com/api/v1/media/{REEL_ID}/info/ - 替换
{REEL_ID}为你从地址栏提取的短码(比如C192Qr7IPVp) - 示例响应中,
data.video_duration字段就是你需要的mediaPresentationDuration(单位为秒)
请求时无需额外授权,只要确保请求头包含浏览器的User-Agent和会话Cookie(Chrome扩展的fetch会自动携带当前页面的Cookie)。
2. 复用网页端GraphQL请求
Instagram网页端加载Reel时会发送GraphQL查询,你可以直接复用这个逻辑:
- 从页面Cookie中提取
csrftoken值(用于请求头的X-CSRFToken) - 构造POST请求到
https://www.instagram.com/graphql/query/,参数如下:query_hash:使用针对单条媒体查询的有效哈希(可从当前页面的网络请求中抓取,比如9dcf6e1a98bc7f6e92953d5a602a5949,注意该值可能随Instagram更新变化)variables:JSON字符串{"shortcode":"{REEL_ID}"}
- 响应的
data.shortcode_media.video_duration即为视频时长
注意事项
- Instagram的API端点和GraphQL哈希可能随时更新,建议在扩展中动态监听页面的网络请求,提取最新的有效参数,避免硬编码失效
- 确保扩展的权限包含
https://*.instagram.com/*,以便跨域发送请求
内容的提问来源于stack exchange,提问作者codephys
相关产品推荐
相关产品推荐

