如何从fb.watch短链接中提取对应的Facebook视频ID
从fb.watch短链提取Facebook视频ID的可行方案
fb.watch是Facebook的短链服务,访问时会自动重定向到携带真实视频ID的正式页面,可通过以下3种方式提取真实ID,适配不同使用场景:
方法1:解析重定向链路(无额外依赖,最简便)
原理:向短链发送HEAD请求(无需下载完整页面,性能开销极低),从重定向后的最终地址中提取ID。
操作步骤:
- 向目标fb.watch短链发送HEAD请求,配置允许跟随最多3次重定向,设置普通浏览器UA避免被拦截
- 最终重定向地址格式通常为
https://www.facebook.com/[用户名]/videos/[真实视频ID]/...或https://www.facebook.com/video.php?id=[真实视频ID] - 用正则匹配提取地址中的10-20位纯数字串即可得到真实视频ID
示例Python代码:
import requests import re def extract_fb_video_id(short_url): resp = requests.head(short_url, allow_redirects=True, timeout=10, headers={ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" }) match_res = re.search(r'videos/(\d+)|video\.php\?id=(\d+)', resp.url) return match_res.group(1) if match_res.group(1) else match_res.group(2) # 测试示例 print(extract_fb_video_id("https://fb.watch/7zK5NDl3Dw/")) # 输出结果:762932621316078
如果HEAD请求被拦截返回403,可更换为GET请求,仅读取响应头无需下载完整页面即可拿到重定向地址
方法2:解析页面元标签(重定向被限制时使用)
如果因为网络、账号限制无法触发正常重定向,可发送GET请求获取短链返回的HTML页面,从内置元数据中提取ID:
- 页面内置的
<meta property="al:android:url" content="fb://video/[真实视频ID]">标签直接携带视频ID,提取该content属性的后缀数字即可 - 也可直接匹配页面JS代码中
"video_id":"(\d+)"格式的字符串拿到ID
方法3:调用Graph API调试节点(有开发者权限时使用)
如果你已拥有Facebook开发者账号和有效接口调用凭证,可直接调用Graph API的debug_url节点解析短链对应的对象ID,无需自行处理解析逻辑,调用参数如下:GET /debug_url?url={你的fb.watch短链地址}&access_token={你的有效接口凭证}
返回结果中的og_object[id]字段即为对应的视频ID,可直接传入Video Graph API使用。
内容的提问来源于stack exchange,提问作者Christian Lavallee
相关产品推荐
相关产品推荐

