
curl を使用してユーザーエージェントを変更し、異なる OS およびブラウザの URL ソースコードを取得します
curl を使用すると、指定した URL の HTML と CSS のソースコード、さらには HTTP ヘッダー情報も取得できます。ただし、一部のサイトでは、OS やブラウザのバージョンによってコンテンツや HTML が全く異なることがあります。これは、ユーザーエージェントを検出することで実現されます。そのため、別のブラウザバージョンやオペレーティングシステムのユーザーエージェントを偽装することができ、これにより Web 開発者はサイトのソースコードの異なるバリエーションに迅速にアクセスできるようになります。ここでは、curl を使用してコマンドラインからこれを実現します。curl
コマンドでユーザーエージェントを偽装するための基本的な構文は次のとおりです。
curl -A "UserAgentString" http://url.com
もちろん、UserAgentString は、模倣したいブラウザに一致する正当なユーザー エージェント文字列に置き換えます。
さまざまなユーザーエージェント文字列の例をいくつか見てみましょう。
ソース HTML と CSS が異なる最も一般的な状況の 1 つは、簡素化されたモバイル バージョンを持つ Web サイトの場合です。次のようにして、iPhone 固有のソース コードを取得できます。
curl -A "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5" http://www.apple.com
一部のサイトでは他のブラウザでも同様の動作をしています。例えば、Mac OS X 10.6.8 の Chrome 12 では以下のようになります。
curl -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112 Safari/534.30" http://microsoft.com
以下は、Mac App Store と Mac OS X 10.6.7 をユーザーエージェントとして偽装し、スクリプトから App Store を照会するのに便利な別のスクリプトです (詳細については、TUAW を参照してください)。
curl -silent -A "iMacAppStore/1.0.1 (Macintosh; U; Intel Mac OS X 10.6.7; en) AppleWebKit/533.20.25" http://ax.search.itunes.apple.com/
さらに別のものは、Firefox 3 で Windows XP を偽装します。
curl -A "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3" http://yahoo.com
ユーザーエージェント文字列はウェブ上でよく見かけますが、サイトのソースをそのユーザーエージェントとして取得したい場合は、必ず引用符で囲んでください。ユーザーエージェントについて詳しく知りたい場合は、Wikipedia にこのトピックに関する優れた記事があります。
注:これは意図的にコマンドラインで実行され、ターミナルから作業することを好むユーザーを対象としていますが、Safari、Chrome、Firefoxなどの標準的なグラフィカルアプリケーションやウェブブラウザでも簡単に実行できます。Safariはおそらく最も簡単です。開発者メニューから異なるユーザーエージェントを直接設定できるからです。
このスクリーンショットは、OS X Lion で Facebook ビデオチャット通話を機能させる方法に関する記事から取得したもので、これはブラウザのユーザー エージェントを Facebook が互換性があると判断したバージョンに変更することで実現されます。