LinuxサーバでwebサイトのキャプチャーをFlash込みで撮る方法

システム部の鈴木です

とある案件でたくさんの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モードで起動しろという画面が出続けていました

test

そこで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