PhantomJSで、UserAgentをランダム化する

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;

として設定すれば完了です。

以上の記述量であれば、他のスクリプト(たとえば、スクリーンキャプチャ)等にも
流用しやすいと思います。

是非使ってみてください!

  • entry24ツイート
  • Google+

PageTop