skillup

技術ブログ

PHP

携帯サイト取得手法

投稿日:2017年2月9日 更新日:

PHPでスクレイピングの仕事をよくやるんですが、携帯サイトを取得してほしいという要望があり、少し調査をすることに。

携帯サイトといってもドメイン以下のディレクトリで/で区切ってsample.domain.jp/sp/XXXなどと携帯サイト自体を分離している作りのところもあれば、URL自体完全に一緒のところもあります。

User-Agentの設定

PHP云々の前にWebアプリケーションが携帯サイトか否かを判定する場合どのように判定しているでしょうか。

これはHTTPリクエストを飛ばす際に、User-Agentというパラメータがあり、この中にクライアントの情報が入っています。

Google ChromeやFireFoxのヘッダーのデバッガでみれば下記のような情報が入っています。

User-Agent一覧

userAgent(ユーザーエージェント一覧)

ようはここでどんな端末からアクセスしているかをみていますので、これを書き換えてあげればOKです。

ini_setでUser-Agentを書き換える

ini_setでUser-Agentを設定します。

ただこれですとファイル中のAgentがすべて携帯サイトになってしまいます。

PHPのfile_get_contentsでHTTP User Agentを切り替える

HTTP_Requestを使う場合

HTTP_Requestについて

その他cURL関数など

またブラウザで携帯サイトをみる場合はfirefoxのuser agent switcherというプラグインがかなり使えます。

File Mobile Simulatorが有名で以前はこれを使っていたのですが設定が面倒になっており、上記のプラグインのほうが使えましたね・・・。

-PHP
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

PHPで配列の同一性(集合のチェック)

AとBという配列があり、A⊂B つまりは集合のような関係を確かめたいときに下記のようなメソッドを使います。  

no image

PHPでのコンソール入力に関して

PHPはほとんどの場合、ブラウザでURLをたたいてWEBサーバーから呼び出されるパターンがほとんどです。 ところが、コンソールから使いたい場合などもあるでしょう。 コンソールから入力する場合、なんらか …

no image

laravelでの名前空間変更

laravelでの名前空間変更について。 laravelでモデルの場所はディフォルトだとapp/直下に作られます。 これをapp/Modelというディレクトリを作ってnamespaceを正常に定義した …

no image

PHPのPDF出力に関するエラー

PHPからFPDFなどを使ってPDFを出力するプログラムを書いたんですが、下記のエラーでかなり悩まされました。

読んで字のごとくPDF …

no image

PHPのオートローディング

大規模開発では扱うファイルが増えるため、必要なクラスの読み込みが煩雑になるケースが多いです。 Contents1 従来のPHPのファイルのロード2 オートローディングとは3 サンプルソース4 メモ5 …