キャリアおよび機種の判別

概要

x-Servlet は HTTP リクエストヘッダの UserAgent の内容とメモリ内に読み込んだ useragent.xml から該当する端末を判別します。
ここではキャリア別に機種が判別される動作内容について説明します。

動作

x-Servlet 内では User-Agent ヘッダの値は以下の要素に分解され、判別に利用されます。

識別子/バージョン情報/(プラットフォーム情報)/[言語]

機種情報(メモリ上)内の「<Terminal> タグ内の <ID>」とのマッチング行うことで、キャリアおよび機種の判別を実施しています。
機種判定の優先順位は以下の通りです。

クローラー  [Version2.8.0以上]

  1. xproxy.properties の useCrawlerMode が "true" の場合に User-Agent ヘッダと <ID> とマッチングを行う。
  2. マッチングした情報の <ServiceName> が "Crawler" または "CrawlerSB" の場合はクローラーとする。
  3. クローラーでなければ以下の端末別判定に移る。

docomo

「識別子」が "DoCoMo/" で始まっている

  1. 「バージョン情報」が "1.0/" であれば、次に続く「機種名」と <ID> とをマッチング
  2. 「バージョン情報」が "2.0 " であれば、次に続く「機種名」と <ID> とをマッチング
  3. 1、2において判別不可 → デフォルト設定(Default-I)を採用

au

User-Agent ヘッダに "UP.Browser/" を含むが、 "UP.Browser/"(先頭にスペースがある)ではない

  1. 「デバイスID(H21,KC21等)」を抜き出して <ID> とマッチング
  2. 1 において判別不可 → デフォルト設定(Default-EZ)を採用

SoftBank

「識別子」が "J-PHONE/" もしくは "Vodafone/" もしくは "SoftBank/" で始まっている

  1. 「機種名(J-SH07,813T,805SC等)」を抜き出して <ID> とマッチング
  2. 1 において判別不可 → デフォルト設定を採用
    「識別子」が "J-PHONE/" の場合 → Default-J
    「識別子」が "Vodafone/" もしくは "SoftBank/" の場合 → Default-V

WILLCOM

「識別子」+「バージョン情報」が "Mozilla/3.0" で始まっている

  1. 「機種名(AH-K3001V,WX320K等)」を抜き出して <ID> とマッチング
  2. 1 において判別不可 → デフォルト設定(Default-I)を採用

EMOBILE

「識別子」が "emobile/" で始まっている

  1. 「機種名(H11T等)」を抜き出して <ID> とマッチング
  2. 1 において判別不可 → デフォルト設定(Default-E)を採用

その他

「<Terminal> タグ内の <ID>」は ";" を使用することで、「言語」や複数の「プラットフォーム情報」による詳細な端末の定義(追加)が可能となります。

  • <ID>Mozilla;(Windows);(MSIE);[ja]<ID> のように ";" で要素を連結
  • ";" は AND 条件
  • 「プラットフォーム情報」は "("、")" で囲う
  • 「プラットフォーム情報」は複数指定可能
  • 「言語」は "["、 "]" で囲う
  • 大文字小文字の区別あり
  • 「バージョン情報」は「識別子」に続けて記述
  • 「識別子(+バージョン情報)」、「プラットフォーム情報」、「言語」の定義位置は順不同
  • 要素に対して「前方一致」を行う
  • より詳細に定義された <ID> が優先される

iPhone  [Version2.8.2以上]

上記「その他」の識別方法で行う

  1. 「識別子」+「バージョン情報」が "Mozilla/5.0" で始まっている
  2. 「プラットフォーム情報」に "iPhone" が含まれている
  3. 「プラットフォーム情報」に "iPhone OS" が含まれている
  4. 3において判別不可 → デフォルト設定(Default-iPhone)を採用

Android  [Version2.9.0以上]

上記「その他」の識別方法で行う

  1. 「識別子」+「バージョン情報」が "Mozilla/5.0" で始まっている
  2. 「プラットフォーム情報」に "Android" が含まれている
  3. 「プラットフォーム情報」に Android端末の機種名(SonyEricssonSO-01B,SBM009SH,IS03)が含まれている
  4. 3において判別不可 → デフォルト設定(Default-Android)を採用

WindowsPhone  [Version2.10.0以上]

上記「その他」の識別方法で行う

  1. 「識別子」+「バージョン情報」が "Mozilla/5.0" で始まっている
  2. 「プラットフォーム情報」に "Windows Phone OS" が含まれている
  3. 「プラットフォーム情報」に WindowsPhone端末の機種名(IS12T)が含まれている
  4. 3において判別不可 → デフォルト設定(Default-WindowsPhone)を採用

BlackBerry  [Version2.10.0以上]

上記「その他」の識別方法で行う

・BlackBerry OS 5.0 以下

  1. 「識別子」が "BlackBerry" で始まっている
  2. 「バージョン情報」が "4.2"、"4.6"、"5.0" で始まっている
  3. 2において判別不可 → デフォルト設定(Default_ETC)を採用

・BlackBerry OS 6.0 以上

  1. 「識別子」+「バージョン情報」が "Mozilla/5.0" で始まっている
  2. 「プラットフォーム情報」に "BlackBerry" が含まれている
  3. 「識別子」+「バージョン情報」が "Version/X.X" が含まれている
  4. 3において判別不可 → デフォルト設定(Default-BlackBerry)を採用

※  "Version/X.X" の "X.X" にはバージョンが入ります。(例)"Version/6.0"

FirefoxOS  [Version2.10.3以上]

上記「その他」の識別方法で行う

  1. 「識別子」+「バージョン情報」が "Mozilla/5.0" で始まっている
  2. 「プラットフォーム情報」に "Firefox" が含まれている
  3. 「プラットフォーム情報」に FirefoxOS端末の機種名(LGL25)が含まれている
  4. 3において判別不可 → デフォルト設定(Default-FirefoxOS)を採用

※各キャリアのデフォルト設定については「対応機種一覧にない携帯電話からのアクセスがあった場合はどうなるのか」を参照ください。
※上記のどれにも当てはまらない場合は "Default_ETC" が採用されます。

設定例

staticUA.xml に機種情報を追加する場合は、下記の例を参考に行ってください。

例1)

 <Terminal>
         <Name>xxxxx</Name>
         <ID>Mozilla;(Windows);(MSIE)</ID>
 </Terminal>
  1. "Mozilla/5.0 (Windows; U; Windows NT 5.0; ja-JP; rv:1.0.1)"
    → マッチしない(「プラットフォーム情報」に "MSIE" が存在しないため)
  2. "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"
    → マッチする

例2)

<Terminal>
         <Name>xxxxx</Name>
         <ID>Mozilla/4.0;(Windows)</ID>
</Terminal>
  1. "Mozilla/5.0 (Windows; U; Windows NT 5.0; ja-JP; rv:1.0.1)"
    → マッチしない(「識別子(+バージョン情報)」が一致しないため)
  2. "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"
    → マッチする

例3)

<Terminal>
         <Name>xxxxx</Name>
         <ID>Mozilla/4.0;[ja];(Nitro)</ID>
</Terminal>
  1. "Mozilla/4.01 (compatible; MSIE 6.0; Nitro) Opera 8.50 [ja]"
    → マッチする(「識別子(+バージョン情報)」が前方一致しているため)
  2. "Mozilla/4.0 (compatible; MSIE 6.0; Nitro) Opera 8.50 [ja]"
    → マッチする

例4)

<Terminal>
         <Name>xxxxx</Name>
         <ID>Mozilla/5.0;(iPhone)</ID>
</Terminal>
  1. "Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_0 like Mac OS X; ja-jp) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5A345 Safari/525.20"
    → マッチする
TOP