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

作成:2005-10-25、更新:2009-12-17
ドコモ、au、ソフトバンクの携帯電話の個体識別情報(個体識別番号)の取得。



個体識別情報とは

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

    また個体識別情報は、使用する携帯電話にて、端末ID(製造番号)を通知する設定にしていないとサイトにてIDを取得できない。
    設定方法は、機種により異なる。
    携帯電話のメニューのインターネット関連の設定か、キャリアのメニュー(iMenu)などから、各種設定項目などにて設定ができる。
  3. 個体識別情報やuidの確認
    自分の携帯電話の個体識別情報やuidを確認したい場合は、以下のページをご利用下さい。
    2次元バーコードからアクセスできます。

    http://testpage.jp/m/tool/uid_utn_ip_host.php?guid=ON

個体識別情報の取得方法

  1. ドコモの場合
    1. 個体識別情報
      • 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# と打つと表示される。
        (機種により表示されないものもあるかもしれません)
    2. iモードID(guid)
      • 2008年4月からiモードIDと呼ばれるIDを取得できるようになった。
        主に非公式サイトで利用される。
      • iモードIDは、英数字の7桁で大文字・小文字の区別あり。
      • SSL通信時(https)では、iモードIDを取得できない。
      • 詳しくは、以下参照。
        http://www.nttdocomo.co.jp/service/imode/make/content/ip/index.html#imodeid
        http://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"); 
        	
  2. 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)という項目に書いてある。
  3. ソフトバンクの場合
    1. 個体識別情報
      • USER AGENTの中にあるSNの後の数字が個体識別情報。
        プログラムで正規表現などを利用してUSER AGENTの中から個体識別情報を抽出する。
        USER AGENTは、ユーザーエージェントを参照。
      • P型は11桁、それ以降は15桁。
      • 非公式サイトで利用されている。
      • PHPの場合、以下のような正規表現でユーザーエージェントから個体識別情報を取得できる。
        preg_match("/^.+\/SN([0-9a-zA-Z]+).*$/", $useragent, $match);
        $id = $match[1];
        
        $useragent はユーザーエージェント。
        $id は個体識別情報。
        		
      • この番号は携帯電話で *#06# と打つと表示される。
        (機種により表示されないものもあるかもしれません)
    2. 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は、昔は公式サイトでしか取得できなかったが、現在は非公式サイトでも取得できる。
        ただし、古い機種では取得できない。