PHPでスクレイピングの仕事をよくやるんですが、携帯サイトを取得してほしいという要望があり、少し調査をすることに。
携帯サイトといってもドメイン以下のディレクトリで/で区切ってsample.domain.jp/sp/XXXなどと携帯サイト自体を分離している作りのところもあれば、URL自体完全に一緒のところもあります。
User-Agentの設定
PHP云々の前にWebアプリケーションが携帯サイトか否かを判定する場合どのように判定しているでしょうか。
これはHTTPリクエストを飛ばす際に、User-Agentというパラメータがあり、この中にクライアントの情報が入っています。
Google ChromeやFireFoxのヘッダーのデバッガでみれば下記のような情報が入っています。
1 |
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36 |
User-Agent一覧
ようはここでどんな端末からアクセスしているかをみていますので、これを書き換えてあげればOKです。
ini_setでUser-Agentを書き換える
ini_setでUser-Agentを設定します。
1 |
ini_set('user_agent', 携帯のUser-Agent ); |
ただこれですとファイル中のAgentがすべて携帯サイトになってしまいます。
PHPのfile_get_contentsでHTTP User Agentを切り替える
HTTP_Requestを使う場合
その他cURL関数など
またブラウザで携帯サイトをみる場合はfirefoxのuser agent switcherというプラグインがかなり使えます。
File Mobile Simulatorが有名で以前はこれを使っていたのですが設定が面倒になっており、上記のプラグインのほうが使えましたね・・・。