Headless Chrome 踩坑之旅無標題文章

4月13號铸豁,phantomJS 的主要維護者突然宣布不干了头镊,當時我正在為如何把前端代碼運行到后端發(fā)愁,正想著用用 phantomJS 的時候魄幕,出了這檔子事相艇。仔細看看他說的,大意是 google 也來插一腳了纯陨,更穩(wěn)定坛芽,更牛,那我就功成身退啦翼抠。好吧咙轩,感謝辛勞付出,我看看 google 到底整了啥幺蛾子阴颖。

chrome 在 59 的版本中做了一個 headless 模式臭墨,可以在這里查看原文。大致的功能就是能在服務器跑一個 chrome 瀏覽器膘盖,具有 chrome 的絕大部分功能胧弛。Amazing!O琅稀结缚!這下子都不用模擬瀏覽器環(huán)境了,直接就整了一個瀏覽器的環(huán)境软棺,值得折騰一下红竭。

然后,我就落入了一個深基坑。茵宪。最冰。。廢話少說稀火,直接告訴大家如何開玩暖哨。


1.準備 Chrome

首先,你需要一個支持 Headless 模式的 Chrome凰狞。
Linux 平臺請安裝最新的 dev 版本篇裁,macOS 平臺請安裝最新的 金絲雀 版本,Win 平臺赡若,我還沒試過达布,知道的朋友可以分享一下。

2.運行 headless chrome

安裝好之后逾冬,運行如下命令:
Linux:
google-chrome-unstable --headless --remote-debugging-port=9222 --disable-gpu https://shimo.im
macOS:
/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary --headless --remote-debugging-port=9222 https://shimo.im/
--headless 就是開啟 headless 模式黍聂。
--remote-debugging-port=9222 這是開啟 Chrome 的端口是 9222,這樣子 Chrome 就類似于微服務一樣啦身腻。
--disable-gpu 不使用 gpu分冈,既然是在后端運行的 Chrome 當然不需要 gpu 啦。
最后的網(wǎng)址隨意填寫霸株,我在這寫的是我們的產(chǎn)品—— 石墨文檔
隨意打開一個瀏覽器,輸入 http://localhost:9222 可以得到如下的效果

看到這個就證明集乔,你成功開啟了 headless chrome 的服務

3.調用 chrome

調用 Chrome 需要用到一個 node 模塊——chrome-remote-interface
官網(wǎng)的例子足夠本地測試使用去件,我們團隊在實際使用過程中發(fā)現(xiàn)了不少坑。

第一個坑是遠程連接扰路,CDP 中提供了 remote 的配置來允許你遠程連接 Chrome尤溜,筆者第一次使用時,就遇上了一個 bug汗唱,Headless Chrome 還沒有完美對接宫莱,我剛想著給作者提一個 bug。


作者立馬修了哩罪。授霸。。际插。碘耳。為他點贊,但是在實際使用過程中框弛,還是需要設置好 nginx 的反向代理

第二個坑則是協(xié)議 (protocol)辛辨,這個協(xié)議決定你能用什么接口去調用 chrome 的服務,具體的 API 在這里。如何獲得協(xié)議斗搞?參見源碼指攒,因為總所周知的原因,下載協(xié)議很慢僻焚,大家先下載下來允悦,然后在 protocol 的選項里寫上
protocol: JSON.parse(fs.readFileSync('protocol.json'))

就可以了。
ps: 作者說可以用
chrome-remote-interface protocol -r > protocol.json

這個命令生成協(xié)議溅呢,但是我生成的是一個錯誤的文件澡屡。。咐旧。驶鹉。

本地的連接調試非常簡單,如果你想遠程調用的話铣墨,需要這樣子設置

'use strict';

const CDP = require('chrome-remote-interface');

const fs = require('fs');

const protocol = JSON.parse(fs.readFileSync('protocol.json'));

const
 options = {

  host: "[https://chrome.com](https://chrome.com/)", // 域名或者 IP 都行

  port: 443, // 按照實際情況來

  remote: true, // 遠程連接需要設置為 true

  protocol, // client 可以使用的方法

  secure: true // https 的話需要這是這個

};

function *test() {

  const client = yield CDP(options);

  console.log('success!');

  client.close();

}

client 提供了非常多的接口室埋,比如操作頁面的 Page,有興趣的同學可以和我們石墨團隊深入淺出的交流一下。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末伊约,一起剝皮案震驚了整個濱河市姚淆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌屡律,老刑警劉巖腌逢,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異超埋,居然都是意外死亡搏讶,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門霍殴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來媒惕,“玉大人,你說我怎么就攤上這事来庭《饰担” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵月弛,是天一觀的道長肴盏。 經(jīng)常有香客問我,道長帽衙,這世上最難降的妖魔是什么叁鉴? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮佛寿,結果婚禮上幌墓,老公的妹妹穿的比我還像新娘但壮。我一直安慰自己,他們只是感情好常侣,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布蜡饵。 她就那樣靜靜地躺著,像睡著了一般胳施。 火紅的嫁衣襯著肌膚如雪溯祸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天舞肆,我揣著相機與錄音焦辅,去河邊找鬼。 笑死椿胯,一個胖子當著我的面吹牛筷登,可吹牛的內容都是我干的。 我是一名探鬼主播哩盲,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼前方,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了廉油?” 一聲冷哼從身側響起惠险,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎抒线,沒想到半個月后班巩,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡嘶炭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年抱慌,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片旱物。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖卫袒,靈堂內的尸體忽然破棺而出宵呛,到底是詐尸還是另有隱情,我是刑警寧澤夕凝,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布宝穗,位于F島的核電站,受9級特大地震影響码秉,放射性物質發(fā)生泄漏逮矛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一转砖、第九天 我趴在偏房一處隱蔽的房頂上張望须鼎。 院中可真熱鬧鲸伴,春花似錦、人聲如沸晋控。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赡译。三九已至仲吏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蝌焚,已是汗流浹背裹唆。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留只洒,地道東北人许帐。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像红碑,于是被迫代替她去往敵國和親舞吭。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內容

  • 命令行運行Headless Chrome Chrome 安裝(需要帶梯子) 下載地址 幾個版本的比較Chromiu...
    淼焱洞見閱讀 485評論 0 2
  • 簡介 chrome-remote-interface是chrome調試協(xié)議的第三方調試客戶端實現(xiàn)析珊,該項目開源羡鸥,提供...
    墻角兒的花閱讀 9,407評論 0 1
  • 每一天伴隨我輕輕的來,忠寻,就如我輕輕褪去外衣裹足前往惧浴,,留下生的氣息以及我不輕不重的想念奕剃,衷旅,同樣的點,不同的人纵朋,路雖...
    如風一般的女子閱讀 287評論 0 1
  • 兩個性格迥異甚至相反的人成為朋友柿顶,很有趣,也有點悲哀操软。Ta能為你打開各種美麗新世界的大門嘁锯,也能用詭異的邏輯和結論刺...
    magicjam閱讀 261評論 0 0
  • 很多人一起走藏澳,卻要去到不同的地方仁锯。 每天都要上班,對我這種消極分子來說翔悠,這真可怕业崖。然而野芒,有了死黨...
    _往往閱讀 211評論 0 0