---
slug: "ubuntu-chromedriver"
title: "chromedriver インストールメモ"
description: "Python 3 で `requests` のレスポンス内に含まれる 4 バイト文字 (絵文字や一部の漢字) を除去する書き方。MySQL utf8 (3byte) に保存する前処理に使う。"
url: "https://www.ytyng.com/blog/ubuntu-chromedriver"
publish_date: "2018-08-16T06:07:15Z"
created: "2018-08-16T06:07:15Z"
updated: "2026-05-11T13:21:34.963Z"
categories: []
keywords: ""
featured_image_url: "https://media.ytyng.com/resize/20230812/18a00298b16241e2883fb70d5fe41fc6.png.webp?width=768"
has_video: false
has_music: false
video_urls: []
music_urls: []
lang: "ja"
---

# chromedriver インストールメモ

<p>Ubuntu 16.04<br /><br />参考 <a href="https://qiita.com/shinsaka/items/37436e256c813d277d6d" target="_blank">EC2 UbuntuでGoogle Chromeをヘッドレス実行してスクリーンショットを採取する手順 - Qiita</a><br style="box-sizing: inherit; color: #4a4a4a; font-family: -apple-system, system-ui, 'Segoe UI', 'Helvetica Neue', 'Hiragino Kaku Gothic ProN', メイリオ, meiryo, sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;" /><a href="https://stackoverflow.com/questions/22424737/unknown-error-chrome-failed-to-start-exited-abnormally" target="_blank">python 2.7 - Unknown error: Chrome failed to start: exited abnormally - Stack Overflow</a><br /><br /></p>
<h2>Chrome</h2>
<pre>curl -O https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb<br />sudo dpkg -i google-chrome-stable_current_amd64.deb</pre>
<pre>sudo apt update<br />sudo apt -f install -y</pre>
<p>テスト</p>
<pre>cd /tmp<br />google-chrome --headless --disable-gpu --screenshot <a href="https://www.example.com/">https://www.example.com/</a><br />imgcat screenshot.png  # imgcat については後述</pre>
<p></p>
<h2>chromedriver</h2>
<pre>curl <a href="https://chromedriver.storage.googleapis.com/LATEST_RELEASE">https://chromedriver.storage.googleapis.com/LATEST_RELEASE</a><br /><br />curl -O&nbsp; <a href="https://chromedriver.storage.googleapis.com/2.41/chromedriver_linux64.zip"></a><a>https://chromedriver.storage.googleapis.com/2.41/chromedriver_linux64.zip</a><br /><br />unzip <a href="https://chromedriver.storage.googleapis.com/2.41/chromedriver_linux64.zip">chromedriver_linux64.zip<br /><br /></a>sudo mv chromedriver /usr/local/bin/</pre>
<p>テスト</p>
<pre>chromedriver --verbsose &amp;<br />curl -d '{ "desiredCapabilities": {"browserName": "chrome", "chromeOptions": {"args": [ "--headless" ]} }}' http://127.0.0.1:9515/session</pre>
<p>sessionId が返ってくる<br />ちなみに、--headless をつけない場合</p>
<pre>xvfb-run chromedriver --verbsose &amp;</pre>
<p>とする必要がある</p>
<p><br />ページを開く</p>
<pre>curl -d '{"url":"https://www.example.com"}' <a href="http://127.0.0.1:9515/session/&lt;session-id&gt;/url">http://127.0.0.1:9515/session/&lt;session-id&gt;/url</a></pre>
<p><br />スクリーンショット</p>
<pre>curl http://127.0.0.1:9515/session/&lt;session-id&gt;/screenshot | python3 -c "import sys, json; print(json.load(sys.stdin)['value'])"|base64 -d |imgcat</pre>
<p>※ screenshot コマンドを実行 ➝ 結果が Base64 を含む JSON で返ってくるので Python でパース ➝ デコードしてバイナリ化 ➝ imgcat で iterm2 に表示</p>
<p></p>
<p>※動かない場合&nbsp;<span>--no-sandbox&nbsp;<span>--disable-dev-shm-usage なんかも気にしてみる</span></span></p>
<p>メモ: Webセキュリティを無効&nbsp;--ignore-certificate-errors&nbsp;--disable-web-security<br /><br /><br />参考:&nbsp;https://www.pawangaria.com/post/automation/browser-automation-from-command-line/</p>
<h2>Python ライブラリ</h2>
<p>pyvirtualdisplay 必要</p>
<pre>sudo apt install xvfb</pre>
<pre>pip install selenium chromedriver pyvirtualdisplay</pre>
<h2><br />テストコード</h2>
<pre style="background-color: #ffffff; color: #000000; font-family: 'Menlo'; font-size: 9.0pt;"><span style="color: #000080; font-weight: bold;">from </span>pyvirtualdisplay <span style="color: #000080; font-weight: bold;">import </span>Display<br />display = Display(<span style="color: #660099;">visible</span>=<span style="color: #0000ff;">0</span>, <span style="color: #660099;">size</span>=(<span style="color: #0000ff;">1280</span>, <span style="color: #0000ff;">800</span>))<br />display.start()<br /><br /><span style="color: #000080; font-weight: bold;">from </span>selenium.webdriver <span style="color: #000080; font-weight: bold;">import </span>Chrome, ChromeOptions<br /><br />options = ChromeOptions()<br />options.add_argument(<span style="color: #008080; font-weight: bold;">'--headless'</span>)<br />options.add_argument(<span style="color: #008080; font-weight: bold;">'--disable-gpu'</span>)<br />driver = Chrome(<span style="color: #660099;">options</span>=options)<br /><br />driver.get('https://example.com')<br />driver.get_screenshot_as_file('/tmp/screenshot.png')</pre>
<p></p>
<h2>おまけ サーバ上の画像を見る</h2>
<p>iTermを使っているなら</p>
<p><a href="https://gist.github.com/wesbos/eac5f93478002312db1f">https://gist.github.com/wesbos/eac5f93478002312db1f</a> このスクリプト</p>
<pre>sudo curl -o /usr/local/bin/imgcat -O https://raw.githubusercontent.com/gnachman/iTerm2/master/tests/imgcat &amp;&amp; sudo chmod +x /usr/local/bin/imgcat</pre>
<p>で、imgcat をサーバ上にインストールしておけば、</p>
<pre>imgcat /tmp/screenshot.png</pre>
<p>で画像がターミナルに表示される。</p>
<p></p>
<h2>Macの場合の注意: サイトからバイナリ落として使いましょう</h2>
<p>Mac で、brew からインストールした chromedriver を使っている場合、get メソッドの際</p>
<pre>data:;</pre>
<p>というURLが開いて</p>
<pre>&nbsp;&nbsp;&nbsp; raise RemoteDisconnected("Remote end closed connection without"<br />http.client.RemoteDisconnected: Remote end closed connection without response</pre>
<p>で停止する場合があります。</p>
<pre>brew uninstall --force chromedriver</pre>
<p>で chromedriver をアンインストールし、</p>
<p><a href="http://chromedriver.chromium.org/downloads">http://chromedriver.chromium.org/downloads</a> ここから最新版の Mac 用バイナリをダウンロードし、ウイルススキャンしてから <code>/usr/local/bin/</code> にでも入れて使うといいでしょう。</p>
<p></p>
<h2>トラブルシューティング</h2>
<p>Ubuntuで</p>
<pre>selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally<br /> (unknown error: DevToolsActivePort file doesn't exist)<br /> (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)<br /> (Driver info: chromedriver=2.41.578700 (2f1ed5f9343c13f73144538f15c00b370eda6706),platform=Linux 4.15.0-1023-aws x86_64)</pre>
<p>が出る</p>
<p><a href="https://stackoverflow.com/questions/50790733/unknown-error-devtoolsactiveport-file-doesnt-exist-error-while-executing-selen">https://stackoverflow.com/questions/50790733/unknown-error-devtoolsactiveport-file-doesnt-exist-error-while-executing-selen</a><br />ここを参考に</p>
<pre>System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");<br />ChromeOptions options = new ChromeOptions();<br />options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems<br />options.addArguments("start-maximized"); // open Browser in maximized mode<br />options.addArguments("disable-infobars"); // disabling infobars<br />options.addArguments("--disable-extensions"); // disabling extensions<br />options.addArguments("--disable-gpu"); // applicable to windows os only<br />options.addArguments("--no-sandbox"); // Bypass OS security model<br />WebDriver driver = new ChromeDriver(options);<br />driver.get("https://google.com");</pre>
<p>このようなオプションを追加してみましょう。これは Python のコードではないですが。</p>
<p>私は、<code>disable-infobars</code> 入れたらエラーでなくなりました。</p>
<p></p>
