r/webscraping 帖子:浏览器端 YouTube 剪辑器命中了 Supabase IP 级防火墙块。这就是架构修复。
前置条件
- Scavio API 密钥
- 决定:您需要视频字节还是只需要元数据?
操作指南
步骤 1: 分类需求:元数据还是字节?
大多数剪辑工具用户体验需要脚本+时间戳;不是字节。
Text
# Decision: if iframe playback + transcript-driven clip moments are acceptable, you don't need bytes.步骤 2: 元数据路径:Scadio YouTube 端点
输入 JSON,包含标题、持续时间、transcript_segments、章节。
Python
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
r = requests.post('https://api.scavio.dev/api/v1/search', headers=H, json={'platform': 'youtube', 'url': video_url, 'include_transcript': True}).json()步骤 3: 前端:iframe播放+成绩单剪辑UX
用户从文字记录中选择一个剪辑时刻; iframe 寻求时间戳。
JavaScript
// <iframe src={`https://www.youtube.com/embed/${id}?start=${start}&end=${end}`} />步骤 4: 字节路径(仅在需要时):边缘工作者
Cloudflare/Vercel Edge 确实通过旋转住宅代理进行获取。
JavaScript
// Cloudflare Worker (sketch): fetch(`https://www.youtube.com/watch?v=${id}`, { /* proxy headers */ })步骤 5: 根据视频 URL 积极缓存
在 Postgres 或 Redis 中缓存成绩单。
Text
# Cache key: youtube:{video_id} → expire 7 days.步骤 6: 测试:无 Supabase IP 冲突
尾部日志。
Text
# Sanity: tail logs; expect zero 'YouTube blocked the request' errors.Python 示例
Python
# Per video: ~1 Scavio credit. Cache hit rate after first 1K videos: typically 70%+.JavaScript 示例
JavaScript
// Same shape in Node + Hono on edge.预期输出
JSON
Metadata path produces typed JSON without IP blocks. Byte path (when needed) routes through residential proxy.