ChatGPT VPN 識別繞過方法

如何處理 ChatGPT 錯誤
“Unable to load site”
“Please try again later, if you are using a VPN, try turning it off.”
“Check the status page for information on outages.”

前言

chatgpt 目前仍然是使用體驗最好的聊天機器人,但是在国内使用時,由於網路環境的限制,我們需要使用梯子來訪問 chatgpt。但是 chatgpt 對梯子的檢測較為嚴格,如果檢測到使用了梯子,會直接拒絕訪問。這裡介紹一種繞過 chatgpt 對梯子檢測的方法。

有其他人提到更換 IP 來繞過封鎖, 但我們一般使用 IP 的地域已經是可以提供服務的地區, 所以這種方法並不一定是實際的拒絕服務原因.

另外有人提到梯子使用人數較多容易被識別, 勸人購買較貴的使用人數少的梯子, 這也很難成為合理理由, 在 ipv4 短缺的今天, 即便是海外, 也存在大量的社區使用 nat 分配端口, 共用一個 ipv4 的情況. chatgpt 一封就要封一大片, 作為一個被廣泛使用的服務, 這樣的檢測設計肯定是不合理的.

對大眾服務來說, 檢測源 IP 一致性則更為合理. 付費梯子的特徵通常是限制流量或限制網速, 因此多數使用梯子的用戶選擇按規則繞過. 繞過自己的運營商可直接訪問的地址, 以減少流量消耗, 或者獲得更快的訪問速度, 僅在訪問被防火牆攔截的地址時導入流量到代理. 這種訪問目標服務的不同方式, 可能會造成源地址不一致. 例如訪問 A 服務需要同時和域名 X 和域名 Y 進行通信, 而防火牆僅攔截了域名 X, 那麼在 A 服務看到的同一請求的不同階段的訪問來源 IP 不一致.

解決代理策略導致的源 IP 不一致問題, 即可繞過 chatgpt 的梯子識別.

梯子規則中通常會含有域名規則, IP規則等.

我們還需要知道域名解析的 IP 結果是可以根據地域而變化的, 比如我在 A 地區時解析到附近的服务 IP, 在 B 地區時則解析到不同的 IP. 因此, DNS 的選擇也非常重要.

DNS 選擇

現在 DNS 有很多的協議, UDP:53 已經是非常落後而且極不安全的協議, 我國甚至已將 DNS 服務列入企業經營中的一級條目. 這主要來源於過去幾十年我國的各級運行商使用DNS劫持HTTP塞入了大量的跳轉廣告, 蒙騙不少網路小白, 招致大量投訴. 儘管現在Chrome/Edge已經標配自動跳轉HTTPS, 標記HTTP網站為不安全, 但我國還存在許多的地方小區級的網路服務提供商, 以及國內各種老版本的Chromium封裝魔改, 導致 DNS 劫持和 HTTP 劫持仍然存在.

因此, 我們需要選擇一個安全的 DNS 服務協議, 以避免 DNS 劫持. 根據個人經驗, 阿里雲的223.5.5.5體驗足夠好. 當然, 當我提223.5.5.5時, 肯定不是UDP:53的 alidns, 而是DoHDoT協議. 在配置時, 你需要使用tls://223.5.5.5, 或者https://dns.alidns.com/dns-query寫入配置.

alidns 服務在絕大多數時候都不會污染, 僅在少數敏感時期會出現污染, 你也可以使用我自建的長期 dns 服務tls://dns.jqknono.com, 上游來自8.8.8.81.1.1.1, 通過緩存來加速訪問.

域名規則

首先打開的檢測網頁會包含檢測邏輯, 通過向不同域名發送請求來驗證源 IP, 因此這裡需要保持域名代理的一致性.

chatgpt 網頁訪問的域名除了自己的域名openai外, 還有auth0, cloudflare等第三方域名.

可以手動寫入以下規則:

# openai
- DOMAIN-SUFFIX,chatgpt.com,PROXY
- DOMAIN-SUFFIX,openai.com,PROXY
- DOMAIN-SUFFIX,openai.org,PROXY
- DOMAIN-SUFFIX,auth0.com,PROXY
- DOMAIN-SUFFIX,cloudflare.com,PROXY

如何試驗域名規則

上邊列舉的域名可能隨著 ChatGPT 業務發展而有所變化, 下面說明域名的獲取方法.

  1. 瀏覽器打開 InPrivate 頁面, 隱私頁面可以避免緩存/cookies 等的影響
  2. F12打開控制台, 選擇Network/網路選項卡
  3. 訪問chat.openai.com, 或者chatgpt.com
  4. 下圖展示了這篇文章寫成時 ChatGPT 使用的域名

ChatGPT使用的域名

僅添加這幾個域名可能仍然不夠, 這裡分析訪問失敗的連接具體細節. 看到challenge的請求的Content-Security-Policy中含有眾多域名, 我們將其一一添加到代理策略.

Content-Security-Policy中的域名

# openai
- DOMAIN-SUFFIX,chatgpt.com,PROXY
- DOMAIN-SUFFIX,openai.com,PROXY
- DOMAIN-SUFFIX,openai.org,PROXY
- DOMAIN-SUFFIX,auth0.com,PROXY
- DOMAIN-SUFFIX,cloudflare.com,PROXY
# additional
- DOMAIN-SUFFIX,oaistatic.com,PROXY
- DOMAIN-SUFFIX,oaiusercontent.com,PROXY
- DOMAIN-SUFFIX,intercomcdn.com,PROXY
- DOMAIN-SUFFIX,intercom.io,PROXY
- DOMAIN-SUFFIX,mixpanel.com,PROXY
- DOMAIN-SUFFIX,statsigapi.net,PROXY
- DOMAIN-SUFFIX,featuregates.org,PROXY
- DOMAIN-SUFFIX,stripe.com,PROXY
- DOMAIN-SUFFIX,browser-intake-datadoghq.com,PROXY
- DOMAIN-SUFFIX,sentry.io,PROXY
- DOMAIN-SUFFIX,live.net,PROXY
- DOMAIN-SUFFIX,live.com,PROXY
- DOMAIN-SUFFIX,windows.net,PROXY
- DOMAIN-SUFFIX,onedrive.com,PROXY
- DOMAIN-SUFFIX,microsoft.com,PROXY
- DOMAIN-SUFFIX,azure.com,PROXY
- DOMAIN-SUFFIX,sharepoint.com,PROXY
- DOMAIN-SUFFIX,gstatic.com,PROXY
- DOMAIN-SUFFIX,google.com,PROXY
- DOMAIN-SUFFIX,googleapis.com,PROXY
- DOMAIN-SUFFIX,googleusercontent.com,PROXY

IP 規則

如果上述步驟嘗試後仍然不能訪問chatgpt.com, 則可能還存在基於IP的檢測行為, 以下是我在連接跟蹤中嘗試出的一些 IP, 你可以自行嘗試使用, 需要說明這些 IP 並不適用於每個地區, 你或許需要自行嘗試.

# openai
- IP-CIDR6,2606:4700:4400::6812:231c/96,PROXY
- IP-CIDR,17.253.84.253/24,PROXY
- IP-CIDR,172.64.152.228/24,PROXY
- IP-CIDR,104.18.35.28/16,PROXY

如何試驗 IP 規則

你需要了解自己的梯子客戶端工具, 在連接跟蹤顯示頁面, 觀察新增的連接, 通過這些連接的 IP 地址來嘗試添加規則.

以下是簡單的步驟描述:

  1. 瀏覽器打開 InPrivate 頁面, 隱私頁面可以避免緩存/cookies 等的影響
  2. 訪問chat.openai.com, 或者chatgpt.com
  3. 梯子客戶端中觀察新增連接, 將這些連接加入到代理規則

協議規則

QUIC是基於UDP的加密協議, chatgpt 大量使用了 QUIC 流量, 因此梯子的服務端/客戶端需要支持 UDP 代理, 有許多梯子是不支持 UDP 的, 這也是導致 chatgpt 無法訪問的原因之一. 客戶端和服務端都支持 UDP, 還需要用戶明確配置, 一些客戶端會配置默認不代理 UDP 流量. 如果對 UDP 設置不熟悉, 可以設置屏蔽代理客戶端的 QUIC 流量, 或者在瀏覽器設置屏蔽 QUIC. 瀏覽器發現 QUIC 不通會自動切換到基於 TCP 的 HTTP/2. QUIC 是基於 UDP 的加密協議, 多數時候可以獲得更流暢的體驗, 有興趣的可以自行嘗試.

最簡單配置–白名單模式

配置僅中國 IP 直連, 未匹配到的流量走代理, 這樣可以保證 chatgpt 的訪問, 也可以保證其他國外服務的訪問.

這種方式的缺點就是流量消耗大, 網路流暢度體驗依賴梯子的網路質量, 如果您對自己的梯子有信心, 可以嘗試這種方式.

當然, 您還得記得開啟UDP代理.