以前寫過一篇《在Web中獲取MAC地址》的文章,文章的地址是:https://www.cnblogs.com/tosser/p/9022187.html,我當時使用 OCX 來實作,可是 OCX 只支持 IE 瀏覽器,后來在往上找了一個 Chrome 的擴展,也解決了該問題,不過,總覺得無論使用 OCX 還是使用 Chrome 的擴展,都是瀏覽器相關的,并不通用,后來,使用 Socket 寫了一個簡單的 DEMO,用來模擬 HTTP 服務器,然后使用 Ajax 進行通信,問題解決了,也不再是瀏覽器相關了,
Web 頁面獲取 MAC 地址的設計思路
Web 頁面獲取 MAC 地址的設計思路是比較簡單的,只需要在本地模擬一個 HTTP 服務器,然后讓 Web 頁面通過 Ajax 來請求 HTTP 服務器,HTTP 服務器直接回傳本機的 MAC 地址就可以了,
具體流程如下圖:

流程圖非常的清楚,主要就是 HostServer 和 Ajax 的通信,這樣就可以得到 MAC 地址,然后通過 DOM 操作,即可把 MAC 地址寫入到 input 框中,這樣,就可以和用戶名、密碼一起提交給服務器進行驗證了,
除了獲取 MAC 地址還能干啥
之前做過一個物流提貨的專案,涉及到一些硬體設備,包括:小票列印機、刷卡器(身份證、銀聯卡)、進幣器、密碼數字鍵盤等,這些設備、電腦主機和顯示幕在一個類似 ATM 機那樣的機柜中(其實就是 ATM 機的設備,本身這套東西就是銀行提供的),
操作這些硬體的介面廠家提供了一個 OCX,而整個專案是 B/S 架構的,那么,在客戶端想要操作這些硬體,就要呼叫 OCX,而 OCX 只能在 IE 瀏覽器下使用(Chrome、FireFox 是不支持 OCX 的),眾所周知,IE 對 Web 并不友好,但是如何又能在不使用 IE 的情況下,又去呼叫 OCX 來完成操作硬體的功能呢?那么就是我們上面的方法了,
簡單的描述一下,就不貼圖了,
在終端上放一個 HostServer 用來接受頁面中 Ajax 的請求,并根據請求去呼叫 OCX 中相應的功能,把 OCX 的回傳資訊,再以 Json 的格式回傳給 Ajax 即可,
這樣,把 瀏覽器 和 OCX 檔案進行了分離,中間加入了一個 HostServer,頁面 和 OCX 的通信通過了
HostServer,那么以后如果介面是 DLL 檔案,也可以通過 HostServer 來進行完成,當然,還可以完成更多的功能,
總結
其實整個獲取 MAC 地址的功能,對于登錄頁面而言是一個服務端,它在本地是一個可執行的程式,那么它和普通的 EXE 檔案是沒有區別的,那么它能完成的功能其實遠遠不是獲取一個 MAC 地址的功能,對于上面的例子來說,把服務的提供者和使用者進行了分離,而且針對于本機的擴展也十分的方便了,當然,如果你愿意的話,可以讓 HostServer 充當客戶端直接和后端的服務器進行通信而不通過瀏覽器,這樣是不是還能做一些讓用戶沒有感知的事情?
我的微信公眾號:“碼農UP2U”

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/53212.html
標籤:其他
上一篇:網路安全的進步之路
下一篇:用二進制寫程式,提升裝 X 境界
