全部文章

如何以聰明的方式封鎖網站上的 VPN 使用者

封鎖所有 VPN 使用者只會令真正的客戶感到困擾。本文說明如何可靠地偵測 VPN 流量、如何在封鎖與驗證之間作出選擇,並在不產生誤判的情況下完成實作。

2026年5月27日閱讀約 5 分鐘

要在網站上封鎖 VPN 使用者,應以 VPN 偵測 API 檢查每位訪客的 IP,再按操作分別決定:在註冊、登入及付款時,封鎖或驗證高信心分數的 VPN,一般瀏覽則予以放行。檢查可在後端以一次 API 呼叫完成,亦可毋須編寫程式碼,在網站前端透過 Cloudflare Worker、WordPress 外掛,或 Traefik、Caddy、nginx 閘道完成。一律封鎖所有 VPN 甚少是正確做法,因為不少 VPN 使用者是正當客戶。

先釐清你真正的目標

在著手實作之前,應先將目標與方法區分清楚:

  • 合規 / 牌照要求:在若干地區,你或許確實需要封鎖來自匿名化 IP 的存取。
  • 減少詐騙:你所需要的並非封鎖,而是在風險較高之處增加阻力。
  • 防止濫用:你希望阻止的是多重帳戶及試用濫用,這關乎註冊環節,而非瀏覽行為。

大多數網站屬於第二或第三類,在這些情況下,驗證比封鎖更為合適。

檢查某個 IP 是否正在使用 VPN

VPN 偵測
試試

第一步:可靠地偵測 VPN 流量

看不見的東西便無法採取行動。應使用能同時回傳判定結果及信心分數的偵測服務,而非單純的是/否名單。 信心分數為何重要,可參閱VPN 偵測的運作原理。 VPN 偵測 API 對任何 IP 均會回傳這兩項資料。

第二步:按操作選擇封鎖或驗證

將信心分數對應至切合該操作風險的處理方式:

操作低分中等分數高分
閱讀內容放行放行放行
註冊放行電郵/電話驗證驗證 + 人工審核
登入放行二次認證二次認證
結帳 / 提款放行驗證封鎖或人工審核

如此一來,注重私隱的一般讀者不會受到任何影響,而在結帳時出現高信心分數的 VPN,則會獲得相應的嚴格 審查。

第三步:於伺服器端實作

檢查應在後端執行,而非在瀏覽器中,如此才無法被繞過,亦能令 API 金鑰維持保密。流程如下:

  1. 使用者觸發一項敏感操作。
  2. 你的伺服器以用戶端 IP 呼叫偵測 API。
  3. 讀取判定結果與分數,並按上表作出相應處理。

具體的實作方式,可參閱如何在 Node.js 中偵測 VPN。

無法修改後端?可在網站前端執行相同的檢查:使用Cloudflare Worker、WordPress 外掛,或Traefik、Caddy 及 nginx 整合。全部均以 Monitor 模式起步,讓你先看到哪些請求會被封鎖;封鎖功能須使用付費方案。

第四步:以評分機制取代硬性規則

若發現自己寫了大量 if 判斷式,便應加以整合。可將 VPN 訊號連同代理、Tor 及信譽資料一併納入 IP 詐騙評分,並以此單一數值作為判斷依據。此做法既較易調校,亦較難被規避。

避免誤判

  • 使用分數,而非二元標記。 只在高信心分數時才施以硬性封鎖。
  • 將已知的企業或雲端出口位址加入白名單,你的真實使用者往往正是合法地從這些位址存取。
  • 為使用者留一條出路。 如必須封鎖,應顯示清晰的提示訊息及驗證方式,而非讓使用者陷入死路。

總結

不要封鎖所有 VPN 使用者:應先以信心分數可靠地偵測 VPN 流量,再按操作的風險決定封鎖或驗證。檢查應 於伺服器端執行,並以驗證取代硬性封鎖,同時將相關邏輯整合至單一的詐騙評分,使其能持續保持易於調校。

常見問題

常見問題解答

一般而言不應該。許多使用者是基於合理的私隱考量而使用 VPN。一律封鎖只會帶來大量支援工單,並流失客戶。應針對高風險操作有選擇地封鎖,在其他情況下改用驗證。

相關文章

取得金鑰,一分鐘內完成第一次呼叫

新帳戶由首次請求起享 7 天 Starter。無需信用卡,註冊後金鑰即時顯示在畫面上。

    如何以聰明的方式封鎖網站上的 VPN 使用者