摘要 通過分析 windoze 下 Web 認證過程,提出在 linux 中用*腳本*實現通過 Web 認證方式上網的方法
問題由來
近來,隨著寬帶入戶,越來越多的 ISP 采用 Web 認證這種接入認證技術。Web 認證從用戶的角度看,是指用戶在瀏覽器中通過 Web 頁面輸入用戶名和密碼的認證過程。多數 ISP 號稱無需客戶端軟件,實際情況卻是:Windoze 下用戶可以順利通過 Web 認證上網,但 Linux 用戶卻沒有這么幸運。
* .cab files for download of binaries; * document.all; * element.innerHtml; ... 詳情請參閱 http://www.stopbadtherapy.com/standards.shtml IE 對 JavaScripts 的這些擴充,Mozilla 是不支持的,實際上 Mozilla 對標準 JavaScripts 的支持比 IE 好。所以,這些有 IE 特點的認證頁面 Mozilla 等瀏覽器自然無法通過了。
從用戶瀏覽器的角度看,Web 認證除了通過 Web 頁面輸入用戶名和密碼外,還需要通過 http 協議傳送客戶由 DHCP 獲得的 IP。有些 ISP 在用戶登錄到認證頁面時,由瀏覽器自動下載 .cab 文件,然后執行該文件獲得用戶的 IP,再傳給 Web Server。還有些 ISP 在用戶通過認證后,會在客戶端彈出一個計時窗,定時向 ISP 發送 keep-alive 包。當然,Web 認證是一個比較新的方式,還沒有形成標準,所以各提供商的方法也不盡相同,所謂各村有各村的高招,你那里的方法就很有可能與我的不同,但道理應該是一樣的。根據以上的分析,可以看出 Linux 用戶自然不可能用非 IE 兼容的瀏覽器直接通過登錄 Web 認證界面上網啦。
解決方法 好了,問題就在這些 Web 頁面使用 IE 方言的 JavaScripts 上,有幾種解決方法: 1。使用 Linux 下 IE 兼容的瀏覽器,有嗎?誰知道請告訴我。 2。使用 wine + IE 的方法,有成功的嗎?大家共同分享。 3。假如將這些鳥語改為普通話,我們就可以用 Mozilla 等非 IE 瀏覽器通過 Web 認證方式上網了。 4。要求 ISP 提供支持 W3C 標準的認證頁面。 5。分析 web 認證的原理,編寫認證程序。
最理想的方法四,可是我等不急,也不一定能等到,也許你比我幸運。我采取第三種方法,對于方法三,你一定會問:認證頁面在 Web Server 上,我無權修改,行不通。確實如此,這里有個變通的辦法:下載認證頁面,按照 JavaScripts 標準修改并保存在本地,每次上網前用本地經過修改的 Web 認證頁面而非 Web Server 的認證頁面就可以了。具體修改方法,參照 http://www.stopbadtherapy.com/standards.shtml 中的對照表,找出認證頁面使用 IE 方言的 JavaScritps,根據對照表提供的修改建議對你的認證頁面作出相應修改。對于使用.cab 的認證頁面,情況就比較復雜。需要分析這個.cab 在你的 JavaScripts 中的用法,判定它的功能,我這里是用它獲得本地 IP。所以,我在本地執行腳本獲得 IP 來模擬這個功能。似乎.cab 多與 IP 有關。