作者:Ikeh Akinyemi✏️
用戶代理檢測在幫助開發人員針對各種裝置、瀏覽器和作業系統優化其網站和應用程式方面發揮著重要作用。透過準確識別使用者的環境,開發人員可以客製化解決方案以提供最佳的使用者體驗。
在本文中,我們將了解使用者代理程式偵測並探索已在開發人員中廣泛採用的 JavaScript 函式庫:ua-parser-js。 ua-parser-js 最近因其授權模式的變化而成為頭條新聞,我們將介紹其從寬鬆的 MIT 授權到雙 AGPLv3 + 商業授權模式的轉變,以及這如何影響個人和 SaaS 專案。
用戶代理檢測是識別用戶用於訪問您的網站或應用程式的特定軟體和硬體組件的過程。偵測涉及有關使用者的瀏覽器名稱和版本、作業系統、裝置類型等資訊。
透過利用使用者代理程式偵測,開發人員可以就如何呈現和優化使用者內容做出明智的決策,確保可訪問性、自訂體驗、跨瀏覽器和硬體相容性,並可能在各種不同的環境中增強效能使用的平台。
ua-parser-js 是一個輕量級 JavaScript 函式庫,可簡化使用者代理偵測。該庫由 Faisal Salman 開發和維護,由於其易用性、廣泛的瀏覽器支援和可靠的結果,在開發人員社區中得到了廣泛採用。
使用ua-parser-js,您可以輕鬆解析使用者代理字串並取得有關使用者的瀏覽器、作業系統、裝置等的精確資訊。該庫提供了一個簡單直觀的 API,可以輕鬆整合到您的 Web 專案中。
在下面的章節中,我們將了解 ua-parser-js 庫,包括它的重要功能、安裝方法和使用範例。我們還將討論其最近的許可變更,這些變更在開發者社群內引發了爭論。
ua-parser-js 庫可以使用多種方法安裝,具體取決於您的開發環境和偏好。 ua-parser-js 壓縮後的大小約為 18KB,gzip 後的大小約為 7.9KB,可輕鬆整合到客戶端(瀏覽器)和伺服器端(Node.js)環境中。
要在 HTML 檔案中使用 ua-parser-js,您只需將程式庫腳本包含在 HTML 檔案中即可:
<!DOCTYPE html> <html> <head> <script src="ua-parser.min.js"></script> </head> <body> var parser = new UAParser(); <!-- Your content goes here --> </body> </html>
下載縮小的 JavaScript 文件,並將其包含在與 HTML 文件相同的目錄層級中。如果您在 Node.js 環境中使用 ua-parser-js,則可以使用 npm 安裝它:
npm install ua-parser-js
然後,在 Node.js 腳本中,您可以請求該函式庫:
const UAParser = require('ua-parser-js');
對於 TypeScript 項目,您可以使用 npm 安裝庫及其類型定義:
npm install --save ua-parser-js @types/ua-parser-js
然後,在您的 .ts 檔案中,您可以匯入庫:
import { UAParser } from "ua-parser-js"; const parser = new UAParser()
ua-parser-js 函式庫提供了一個簡單的 API,用於解析使用者代理字串並存取解析的資料。
要解析使用者代理字串,您可以建立 UAParser 物件的實例並使用使用者代理字串呼叫 setUA 方法:
const parser = new UAParser(); parser.setUA('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36');
解析使用者代理字串後,您可以使用 UAParser 物件提供的可用方法存取解析的資料:
const result = parser.getResult(); console.log(result.browser); // {name: "Chrome", version: "93.0.4577.82", major: "93"} console.log(result.os); // {name: "Windows", version: "10"} console.log(result.device); // {vendor: undefined, model: undefined, type: undefined}
getResult 方法傳回一個包含解析資料的對象,包括有關瀏覽器、作業系統、裝置、CPU 和引擎的資訊。
ua-parser-js 還允許您透過提供自訂正規表示式和解析規則來擴充其解析功能。建立 UAParser 物件的新實例時,您可以傳遞擴充數組:
const myExtensions = [ [/(myapp)\/([\w\.]+)/i, [UAParser.BROWSER.NAME, UAParser.BROWSER.VERSION]], ]; const parser = new UAParser(navigator.userAgent, myExtensions);
透過這些功能和範例,您應該可以充分了解如何在 Web 開發專案中安裝、設定和使用 ua-parser-js。在下一節中,我們將探討最近圍繞 ua-parser-js 的授權變更及其對開發人員和開源社群的影響。
最近,ua-parser-js 進行了重大的許可證變更,引發了開發者社群的討論。在更改之前,ua-parser-js 最初是在 MIT 許可證下分發的,該許可證以其寬鬆的性質而聞名。該許可證允許開發人員以最小的限制使用、修改和分發該庫,使其成為開源和商業專案的流行選擇。
ua-parser-js 越來越受歡迎,有超過 2,240 個依賴項目,下載量超過 1230 萬次。這種增長導致了維護需求的增加以及對更永續發展模式的需求。新的授權模式旨在產生收入以支援持續的維護和開發工作。
隨著最近版本 2.0 的發布,ua-parser-js 採用了雙重授權模式:免費開源版本的 AGPLv3(GNU Affero 通用公共授權版本 3)和商業用途的專有 PRO 授權。這項變更導致開發人員在專案中使用和分發 ua-parser-js 的方式發生了重大轉變。
雙重授權模式試圖在維護開源程式庫和從可能需要額外功能或支援的商業用戶中獲利之間取得中間立場。目前,商業項目面臨一個決定——要么遵守 AGPLv3 許可條款(可能要求他們發布自己的源代碼),要么購買 PRO 許可。 PRO 許可證定價從個人使用 12 美元起,企業使用高達 500 美元。這種模型通常被稱為“開放核心”,已被開源生態系統中的其他專案採用,例如 Sidekiq、Mastodon、Nextcloud 等。
有人談論麻省理工學院許可版本的潛在分支或替代庫的開發。例如,Node.js TSC 成員 Matteo Collina 已經建立了一個名為 my-ua-parser 的分支來維護 MIT 授權的版本。
在進行這一轉變時,了解這些變化並考慮它們可能如何影響您的專案非常重要。在下一節中,我們將探討一些在您自己的工作中處理此許可證變更的策略。
在決定使用哪個許可證時,您需要考慮專案的性質和要求,重新評估其依賴性,並做出明智的決策,以避免許可證變更帶來的挑戰。
如果您的專案已經使用相容的開源許可證,那麼 AGPLv3 版本可能適合。這意味著如果您將整個應用程式的原始程式碼分發或作為網路服務運行,您將可以使用它。但是,請記住,使用 AGPL 版本可能會限制其他不遵守 AGPL 條款的人對您的專案的採用。
但如果您正在開發專有軟體或無法遵守 AGPL 條款,您應該考慮購買 PRO 授權;評估 PRO 授權的成本是否與您需要的 ua-parser-js 的優點和功能相符。或者,您可以繼續使用 ua-parser-js 的 v1.x 分支或分支,該分支仍受 MIT 許可。但您應該注意,該版本將來可能會收到有限的更新。
多年來,ua-parser-js 一直被視為 Web 開發人員的寶貴工具。它能夠準確解析用戶代理字串並提供有關瀏覽器、作業系統和設備的詳細信息,這使其成為我們許多人必不可少的庫。
從MIT授權切換到雙AGPLv3+PRO模式無疑在開發者社群引起了轟動。我們目睹了對此的各種反應;一些社區成員表示理解,而另一些則表示擔憂和反對。對某些人來說,這意味著調整他們的專案以符合 AGPLv3 許可證,而對於其他人來說,這可能涉及購買 PRO 許可證或尋找替代解決方案。
作為開源軟體的用戶,我們需要為此類變化做好準備,並制定適當的策略以在必要時進行適應。
以上是用戶代理檢測和 ua-parser-js 許可證更改的詳細內容。更多資訊請關注PHP中文網其他相關文章!