跳至主要內容
CJCJ Kuo

全站文章搜尋

輸入關鍵字即刻在靜態索引中快速搜尋
↑↓ 導航 · Enter 選取前往獨立搜尋頁 →
反網路爬蟲為什麼要檢查 Referer 這個 Header ?
資訊技術••約 2 分鐘•545 字

反網路爬蟲為什麼要檢查 Referer 這個 Header ?

本文目錄共 5 節

referer 參數是 HTTP 請求頭中的關鍵參數,用於表示請求的來源地址。例如,在頁面引入圖片、JS 等資源或跳轉網址時,一般都會帶上 referer 參數。然而,referer 參數也非常容易辨識及偽造,因此成為了網路爬蟲與防禦方的拉扯戰爭。

歷史淵源

HTTP referer 是 HTTP 表頭的一個欄位,用於表示請求的來源地址採用的格式是 URL。

目前的網頁可以藉由 HTTP referer 檢查訪客從哪裡而來,這也常被用來對付偽造的跨網站請求。

拼寫問題

Referer 的正確英語拼法是 referrer。這是早期 HTTP 規範中的拼寫錯誤,後來為了向下相容而將錯就錯。例如 DOM Level 2、Referrer Policy 等其他網路技術的規範曾試圖修正此問題,使用正確拼法,導致目前拼法並不統一。

功能與概念

當訪客訪問網頁時,HTTP referer 參數用於表示請求的來源地址。如果是圖片的話,通常指的就是圖片所在的網頁。

網站可以藉由 HTTP referer 參數來追蹤使用者的動態或進行統計,但這也可能會帶來隱私權問題。因此,不少網頁瀏覽器允許使用者設定不要送出 HTTP referer 參數,有些代理伺服器和防火牆也會將 HTTP referer 參數過濾掉。

缺少 HTTP referer 參數可能會造成某些使用問題,例如某些伺服器會因為缺少正確的 HTTP referer 參數而進行阻擋。

Referer Header 隱私

Referrer-Policy 是一種 HTTP 標頭,用於控制 HTTP referer 參數的傳送方式,提供網頁本身可以根據不同的需求調整送出的標頭內容,來協助訪可在隱私上得到更好的控制權。

注意的特例

在以下兩種情況下,HTTP referer 參數不會被傳送:

  • 來源頁面採用的協定為表示本機檔案的 “file” 或 “data” URI;
  • 目前請求頁面採用的是非安全協議,而來源頁面採用的是安全協議(HTTPS)。
查看此系列所有文章 →
CJ Kuo (郭仕杰)

CJ Kuo (郭仕杰)

創辦人兼主筆

熱愛軟體架構、DevOps、系統調優與新技術探索的工程實踐者,也會寫寫投資和生活。

獨立技術專刊推播

訂閱技術電子報

有新文章發布時寄送到您的信箱,不發送垃圾信。