PhantomJSとは、QtWebKitをベースとしたヘッドレスブラウザです。
Googleで検索すると、オートテストや、スクリーンキャプチャなどに用いられています。
オートテストの項目の中で、「ページの表示速度をチェックする。」という事があると思います。
このとき、PhantomJSのexamplesについてくる、「loadspeed.js」がほぼそのまま利用できるのですが
ランダムなUserAgentでのテストを要求されるパターンもあるかと思います。
ここでは、PhantomJSに対し、ランダムなUserAgentを設定する方法を紹介します。
PhantomJSで、UserAgentを設定するには
こちらで紹介されているexampleにありますが
settings.userAgentに値を設定すればOKです。
この値をいかにしてランダムにするか。ですが、流用可能な形にしたかったので
PhantomJSのfs.read()を使って外部からUAの一覧を読み込み、Math.random()を使って、配列からランダムに取得することにしました。
まず、以下のようなテキストファイルを準備します。
[
'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2560.0 Safari/537.36',
'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko',
'Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240',
... 以下、必要な分だけ記述
]
JavaScriptの配列ですね。これを、任意の場所に配置します。
今回は、/opt/pjs/ua.txtとして保存します。
次に、PhantomJSのスクリプトです。
var ua = fs.read('/opt/pjs/ua.txt');
ua = eval(ua);
var useragent = ua[Math.floor(Math.random() * ua.length)];
はい。以上で、useragentをランダムに取得することができました。これを、
page.settings.userAgent = useragent;
として設定すれば完了です。
以上の記述量であれば、他のスクリプト(たとえば、スクリーンキャプチャ)等にも
流用しやすいと思います。
是非使ってみてください!
コメント