システム部の鈴木です
とある案件でたくさんのwebサイトのキャプチャー画像をFlashも含めて取得する必要が出ました
その際に取った方法をご紹介したいと思います
今回は以下の方法を採用しました
- Linuxサーバ(CentOS 6.6)を使う
- 仮想ディスプレイ(Xvfb)のX Window上でFlashプラグインをインストールしたFirefoxを起動
- ImageMagic の import コマンドでキャプチャを保存
この方法、ググれば同じような方法を紹介しているページはたくさん見つかると思いますが
微妙に違ったり、その通りにやっても上手くいかない事もあると思います
そこで、今回実際にやってみて上手くいった方法を残しておきたいなと思います
諸々インストール
Xvfb をインストール
yum install -y xorg-x11-server-Xvfb
firefox をインストール
yum install firefox
ImageMagick をインストール
yum install ImageMagick
まずは今回必要となるXvfbとFirefoxをインストールします
これはどこを見ても同じように書かれていると思います
続いてFlashプラグインのインストールですが、Adobeで提供されているバージョンと同じと思われるものが
rpmforgeで提供されているようだったので最初はそれを使っていました
しかし、自分の場合はどうもそれではうまくいかなくて、Safeモードで起動しろという画面が出続けていました
そこでAdobeサイトでrpmのインストーラーをダウンロードして使ってみる事に
[browser-shot url=”https://get.adobe.com/jp/flashplayer/otherversions/” width=”400″ height=”300″]
Linuxの32 or 64bit、rpm版をダウンロードしてサーバに置いたら以下のコマンドを実行します
rpm -Uvh adobe-release-x86_64-1.0-1.noarch.rpm
yum install flash-plugin
こちらを使ったところうまく行きました
ひと手間にはなりますがadobeからダウンロードする事をおすすめします
あとは日本語サポートが無ければインストールしておきましょう
yum -y groupinstall “Japanese Support”
最後に、Xlibを探してみて無ければこれらもインストールしておいてください
Xvfbを起動すると色々とエラーが出るのですが、その中で Xlib が無いというエラーが出てキャプチャーに失敗する場合がありました
予めこれらも入れておくとよいでしょう
find / -name Xlib.h
yum install xorg-x11-proto-devel
yum install libXt-devel
yum install xorg-x11-xinit
Xvfb+Firefoxを起動してキャプチャ-をとる
ここまでの準備ができたら、あとは以下の手順でキャプチャ-を実際に取ります
export DISPLAY=:1
Xvfb :1 -screen 0 1200x1200x24 &
firefox -display :1 -width 1200 -height 1200 &
firefox -remote “openURL(http://example.com/)” &
import -window root output.png &
killall Xvfb firefox
最初にディスプレイ番号を環境変数として指定しておきます
.bash_profile に書いておいてもOKです
そしてXvfb、Firefoxの順でバックグラウンドで起動します
最初にXvfbで下層ディスプレイのサイズを指定し、Firefoxはそれに収まるサイズでウィンドウのサイズを指定します
そして -remote で任意のURLを開き、importコマンドでキャプチャーを保存する、といった具合です
ちなみにこれはroot以外のOSユーザでもできますよ
もしキャプチャ-が取れなくなったら
firefoxを実行するとユーザディレクトリには色々な設定が保存される不可視ディレクトリが出来ます
これら(特に.mozilla)を削除して初期化してみてください
- .adobe
- .cache
- .macromedia
- .mozilla