DrissionPage 實測:把瀏覽器控制與收包裝進同一套語法

DrissionPage 是 12,500 星的 Python 網頁自動化庫,拿掉 chromedriver、同一套語法同時做瀏覽器控制與資料收包。本機實測兩種模式都跑得通:收包 0.007 秒、headless 瀏覽器 0.61 秒啟動;但採用前要先看清兩件事,授權條款畫了商用牆(商用需作者授權、文件禁商用),開發主場也已搬到 gitcode,GitHub 的版本發布停在 2025 年 3 月。

用 AI 摘要這篇文章:

DrissionPage 實測:把瀏覽器控制與收包裝進同一套語法

在這台 MacBook 上把 DrissionPage 裝起來跑過一輪,最先記下的三個結果是:pip 安裝一次成功、收包模式 0.007 秒抓完測試頁的三個元素、瀏覽器模式 0.61 秒把 headless Chromium 帶起來,而且全程沒有下載任何 chromedriver。這個在 GitHub 上掛著超過 12,500 顆星(2026 年 10 月初基準)的中國大陸開發者專案,賣點是把控制瀏覽器和收發資料包兩件事塞進同一套 Python 語法。實測本身順利,但有兩件事會直接改變採用決定:它的授權條款畫了一道商用牆,而它的開發主場已經搬離 GitHub。這篇先把實測攤開,再把這兩件事講清楚。

實測當天跑通了什麼:兩種模式、三個結果、零個驅動

測試環境是 macOS arm64、Python 3.11 的乾淨虛擬環境,安裝就是一行 pip install DrissionPage,裝進來的穩定版是 4.1.1.4。收包模式(官方叫 SessionPage)對著本機測試伺服器發一個請求,抓回頁面後用 CSS 選擇器拿元素,三個目標全中,從發請求到解析完成計時 0.007 秒;這個速度符合它的設計定位,收包模式走的是 requests 加 lxml 的路線,不開瀏覽器,適合不需要執行 JavaScript 的頁面。

瀏覽器模式(ChromiumPage)是重頭戲。把瀏覽器路徑指到本機的 Chrome for Testing 153、設定 headless 與獨立使用者資料夾後建立頁面物件,0.61 秒完成啟動。從程序清單能看到它直接以遠端除錯埠連上瀏覽器,啟動參數裡的 headless=new 是函式庫自己帶入的,整個過程確實沒有 chromedriver 這個東西存在。導航到一個 data 協定的測試頁後,以 id 定位元素成功,對整個頁面(含視窗外範圍)截圖,輸出檔案 21,594 bytes。作者拿來對比 Selenium 的那幾個賣點裡,不用下載驅動、可以整頁截圖這兩項,在這次實測裡是直接看得到的。

誠實邊界也要寫清楚:這台機器上以瀏覽器模式導航本機 loopback 位址一直沒有成功,換啟動參數與使用者資料夾重試三次都一樣,同環境的 data 頁面與收包模式都正常,因此判定為本機環境因素,不當成產品缺陷;本文的瀏覽器模式結論以 data 頁面實測為準,沒有對真實外部網站做爬取驗證,也沒有跑 Selenium 對照組,任何速度對比本文都不下結論。

一個函式庫兩種模式,名字就是它的說明書

DrissionPage 這個名字是作者自創的組合字:Driver 的前半加 Session 的後半。對照它的兩種頁面物件,意思很直白,要操作瀏覽器就開 ChromiumPage,要快就開 SessionPage,兩邊共用同一套查找元素的語法。官網的教學還示範同一個頁面物件在兩種模式之間切換,把需要執行 JavaScript 的步驟交給瀏覽器、把單純的請求交給收包,這是它跟常見自動化方案最根本的差異。

這個庫的來源故事值得知道。作者在官網自述,本職並非軟體開發,當年因為管理一套體驗很差的業務系統、受不了每年人工整理資料,才自學自動化。最早基於 Selenium 封裝,用得越深越不滿:隱式等待適用範圍窄、查找元素語句冗長、一個 Driver 同時間只能操作一個標籤頁、切換之後先前拿到的元素會失效,還要為不同版本的瀏覽器下載對應的 chromedriver。於是在 3.x 版完全放棄 Selenium 依賴,底層重寫成直連瀏覽器的自研核心,4.0 與 4.1 兩代再大幅重構。README 上列的跨 iframe 直接查找元素、多標籤頁並行操作、直接讀瀏覽器快取存圖片,都是這段遷移路的產物;這些是作者的宣稱,其中「不需驅動」這一項已經親眼確認。

DrissionPage 官方文件首頁,頂部橫幅標示「本文檔適用於:DrissionPage 4.1.1.4」,並提醒關閉廣告屏蔽以支持作者(官方網站截圖)Pin
官方文件站的版本橫幅:文件與穩定版 4.1.1.4 對齊,頂部同時提醒訪客關閉廣告屏蔽(官方網站截圖)

日常使用體驗的設計細節,README 也有一串說明:查找元素內建等待與自動重試,網路不穩時程式不用自己寫輪詢;常用設定存在 ini 設定檔裡自動套用,換機器不用重頭配置;操作瀏覽器時附帶一套下載工具;解析引擎用 lxml。這幾項都是作者宣稱的設計,方向與實測中「預設參數就能動、不用先調教」的體感一致。

最該先看的一段:這份授權條款畫了商用牆

GitHub 把這個專案的授權標成無法歸類,原因要打開 LICENSE 檔案才明白。條款寫明:允許任何人以個人身份使用或散布本專案原始碼,但僅限學習與合法非營利目的;個人或組織如未獲版權持有人授權,不得將本專案以原始碼或二進位形式用於商業行為。後面還有一條很少見的設計:使用時違反任一條款,授權自動失效。條款列舉的義務包括不得用於違反當地法律與道德的專案、不得用於損害他人利益的專案、不得用於攻擊與騷擾,並且要遵守 Robots 協議、不得採集法律或系統 Robots 協議不允許的資料。換句話說,這不是 BSD 或 MIT 那種寬鬆授權,用「開源」兩個字帶過會漏掉重點:個人學習與非營利使用是條款涵蓋的範圍,公司專案把 pip 套件裝進商業產品,按條款需要先取得授權。

商業邊界不只在程式碼授權。官網的支援頁寫得直接:可個人免費使用,商用請聯絡作者取得授權;授權價格與條件沒有公開價目,只有電子郵件與 QQ 兩個聯絡管道,想在公司導入前做成本估算,目前拿得到的就是「去信洽談」四個字。官網每頁頁尾還掛著兩行聲明:教學文件以 CC BY-NC 4.0 授權、禁止商用,DrissionPage 是作者已註冊的商標。也就是說,把官方文件的內容整理進公司內部訓練教材這種事,也踩在非商業條款的線上。條款最後一段還有完整的免責聲明:使用這個庫發生的一切行為由使用人自行負責,產生的糾紛與後果都與版權持有人無關,程式缺陷造成的損失也不賠。台灣的開發團隊若要走合規路線,程式碼、文件、商標這三層都要看過一輪。

GitHub 上 DrissionPage 倉庫的 LICENSE 檔案頁面,條款寫明允許個人學習與非營利使用、未獲授權不得用於商業行為(GitHub 官方頁面截圖)Pin
LICENSE 條款原文:個人身份限學習與合法非營利目的,商用行為需版權持有人授權(GitHub 官方頁面截圖)

GitHub 是櫥窗,工廠已經搬到 gitcode

第二件會改變決定的事是版本與開發動線。GitHub 倉庫的 Releases 頁停在 v4.1.0.17,發布時間 2025 年 3 月;master 分支 2026 年 8 月之後的提交要嗎是 README 修訂、要嗎是同步提交,其中一則提交訊息直接寫著「5.0.0b1修改詳見gitcode」。對照 gitcode 上的同名倉庫,dev 分支的提交一路到 2026 年 9 月 28 日還在動,內容是元素清單返回型別調整與監聽器微調這類實作細節。開發沒有停,只是主場換了地方。

GitHub 上 DrissionPage master 分支的提交歷史,最近的提交多為 README 修訂,其中一則訊息寫著「修改詳見gitcode」(GitHub 官方頁面截圖)Pin
master 分支的近期提交:只剩 README 修訂與一則「修改詳見gitcode」,真正的功能開發在 gitcode 的 dev 分支(GitHub 官方頁面截圖)

安裝來源反而是最清楚的:PyPI。PyPI 上的穩定版 4.1.1.4 於 2026 年 5 月底上傳,比 GitHub 最新 release 新了一代以上;beta 線已經走到 5.0.0b1(2026 年 8 月上傳),再往回看,穩定版 4.1.1.0 與 4.1.1.1 在 2025 年 7 月底同日連發後,下一次穩定版 4.1.1.3 等到 2026 年 5 月才出現,中間將近十個月的空窗。對使用者的實際影響:要追最新原始碼與修復進度要看 gitcode,要回報問題也是那邊反應快;pip 裝版本以 PyPI 為準;拿 GitHub 頁面的活躍度判斷專案死活,會得到錯誤結論。對新瀏覽器版本的支援倒是有持續跟進,changelog 記載 4.1.1.2 起外掛改用臨時方式載入以支援 135 版之後的瀏覽器,本機用 Chrome for Testing 153 實測也能連上。

一人專案的經濟模型:知識星球、小店與五面代理商廣告

把授權條款與這個專案的變現方式放在一起看,商用牆就不是意外而是商業設計的一部分。README 首頁掛著五家代理商的廣告版位,IPWO、NextProxy、MangoProxy 與 RapidProxy(各帶折扣碼)、SX.org,內容全是住宅代理與採集場景的推銷;官網支援頁列出的收入管道還有 B 站小店(賣離線文件、瀏覽器擴充功能與實戰程式碼)、網站廣告位與技術接單;教學區另有一個知識星球社群頁,寫明向作者提問、獲得官方技術支援與查看開發筆記都要加入。作者自述這是業餘作品、寫庫來自興趣,這點從發布節奏也看得出來。

有個細節值得企業合規團隊注意。作者在官網自述提到,自研核心有個他沒預料到的副作用,DrissionPage 竟然能通過 Cloudflare、Google 等人機檢測工具;官方教學區也有與指紋瀏覽器對接的專文,適用場景寫著批量操作與資料採集。這些是作者自己的陳述與官方文件的內容,但它說明了這個庫的主要客群確實包含大規模採集場景,條款裡的 Robots 協議義務與這個客群是同一體兩面。個人學習用它爬自己有權限拿的資料沒有問題,公司要在合約與法規下使用,這一層背景應該知道。順帶一提,這個專案在 gitee 拿過 GVP(Gitee 開源專案的官方推薦標章),現在 README 把 gitee、GitHub、gitcode 三個鏡像並列,哪邊最新要自己分辨,結論前面已經講過:看 gitcode 與 PyPI。

採用判斷:個人放心用,公司先過兩關

收攏成決策。個人開發者、學生、非營利專案:可以用,而且值得用。安裝成本低、語法確實簡潔、文件完整(文件站明確標示適用版本 4.1.1.4),收包與瀏覽器兩種模式按場景切換,比起先學一套瀏覽器自動化再學一套請求庫,入門負擔小很多。已經在用其他方案的團隊:遷移前先想清楚兩個成本,商用授權要另談、以及出問題時的支援路徑是知識星球與作者個人,沒有企業級服務。要視覺化拖流程圖而不是寫程式碼的人,先前介紹過的 Kspider 開源視覺化爬蟲平台是另一種取捨;要聽懂頁面背後流量的人,Wizard Proxy 開源抓包工具把 HTTP 流量按應用分組的思路可以對照著看;而把一句話直接變成可重複執行爬蟲的 BrowserAct 網頁抓取平台,則是完全不想碰程式碼時的替代路線。

Python 版本 3.6 以上、Windows、Linux 與 macOS、Chromium 系瀏覽器(Chrome、Edge)或 Electron 應用都能跑,這些是官方文件寫明的支援範圍,本機 macOS 實測與文件相符。下一步的版本計畫官方也公開列著:跨標籤頁監聽資料包、獨立 JavaScript 環境、模擬手機觸控操作、隨時修改瀏覽器代理、遠端控制方案與 WebSocket 抓包都在清單上,5.0 的 beta 已經在 PyPI 上可以裝,想嘗鮮的人 pip 指定版本就能用,想求穩的人留在 4.1.1.4。

常見問題

公司專案可以直接用嗎?按 LICENSE 條款不行,商業行為需要先取得作者授權,條款同時寫明違反任一條款授權自動失效;授權價格未公開,要走郵件或 QQ 洽談。

它完全免費嗎?個人學習與合法非營利使用免費;商用要授權;官方技術支援的主要管道是作者經營的知識星球社群。

跟 Selenium 比到底差在哪?本文沒有跑對照實測,不下速度結論。確定的事實是它不需要 chromedriver(本機實測確認)、一個庫同時涵蓋瀏覽器控制與收包兩種模式;語法簡潔與執行速度是作者的宣稱。

要怎麼安裝、有什麼需求?pip install DrissionPage 一行安裝;Python 3.6 以上,Windows、Linux、macOS 都可以,瀏覽器限 Chromium 核心(Chrome、Edge 皆可),Electron 應用也在支援範圍。

一定要先裝 Chrome 嗎?只要是 Chromium 核心的瀏覽器都可以,安裝後第一次使用可指定瀏覽器執行檔路徑;沒有瀏覽器也不影響收包模式,SessionPage 不開瀏覽器就能工作。

最新版本要去哪裡看?PyPI 看版本與安裝,gitcode 看原始碼與開發動態;GitHub 的 release 頁 2025 年 3 月之後就沒有更新,別用它判斷專案狀態。

Sliven 褚崇名
Sliven 褚崇名

每日分享科技新知、免費資源以及 WordPress、虛擬主機相關主題,任何問題歡迎在科技月球下方留言,或是發送 Email 至 [email protected] 與我聯繫。

文章: 1828

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


Share to...