如何从Instagram帖子URL中获取有效的media-id
Instagram帖子URL提取media-id方法
旧版oEmbed接口取ID、URL拼接?__a=1取数的方案均已失效,以下为实测可用方案:
方案1:短码本地转ID(永久稳定,无访问限制)
Instagram帖子URL中/p/路径后的字符串为帖子短码,和media-id为固定编码映射关系,本地即可完成转换,不受接口规则变动影响:
- 编码逻辑:短码采用自定义Base64字符集
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_编码,逐字符匹配字符集索引后按64进制转十进制,结果即为media-id - 示例结果:示例链接
https://www.instagram.com/p/Cf4dPucLzW0/的短码为Cf4dPucLzW0,转换后得到media-id为2889327482068701201 - 参考JS实现代码:
function shortcodeToMediaId(shortcode) { const charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'; let id = 0n; for (const char of shortcode) { id = id * 64n + BigInt(charset.indexOf(char)); } return id.toString(); } // 传入/p/后的短码即可直接得到结果
方案2:页面源码直接提取
无需计算,直接从公开的帖子页面提取字段:
- 直接在浏览器访问帖子原始URL,不要拼接任何额外参数
- 右键打开网页源代码,搜索关键词
"media_id",匹配到的首个双引号包裹的数字串即为目标media-id - 注意:未登录状态下即可获取该字段,无需账号登录
提示:所有拼接特殊参数获取结构化JSON数据的旧方案目前均触发重定向,公开oEmbed接口已移除media-id返回字段,无特殊需求优先使用本地方案1,稳定性最高。
内容的提问来源于stack exchange,提问作者penguin_P
相关产品推荐
相关产品推荐

