蠟筆小新愛媽媽
什麼是無頭瀏覽器
平時我們上網查閱信息、觀看視頻等活動,一般都是通過瀏覽器完成的,IE、chrome、火狐等都是我們經常使用的瀏覽器,它們都擁有非常好用的可視化操作界面,配合鼠標就可以進行網上活動。
而無頭瀏覽器也叫做無界面瀏覽器,它可以運行在服務器端,也具有普通瀏覽器的能力,只是它沒有界面,
常見的框架有Puppeteer、Phantomjs等
無頭瀏覽器的特點
1、使用方式
我們以Phantomjs為例,既可以以cli方式使用,也可以在代碼中require進去,它甚至可以提供一個類似於node那樣的REPL環境。
2、加載網絡資源
既然是瀏覽器,加載網絡資源顯然是其基本的能力,resourceReceived和resourceRequested這兩個回調函數可以監控加載的資源,利用它們就可以做一些網絡監控。既然能獲取網頁的內容,那麼就可以用來做爬蟲!
3、截圖
既然是無界面的,那如果我們想看加載的頁面是什麼樣子的,怎麼辦?它提供了截圖功能,使用render方法就可以生成頁面快照,還提供了設置網頁大小等功能。
4、插入外部資源
它可以向頁面中插入外部資源,比如插入一個js,這一點上比較像chrome插件。
5、生成自定義網頁
它既能獲取人家的網頁,同時也能生成自己的網頁,設置content屬性就行。
6、提供document和window對象
在服務器中是不存在document和window對象的,但是Phantomjs提供了這兩個變量。
7、操作頁面
既然Phantomjs提供了document和window這兩大對象,那麼我們就可以像在普通瀏覽器裡面一樣使用它們的方法,比如操作dom元素、發送dom事件等。
8、測試
Phantomjs本身並不是測試框架,但是它可以配合jasmine等測試框架進行自動化測試。
喜歡我的回答就關注我吧,有問題可以發表評論,我們一起學習,共同成長!
做前端的蝸牛
無頭就是headless 的中文,所謂無頭瀏覽器就是沒有用戶界面的瀏覽器。
它可以運行在服務器端,通過命令行的方式調用,比如需要截取任意網站的截圖,網址由用戶輸入,那就需要在服務器端裝一個headless瀏覽器,可以命令調用來截圖。
除了截圖,還能操作DOM,做一些爬蟲的事情,在服務器端完成自動化操作。
常用的有三個:Selenium,PhantomJS,Chrome-headless 。
使用舉例:
/opt/google/chrome/chrome --headless --disable-gpu --screenshot http://baidu.com這樣就實現了截取百度這個網站的頁面。
更復雜的操作就要看手冊了