Skip to main content

Command Palette

Search for a command to run...

RapidAPI 白名單解決,無法下載伺服器檔案

Published
•2 min read•View as Markdown

平台與 API

問題場景

當您在雲端伺服器(如 Vercel、RunPod、Google Colab)上使用這個 API 時:

  1. ✅ 第一步成功:呼叫 API 取得 MP3 下載連結

  2. ❌ 第二步失敗:用程式下載該 MP3 檔案時被阻擋(404 / 403 錯誤)

  3. ✅ 但在瀏覽器:直接點擊下載連結卻可以正常下載

┌─────────────┐      ┌──────────────┐      ┌─────────────┐
│  你的伺服器  │ ──→  │  RapidAPI    │ ──→  │  取得下載   │
│  (RunPod)   │      │  MP36 API    │      │  連結 ✓     │
└─────────────┘      └──────────────┘      └─────────────┘
       │
       ↓ 用程式下載該連結
       │
┌─────────────┐
│  下載伺服器  │ ──→  ❌ 404 被擋!(沒有身份識別)
└─────────────┘

為什麼會這樣?

  • 下載伺服器會檢查「誰來下載」

  • 一般程式請求缺少「身份識別」資訊

  • 伺服器認為是「未授權的機器人」→ 阻擋


🎯 總結

  1. 問題:雲端伺服器用程式下載 RapidAPI MP36 的音訊檔案時被阻擋

  2. 原因:缺少身份驗證,下載伺服器無法識別請求來源

  3. 解決:加入白名單標頭

    • 方法一:User-Agent 加 username

    • 方法二:X-RUN 標頭加 MD5(推薦)

  4. 建議:兩種方法同時使用,確保最高成功率

補充說明:這個白名單機制是專門針對「下載音訊檔案」這個步驟,
與「呼叫 API 取得下載連結」是兩個不同階段。
第一階段用 RapidAPI Key,第二階段用白名單標頭。


🔧 詳細說明 - 解決方案

官方提供 兩種白名單驗證方法,讓下載請求能「表明身份」:

📊 兩種方案比較

項目方案一(UA 加 username)方案二(X-RUN MD5)⭐
安全性🟡 明文傳輸使用者名稱🟢 加密傳輸(MD5)
實作難度🟢 簡單(直接字串拼接)🟡 需要 MD5 轉換
成功率🟢 高🟢 高
推薦程度⭐⭐⭐⭐⭐⭐⭐⭐

最佳實踐:同時使用兩種方法(雙重保險),成功率最高!


方案一:在 User-Agent 加上使用者名稱

原理:在請求標頭的 User-Agent 字串中,附加您的 RapidAPI 使用者名稱

headers = {
    # 一般瀏覽器 UA + 分號 + 您的 RapidAPI username
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36; your_username'
}

response = requests.get(download_url, headers=headers)

特點:

  • ✅ 簡單直觀,不需額外處理

  • ⚠️ 明文傳輸使用者名稱


方案二:使用 X-RUN 自訂標頭(推薦)⭐

原理:新增一個自訂標頭 X-RUN,值是您的 RapidAPI 使用者名稱的 MD5 雜湊值

import hashlib

# 步驟 1:計算您的 username 的 MD5
username = "your_username"  # 您的 RapidAPI 帳號名稱
md5_hash = hashlib.md5(username.encode()).hexdigest()
# 結果範例:abc123def456...(32 位元字串)

# 步驟 2:在下載請求中加入此標頭
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
    'X-RUN': md5_hash  # 白名單驗證標頭
}

response = requests.get(download_url, headers=headers, stream=True)

特點:

  • ✅ 不直接暴露使用者名稱(經過 MD5 加密)

  • ✅ 更安全的身份驗證方式

  • ✅ 可與方案一併用(雙重保險)


🔍 如何取得您的 RapidAPI 使用者名稱?

  1. 登入 RapidAPI 官網

  2. 點擊右上角大頭貼 → My Profile

  3. 在個人資料頁面找到 Username(通常是英文/數字組合)

  4. 這就是要拿來計算 MD5 的字串

⚠️ 注意:是 Username(帳號 ID),不是 Email


💡 常見問題

Q1:為什麼需要白名單?

A:防止濫用。下載伺服器需要確認「下載者是付費/授權的 API 使用者」,而不是隨意爬蟲。

Q2:不加白名單會怎樣?

A:在雲端環境(RunPod、Vercel)下載時會出現 404/403 錯誤,導致無法取得音訊檔案。

Q3:MD5 值需要每次重新計算嗎?

A:不用!同一個使用者名稱的 MD5 值是固定的,可以計算一次後儲存在環境變數中。

Q4:可以在瀏覽器下載,為什麼程式不行?

A:瀏覽器會自動帶上完整的 Cookie、Referer 等資訊,而程式請求預設是「乾淨」的,缺少身份識別。


More from this blog

🎨Figma MCP 雙向編輯 [ TalkToFigma ]

用自然語言描述,AI 立即在 Figma 中創建設計 - 突破只讀限制的革命性工具 📋 目錄 這個工具能做什麼? 核心價值與效益 快速開始 完整安裝指南 實際應用範例 故障排除 重要提醒 延伸資源 這個工具能做什麼? 🎯 一句話總結 讓 Cursor AI 不只能讀取 Figma 設計,更能直接修改、創建和批量操作 Figma 元件。 ✨ 核心突破 Cursor 官方的 Figma MCP(Model Context Protocol)整合只提供單向讀取,這個開源工...

Nov 7, 20259 min read

🚀 Cursor 設置 RunPod MCP - 完整指南

透過 Model Context Protocol (MCP),讓 Cursor AI 直接管理你的 RunPod GPU 資源! 📋 目錄 什麼是 RunPod MCP? 安裝步驟 配置說明 功能清單 / 實際範例 / 使用技巧 ⚠️ 注意事項 / 🔧 故障排除 📚 延伸資源 什麼是 RunPod MCP? RunPod MCP 是一個讓 Cursor AI 能直接與 RunPod 平台互動的工具。透過它,你可以在 Cursor 聊天室中: 🖥️ 創建和管理 G...

Nov 7, 202510 min read

Whisper 語音轉文字-多方案對比結果

前言 本文檔對比三種使用 Whisper 進行語音轉文字的方式,包含速度、成本與實際使用建議。測試音訊為 56 分 27 秒(約 52 MB)的訪談錄音。 【 總結 】 追求速度與性價比平衡:RunPod RTX 4090 速度最快(75 秒) 成本合理($0.023/次) 無文件限制 適合:中高頻使用(>50 次/天) 零部署需求:Fireworks V3 Turbo API 呼叫即可使用 成本中等($0.051/次) 速度中等(100 秒) 適合:低頻使用(<50 次/...

Nov 7, 20254 min read

🔍 01_SEO 是甚麼,與 Google Ads 差異對比

💡 SEO 一句話解釋 SEO = 讓陌生人在 Google 搜尋關鍵字時,能找到你的網站,而且排在前面。 📱 實際案例:弱電通的例子 搜尋「弱電通」會出現什麼? ┌────────────────────────────────────────┐ │ 🔍 Google 搜尋:「弱電通」 │ ├────────────────────────────────────────┤ │ ...

Nov 7, 20254 min read

比利先生

12 posts

在此分享個人實際在開發中遇到的採坑事件,每件事情都是個人撞牆後耗費大量精力,才發現問題其實簡單;我把問題與結論彙總成對應的筆記提供大家參考。