ubuntuサーバでChrome Headlessを使用する

2072 ワード

Install Google Chrome


数ヶ月前に発表されたChrome 59 betaはheadlessモードを発売した.原生のChrome、より良い汎用性、より速いスピード......Phantomjs、Ghostたちとさよならを言う時が来たようです.検索してみると、多くの人がデスクトップ版のlinuxやmacで新鮮なものを食べていますが、Chromeをweb 2に使用しています.0爬虫類なら、やはりサーバー版linuxで実行しなければなりません.chromeのインストール
テスト環境:Ubuntu 16.04デスクトップ版のubuntuであれば、公式サイトに最新版chromeをダウンロードしてインストールすればいい.サーバ版のchromeでは、コマンドラインでのみサーババージョンChromeをインストールできます.
sudo apt-get install libxss1 libappindicator1 libindicator7
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome*.deb  # Might show "errors", fixed by next line
sudo apt-get install -f

テスト


chromeの起動
 google-chrome --headless --remote-debugging-port=9222 https://chromium.org --disable-gpu

ここではheadlessモードを使用してリモートデバッグを行い、ubuntuにはgpuがないことが多いので、エラーを報告しないようにします.その後、別のコマンドラインを使用して、ローカルの9222ポートにアクセスします.
  curl http://localhost:9222

デバッグ情報が表示されるのは、インストールされているはずです.

chromedriverのダウンロード


chromedriverはchromeを操作するapiを提供し、seleniumがchromeを制御する橋渡しである.[ダウンロードリンク]https://sites.google.com/a/chromium.org/chromedriver/downloads]最新のChromeバージョンを表示します.ダウンロードと解凍:
  wget https://chromedriver.storage.googleapis.com/2.31/chromedriver_linux64.zip
  unzip chromedriver_linux64.zip

ここではseleniumを使用してchromeをheadlessモードで実行するように直接制御します.
   utf-8fromseleniumimportwebdriverchrome_options=webdriver.ChromeOptions()chrome_options.add_argument('--headless')chrome_options.add_argument('--disable-gpu')client=webdriver.Chrome(chrome_options=chrome_options,executable_path='/home/chromedriver')#      chromedriver   PATH ,       client.get("https://jiayi.space")content=client.page_source.encode('utf-8')printcontentclient.quit()

もちろんここはページの内容が印刷されています.その後、以前登ったサイトを探してみました.js暗号化リダイレクトを行い、phantomjsリクエストが直接破棄されたことを検出しました.その結果、Chrome headlessはレンダリング後のページを取得することに成功しました.簡単なテストに基づいて、すべてが完璧だと感じました.まだ生产环境の下でどんなバグがあるか分からないで、出会って更に更新します.