騰訊雲帳號開戶服務 騰訊雲CDN防盜鏈與黑白名單設置教學
前言:防盜鏈到底在防什麼
很多網站把圖片、影片、下載包掛在 CDN 上後,會遇到一個典型問題:別人不經過你的站點,直接用“外鏈”方式請求你的資源。表面上看請求都走了 CDN,流量也進了你的帳,實際上你的資源被別人拿去“轉載、復用、嵌入”,導致兩種損失:一是下載/播放的消耗失去可控性;二是你的站點被動承擔內容分發的風險,比如被抓住節點後大量惡意請求、爬蟲行為變多,甚至影響正常用戶體驗。
防盜鏈的目的不是“絕對防止所有非法請求”,而是提高盜鏈成本,讓沒有授權的來源難以穩定調用你的資源。常見做法主要依賴瀏覽器請求頭、請求來源、以及你自訂的條件:你認可的來源才能正常拿到內容;你不認可的來源就被拒絕或重定向。
在騰訊雲 CDN 的防盜鏈能力中,白名單與黑名單是一組很實用的策略:白名單偏“允許列表”,黑名單偏“拒絕列表”。兩者的搭配方式,決定了你的策略風格。理解它們的差異,能避免配置做完卻完全不生效的尷尬。
核心概念先弄清:你需要的是“來源控制”還是“令牌控制”
在實際運營中,人們常把“防盜鏈”與“防止資源被任何人下載”混為一談。但請求來源驗證通常依賴 Referer、Host、User-Agent 或自訂規則。這類方法對“嵌入式外鏈”和“瀏覽器行為”有效;但如果對方技術手段更強,例如用腳本直接抓取、或模擬請求頭,你的規則覆蓋就需要更精細。
因此,你要先判斷自己的目標:
- 目標 A:限制外站直接嵌入(Referer 來源):這時防盜鏈與黑白名單特別合適。
- 目標 B:限制下載只能在授權後進行:除了來源控制,你可能還需要更強的鑑權方案,例如簽名 URL、或結合業務後端鑑權(視你使用的 CDN 功能而定)。
- 目標 C:在成本與效果之間找平衡:通常以白名單放行 + 黑名單阻擋明顯風險來源,再用觀察數據迭代。
本文重點是“來源控制”的防盜鏈與黑白名單設定。你會看到如何把它配置成可落地的流程,而不是只停在概念。
準備工作:配置前先把“資源歸屬”理清
很多人在配置防盜鏈時只想到“要填 Referer”,但漏掉了更關鍵的前提:你要明確這些 URL 是什麼範圍、要保護的是哪些資源、以及回源與域名的關係。
1. 確定要保護的域名與路徑
先列出你 CDN 對外提供服務的域名,例如:cdn.example.com 或你的自訂加速域名。接著把你要保護的資源範圍寫清楚,例如:
- 所有圖片:
/images/* - 只保護影片:
/video/* - 某個下載目錄:
/download/*
路徑越清楚,你的規則就越精準,誤傷越少。
2. 確定你的主站域名與可能來源
白名單通常填“允許的來源域名”。來源可能包括:
- 你的主站域名:
www.example.com - 你的前端站:
app.example.com - 你用作嵌入的平台或子站:例如
m.example.com - 合作夥伴站(若你允許其嵌入):需要你提供其域名
注意:這裡談的“來源域名”一般是指 Referer 中出現的域名,而不是你 CDN 的域名。
3. 檢查協議與端口(這是常見坑)
Referer 比較細節:它可能包含協議(http/https)與路徑,甚至端口。很多人只在白名單填了域名,結果實際請求是因為協議或端口差異而不匹配。你不需要每個細節都理解到運行原理,但至少要記住:讓規則覆蓋你真實發出的請求。
在騰訊雲 CDN 設置防盜鏈:一條能照著做的路線
以下用“教學”方式把流程拆開:先進控制台找到 CDN 相關配置,再啟用防盜鏈,最後建立白名單與黑名單規則。由於控制台界面可能會隨時間調整,你的實際按鈕名稱可能略有差異,但邏輯一致。
步驟 1:進入 CDN 加速域名配置
在騰訊雲控制台打開 CDN 服務,找到你正在使用的加速域名(通常是你已經綁定的域名)。進入該域名的“配置”頁面。
確保你已經完成:
- 加速域名已綁定(DNS 指向 CDN 或使用了相應的 CNAME/解析方式)
- 回源站配置可正常工作(能夠在瀏覽器正常拉取資源)
- 你要保護的 URL 路徑確實存在且回源成功
如果回源本身就有問題,防盜鏈怎麼配都會讓你誤以為“規則失效”。所以先跑通,這是節省時間的第一原則。
騰訊雲帳號開戶服務 步驟 2:開啟防盜鏈策略
在該加速域名的功能模塊中找到“防盜鏈”或同類描述的選項。開啟後通常會出現規則配置區。
你需要關注兩個層級:
- 規則類型:白名單/黑名單(或兩者協同)
- 匹配範圍:作用到哪些路徑、哪些請求
很多平台允許你選擇“對全部路徑生效”或“針對特定路徑生效”。如果你的內容分區明確,建議只對需要保護的目錄啟用,降低誤傷。
步驟 3:添加白名單(推薦從白名單策略開始)
騰訊雲帳號開戶服務 白名單的寫法通常是:允許特定 Referer 域名通過。你可以按以下方式建立:
- 加入你的主站域名
- 加入移動端域名
- 加入可能嵌入資源的子域名
- 如果有合作夥伴站,按你授權的域名加入
一開始不建議把範圍設得太廣。比如你只是要保護 /video/*,那就把白名單配置作用於該路徑,而不是把全站所有資源都放到防盜鏈的嚴格策略下。
白名單配置還要考慮“空 Referer”的情況。有些請求可能因為瀏覽器策略或直連而不帶 Referer。你要想清楚:直連(例如手動在地址欄輸入)你是否允許。許多團隊做法是:對空 Referer 先採取寬鬆策略或先不啟用“全拒絕”,避免把你自己的測試與監控也擋掉。
騰訊雲帳號開戶服務 步驟 4:添加黑名單(針對明顯風險來源)
黑名單的目的是快速阻擋惡意或明顯不該授權的來源。黑名單可以用來:
- 封禁明確盜鏈行為來源域名
- 阻擋某些已知爬蟲站點或中間轉發站
- 對特定合作夥伴收回授權後快速禁用
但黑名單並不是越多越好。原因很簡單:你要承擔維護成本,而且規則之間的優先級可能影響效果。實務上更穩妥的做法是:先用白名單把“你允許的”鎖住,再用黑名單補充“你確定要拒絕的”。
步驟 5:設置匹配規則的細節(路徑與條件)
防盜鏈規則一般會有以下常見可選項:
- 匹配條件:Referer 域名、完整 URL、或通配符
- 匹配範圍:對哪些 URL path 生效
- 處理方式:命中後返回 403、重定向到錯誤頁、或返回自定義內容(依你使用的功能而定)
建議你先把規則的通配範圍控制好。例如只用域名匹配,不要一開始就用過度寬泛的“*”導致誤判。你可以先做小範圍灰度:先只保護某個目錄,確定生效,再擴大。
步驟 6:保存並等待生效
保存配置後通常會有一個生效延遲。這段時間你可能會遇到“測試還不生效”的錯覺。建議你在測試時段內以最小成本驗證:例如用同一條 URL、用兩個已知來源(一個在白名單內、一個明確不在白名單內),對比響應碼。
如何測試防盜鏈是否真的生效
測試是整套教學最容易被跳過的部分,但也是最能避免你“改了一堆卻不知道哪裡錯了”的地方。
測試方法 1:瀏覽器直接訪問 + 查看請求頭
用瀏覽器打開你的受保護資源。你要確保該資源是從你允許的站內跳轉或嵌入請求(例如從主站頁面打開圖片)。同時打開開發者工具,觀察請求頭中的 Referer 是否如預期包含你的域名。
如果你發現:
Referer是空的Referer的域名不是你填入白名單的那個Referer有 http/https 差異
那就不是“防盜鏈沒生效”,而是匹配條件沒對上。你需要回到規則與白名單配置做調整。
測試方法 2:用非白名單來源“外鏈”
騰訊雲帳號開戶服務 準備一個不在白名單的測試頁面或測試環境,嘗試從該頁面引用你的 CDN 資源。例如使用簡單的 HTML 讓瀏覽器請求圖片或影片。此時瀏覽器請求會帶上該測試頁面的域名作為 Referer。
你期望的結果是:CDN 命中防盜鏈規則,返回 403 或你設定的處理方式。
測試方法 3:觀察 CDN 指標與命中情況
除了直接看前端響應,還要看 CDN 的狀態:是否出現命中增多、是否有防盜鏈拒絕的統計、是否有錯誤碼分佈變化。
如果你只做前端“看能不能打開”,但沒有查統計,容易出現兩種情況:
- 規則其實命中了,但你以為是回源錯誤
- 規則沒有命中,但你以為是測試方法錯了
把數據和現象對上,你就能更快定位問題。
常見誤區與解法(真正在現場會遇到的)
誤區 1:只填 CDN 域名,卻以為防盜鏈在比“誰請求的”
防盜鏈通常比的是“請求來源”信息,也就是 Referer 中的來源。你填 CDN 自己的域名當然不會生效,因為 Referer 不會等於 CDN 域名(除非你在 CDN 域名內跳轉再請求)。解法是:把白名單/黑名單填成“來源站域名”。
誤區 2:忽略 http/https 與子域名差異
例如你主站是 https://www.example.com,但你白名單填的是 http://www.example.com 或反之。又或者你請求實際 Referer 是 m.example.com,但你只填了 www.example.com。解法是:用實際請求頭去校對,再調整白名單條目。
誤區 3:把所有路徑都套上防盜鏈,結果監控、回源測試全掛了
很多監控系統或內部測試會直接拉取 CDN URL,但這類請求的 Referer 可能不是你預期的來源。解法是:先只保護敏感目錄(例如影片、下載),再逐步擴大;或者在白名單中加入必要的測試來源。
誤區 4:只用黑名單,導致“被夠狠的人”仍能用其他來源繞過
黑名單是被動的,你擋得了一部分明顯來源,但無法覆蓋所有新的盜鏈者。更穩妥的策略通常是以白名單為主:只允許你認可的來源,其他都不通過。
誤區 5:規則優先級搞不清楚
實務中可能出現“同時命中白名單與黑名單”的情況,你需要知道平台的優先級規則。解法是:在測試階段設計一組情境,比如某個域名同時被加入白名單與黑名單(只用於測試),觀察實際結果,以確定優先級。
場景化示例:怎麼把白白黑黑用到你的業務上
場景 1:電商站圖片防外鏈
電商常見需求是:商品詳情頁的圖片允許站內展示,但不允許第三方站點直接嵌入。你可以:
- 白名單:填
www.example.com、m.example.com、以及你的管理後台域名(如果後台也顯示圖片) - 黑名單:先不急著加,等你從日志中看到盜鏈來源再逐步補充
- 騰訊雲帳號開戶服務 匹配範圍:只針對
/product-images/*或相應目錄 - 錯誤處理:返回 403 或自定義提示頁(避免洩露細節)
效果通常很快就能在外站嵌入被拒絕上看到。
場景 2:內容站點影片與下載防盜
騰訊雲帳號開戶服務 內容站的影片與下載通常更敏感。你可以採用更嚴的策略:
- 白名單:只保留你的主站與允許嵌入的合作方域名
- 匹配範圍:針對
/video/*、/download/* - 對空 Referer:先決定是否允許直連。若你希望“必須從站內點擊播放”,就更傾向禁止空 Referer。
- 搭配策略:若業務需要更強鑑權,防盜鏈可以作為第一層,真正的授權再交給後端或簽名 URL
這樣你既能阻擋明顯外鏈,又能保留業務可控性。
場景 3:多端前後分離(Web + 小程序/APP)
多端場景的難點在於:Referer 的可靠性可能因為端能力而不同。Web 頁面通常帶 Referer;但某些請求可能不帶或表現不同。解法是:
- 先從 Web 端驗證規則:確定 Referer 域名是否穩定
- 對於 APP 或小程序拉取的資源:如果 Referer 不穩定,防盜鏈未必是最適合的主方案,需要搭配更強的鑑權(按你的業務架構選)
- 騰訊雲帳號開戶服務 白名單保持精簡:以確保規則可控
不要硬套“只靠 Referer”來解決所有端的授權問題。
維運策略:上線後怎麼調參,而不是一次做死
防盜鏈不是“設完就永遠不管”的功能。盜鏈行為會演化,而你的業務域名也可能新增。建議你建立一套維運節奏:
1. 定期看拒絕命中與來源分佈
騰訊雲帳號開戶服務 每週或每月抽查命中被拒的來源域名。如果出現你不認可但又突然變多的域名,可能是新盜鏈或新爬蟲。相反,如果你發現正常業務域名也被拒,就需要調整白名單或匹配規則。
2. 用灰度降低誤傷
當你要新增黑名單時,先觀察影響。最好採用“小範圍路徑 + 小規模條目”的方式逐步加嚴。這比直接全站禁用更安全。
3. 變更管理:域名升級要同步更新規則
你換前端域名、加上新子域、甚至引入新網關後,Referer 可能改變。把 CDN 規則納入變更清單,在發佈前同步確認。
結語:把防盜鏈做成“可控的安全措施”
真正有效的防盜鏈,不在於你填了多少條規則,而在於你對“請求來源”理解清楚、對“需要保護的範圍”定得準、並用測試與數據迭代。建議你遵循一個簡單但可靠的順序:先讓回源與資源正常,再建立針對敏感目錄的白名單,最後再補充黑名單針對性阻擋。每次改動都用明確的測試方法驗證,並觀察命中與拒絕統計。
當你把這套流程跑熟,你會發現防盜鏈不是麻煩事,而是一種成本可控的保護層,讓 CDN 的分發能力真正服務於你的業務,而不是被外部伸手搬走。

