德國鐵路公司(Deutsche Bahn)的 Linux 鎖定:當機器人偵測失誤時
對於 Linux 作業系統的使用者而言,透過德國鐵路(Deutsche Bahn,簡稱 DB)預訂火車票最近變成了一種令人沮喪的體驗。此舉凸顯了僵硬自動化安全的缺陷,德國鐵路公司的網站已開始阻止瀏覽器顯示為 Linux 的使用者存取列車搜尋與訂票工具。
此問題在技術社群中引發了廣泛討論,說明了過於簡化的機器人偵測機制如何不經意地排除合法的使用者群體。
「機器人」錯誤:錯誤代碼 751
來自 Reddit 等平台的使用者報告,以及 heise online 編輯團隊的調查顯示,Linux 使用者在嘗試搜尋列車時會遇到特定錯誤訊息。錯誤頁面顯示 Error Code 751,並附有以下文字警告:
「很抱歉,過程中發生錯誤。您的瀏覽器行為類似機器人。」
有趣的是,這種鎖定並非全站皆適用。雖然首頁 (bahn.de) 仍可存取,但錯誤通常在使用者發起列車搜尋請求的瞬間觸發。有些使用者表示錯誤立即出現,亦有使用者在多次嘗試後才遇到此錯誤。
根本原因:User-Agent 過濾
技術分析顯示,阻擋並非基於 IP 位址或複雜的行為分析,而是簡單檢查瀏覽器的 User-Agent(UA)字串。User-Agent 是瀏覽器傳送給伺服器的資訊,用以識別作業系統與瀏覽器版本。
heise online 所做的測試證實,阻擋與 UA 字串中出現「Linux」一詞直接相關。不同瀏覽器的測試結果皆一致:
- Firefox on Windows 11:若手動將 User-Agent 改為包含「Linux」,網站即會觸發機器人錯誤。
- Chrome on Linux:即使是主流瀏覽器,若 UA 字串顯示作業系統為 Linux,Chrome 使用者亦會被阻擋。
- Safari on macOS:在 macOS 上偽裝 Linux 的 User-Agent 也會觸發阻擋。
基本上,只要伺服器在識別字串中看到「Linux」,就會假設該請求來自機器人,無論實際使用的瀏覽器或行為如何。
受影響使用者的解決方法
對於目前無法訂票的使用者,解決方法是「偽裝」User-Agent,使瀏覽器看起來像是在 Windows 上執行。
在 Firefox 中,可透過以下步驟完成:
- 在位址列輸入
about:config,並接受風險提示。 - 搜尋
general.useragent.override。 - 建立一個新的字串項目,使用 Windows 為基礎的 User-Agent 識別字串。
將識別字串從「Linux」改為「Windows」後,即可立即恢復對訂票系統的存取。
分析:「Vibe Coding」安全的危險
雖然德國鐵路(Deutsche Bahn)尚未對此行為提供官方說明,社群仍在推測這種粗糙的安全手段可能是如何實施的。一位 Hacker News 的評論者認為,這可能是「vibe coding」的結果——使用大型語言模型(LLM)在缺乏深入架構審視的情況下產生安全修補。
「有人使用 vibe coding 嘗試提升安全性,而他們的 LLM 建議將 User Agent 字串限制在前十名的某些代理上。結果——沒有 Linux。」
無論是 LLM 建議的結果,或是遺留的安全規則,結果都是相同的:未能認識到相當大比例的技術族群使用 Linux。將整個作業系統視為「機器人行為」的代理,DB 創造了一項實際保護力有限的安全措施(因為真實的機器人可以輕易偽裝 User-Agent),同時對合法客戶的使用體驗造成傷害。
此事件提醒我們,安全應該以行為與意圖為基礎,而非僅依賴客戶端提供的表層識別資訊。