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

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

歷史淵源

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

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

拼寫問題

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

功能與概念

當訪客訪問網頁時,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)。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

返回頂端