携帯電話・個体識別情報(番号)の取得方法、uid、iモードID(guid)、EZ番号、端末シリアル番号

更新:

ドコモ、au、ソフトバンクの携帯電話の個体識別情報(番号)の取得。

個体識別情報とは

各携帯電話には1台1台、個体識別情報(個体識別番号)というユニーク(唯一)な番号が付いている。
携帯電話の製造番号のようなもの。
主に非公式サイト(勝手サイト)にて会員を識別するために利用されている。
一方公式サイトでは、一般的にユーザID(uid)と呼ばれる端末のIDを取得して会員を識別している。
現在、ドコモ以外は公式サイトで使われているuidを取得することができ、非公式サイトでも利用されている。

個体識別情報を取得できる機種は、ドコモは503以降・FOMA以降、auは全機種、ソフトバンクはパケット通信対応機種以降。
古い機種は個体識別情報を取得できない。

また個体識別情報は、使用する携帯電話にて端末ID(製造番号)を通知する設定にしていないとサイトにてIDを取得できない。
設定方法は機種により異なる。
携帯電話のメニューのインターネット関連の設定か、キャリアのメニュー(iMenu)などから各種設定項目などにて設定できる。


個体識別情報の取得方法

ドコモの個体識別情報

  • USER AGENTの中にあるserの後の数字が個体識別情報。
    プログラムで正規表現などを利用してUSER AGENTの中から個体識別情報を抽出する。
    USER AGENTは ユーザーエージェント を参照。
  • movaは11桁、FOMAは15桁。
  • iccはFOMAカード製造番号。
  • 非公式サイト(勝手サイト)で利用されている。
  • デフォルトでは表示されない。
    以下のようにタグの中に「utn」という文字を入れる。
    そのリンク先で個体識別情報を取得できる。
    <a href="example.html" utn>test</a>
    や
    <form method="post" utn> </form>
    
    PHPの場合、以下のような正規表現でユーザーエージェントから個体識別情報を取得できる。
    
    preg_match("/^.+ser([0-9a-zA-Z]+).*$/", $useragent, $match);
    $id = $match[1];
    
    $useragent はユーザーエージェント。
    $id は個体識別情報。
    
  • この番号は携帯電話で *#06# と打つと表示される。
    (機種により表示されないものもあるかもしれません)

ドコモのiモードID(guid)

  • 2008年4月からiモードIDと呼ばれるIDを取得できるようになった。
    主に非公式サイトで利用される。
  • iモードIDは、英数字の7桁で大文字・小文字の区別あり。
  • SSL通信時(https)ではiモードIDを取得できない。
  • 詳しくは以下参照。
    https://www.nttdocomo.co.jp/info/notice/page/080228_00.html
  • 以下のように引数に guid=ON というのを入れる。
    GETでもPOSTでも可能。
    そのリンク先でiモードIDを取得できる。
    <a href="http://example.com/test.php?guid=ON">test</a>
    や
    <form action="./example.cgi?guid=ON" method="post" name="form1">
    <input type="submit" value="送信">
    </form>
    
    formを使う場合、actionの部分に guid=ON を書かなければいけない。
    <input type="hidden" name="guid" value="ON"> では、IDを取得できない。
    
  • 上記のリンクからiモードIDを取得するには、HTTPヘッダ(拡張ヘッダ)X-DCMGUID から取得する。
    //PHPの場合
    $id = $_SERVER['HTTP_X_DCMGUID'];
    
    //Perlの場合
    $id = $ENV{'HTTP_X_DCMGUID'};
    
    //Javaの場合
    String id = request.getHeader("x-dcmguid"); 
    

auの個体識別情報

  • auの個体識別情報は、EZ番号(サブスクライバID)と呼ばれる番号。
    HTTPヘッダ(拡張ヘッダ) X-UP-SUBNO から取得する。
    //PHPの場合
    $id = $_SERVER['HTTP_X_UP_SUBNO'];
    
    //Perlの場合
    $id = $ENV{'HTTP_X_UP_SUBNO'};
    
    //Javaの場合
    String id = request.getHeader("x-up-subno");
    
  • 12345678901234_56.ezweb.ne.jp という形式の29桁のIDが得られる。
  • 公式サイトと非公式サイトの両方で利用されている。
  • この番号は携帯電話のメニューのEZ番号(サブスクライバID)という項目に書いてある。

ソフトバンクの個体識別情報(SN)

  • USER AGENTの中にあるSNの後の数字が個体識別情報。
    プログラムで正規表現などを利用してUSER AGENTの中から個体識別情報を抽出する。
  • P型は11桁、それ以降は15桁。
  • 非公式サイトで利用されている。
  • PHPの場合、以下のような正規表現でユーザーエージェントから個体識別情報を取得できる。
    preg_match("/^.+\/SN([0-9a-zA-Z]+).*$/", $useragent, $match);
    $id = $match[1];
    
    $useragent はユーザーエージェント。
    $id は個体識別情報。
    
  • この番号は携帯電話で *#06# と打つと表示される。
    (機種により表示されないものもあるかもしれません)

ソフトバンクの個体識別情報(X_JPHONE_UID)

  • HTTPヘッダ(拡張ヘッダ)X-JPHONE-UID から取得する。
    //PHPの場合
    $id = $_SERVER['HTTP_X_JPHONE_UID'];
    
    //Perlの場合
    $id = $ENV{'HTTP_X_JPHONE_UID'};
    
    //Javaの場合
    String id = request.getHeader("x-jphone-uid");
    
  • 16桁ある。
  • 公式サイトと非公式サイトの両方で利用されている。
  • X-JPHONE-UIDは、昔は公式サイトでしか取得できなかったが、のちに非公式サイトでも取得できるようになった。
    ただし、古い機種では取得できない。

このエントリーをはてなブックマークに追加