各キャリアのIPアドレス帯域一覧テキストファイルの形式を変更
以前より公開している au、docomo、SoftBank、Y!mobileのIPアドレス帯域一覧テキストファイルの形式を一部変更&新たなファイルを作成しました。
以下変更箇所です。
- maskのバイナリ値を行末尾に追加
- i-modeだけ、mail用が最初に来ていたのでWebの後に変更
- Web/Mail/PCVを別ファイルにしたものを作成開始
- KDDIスマートフォンの(Web)IPアドレス帯域を追加
- 各タイトルに、ソースURLを追記
- コメント行の行頭にある「#」記号の後ろに半角空白を挿入
大きい変更は、maskのバイナリ値を追加したことと、Web/Mail/PCVを別ファイルにしたものも作成するようにしたことです。
また、au(ezweb)については、2011年秋冬モデル以降の機種分についてはさらに別ファイル(ezweb_web_ip2.txt)にしています。
auケータイ
- http://www.wap2.jp/download/ip/ezweb_ip.txt
- http://www.wap2.jp/download/ip/ezweb_ip-compact.txt
- http://www.wap2.jp/download/ip/ezweb_web_ip.txt (New)
- http://www.wap2.jp/download/ip/ezweb_web_ip-compact.txt(New)
- http://www.wap2.jp/download/ip/ezweb_web_ip2.txt ※2011年秋冬モデル以降 (New)
- http://www.wap2.jp/download/ip/ezweb_web_ip2-compact.txt ※2011年秋冬モデル以降 (New)
- http://www.wap2.jp/download/ip/ezweb_mail_ip.txt(New)
- http://www.wap2.jp/download/ip/ezweb_mail_ip-compact.txt(New)
docomoケータイ
- http://www.wap2.jp/download/ip/imode_ip.txt
- http://www.wap2.jp/download/ip/imode_ip-compact.txt
- http://www.wap2.jp/download/ip/imode_web_ip.txt (New)
- http://www.wap2.jp/download/ip/imode_web_ip-compact.txt (New)
- http://www.wap2.jp/download/ip/imode_mail_ip.txt (New)
- http://www.wap2.jp/download/ip/imode_mail_ip-compact.txt (New)
- http://www.wap2.jp/download/ip/imode_pcv_ip.txt (New)
- http://www.wap2.jp/download/ip/imode_pcv_ip-compact.txt (New)
SoftBankケータイ
- http://www.wap2.jp/download/ip/softbank_ip.txt
- http://www.wap2.jp/download/ip/softbank_ip-compact.txt
- http://www.wap2.jp/download/ip/softbank_web_ip.txt (New)
- http://www.wap2.jp/download/ip/softbank_web_ip-compact.txt (New)
- http://www.wap2.jp/download/ip/softbank_mail_ip.txt (New)
- http://www.wap2.jp/download/ip/softbank_mail_ip-compact.txt (New)
- http://www.wap2.jp/download/ip/softbank_pcv_ip.txt (New)
- http://www.wap2.jp/download/ip/softbank_pcv_ip-compact.txt (New)
Y!mobile
- http://www.wap2.jp/download/ip/ymobile_ip.txt
- http://www.wap2.jp/download/ip/ymobile_ip-compact.txt
- http://www.wap2.jp/download/ip/ymobile_web_ip.txt (New)
- http://www.wap2.jp/download/ip/ymobile_web_ip-compact.txt (New)
- http://www.wap2.jp/download/ip/ymobile_mail_ip.txt (New)
- http://www.wap2.jp/download/ip/ymobile_mail_ip-compact.txt (New)
auスマートフォン
- http://www.wap2.jp/download/ip/au_sp_ip.txt (New)
- http://www.wap2.jp/download/ip/au_sp_ip-compact.txt (New)
- http://www.wap2.jp/download/ip/au_sp_web_ip.txt (New)
- http://www.wap2.jp/download/ip/au_sp_web_ip-compact.txt (New)
※現時点では、Web用IPアドレスのみなので、au_sp_ip.txtとau_sp_web_ip.txtは、まったく同じ内容です。
docomoスマートフォン
- http://www.wap2.jp/download/ip/spmode_ip.txt
- http://www.wap2.jp/download/ip/spmode_ip-compact.txt
- http://www.wap2.jp/download/ip/spmode_web_ip.txt (New)
- http://www.wap2.jp/download/ip/spmode_web_ip-compact.txt (New)
- http://www.wap2.jp/download/ip/spmode_mail_ip.txt (New)
- http://www.wap2.jp/download/ip/spmode_mail_ip-compact.txt (New)
SoftBankスマートフォン/iPhone
- http://www.wap2.jp/download/ip/softbank_sp_ip.txt
- http://www.wap2.jp/download/ip/softbank_sp_ip-compact.txt
- http://www.wap2.jp/download/ip/softbank_sp_web_ip.txt (New)
- http://www.wap2.jp/download/ip/softbank_sp_web_ip-compact.txt (New)
- http://www.wap2.jp/download/ip/softbank_sp_mail_ip.txt (New)
- http://www.wap2.jp/download/ip/softbank_sp_mail_ip-compact.txt (New)
- http://www.wap2.jp/download/ip/softbank_iphone_web_ip.txt (New)
- http://www.wap2.jp/download/ip/softbank_iphone_web_ip-compact.txt (New)
- http://www.wap2.jp/download/ip/softbank_iphone_mail_ip.txt (New)
- http://www.wap2.jp/download/ip/softbank_iphone_mail_ip-compact.txt (New)
上記ファイルはタブ区切りのテキストファイルで、全て
[IP/MASK]\t[IP]\t[MASK]\t[IP(Binary)]\t[MASK(Binary)]\n
の形式で1行につき1つの帯域が記載されています。
たとえばWebサイトにアクセスしてきた docomoケータイが、公表されたIPアドレス帯域内であるかどうかを調べるには、
sub is_real_docomo_keitai { my $is_real_ip = 0; my $ip_file = 'imode_web_ip-compact.txt'; my $addr_bin = sprintf "%08b"x4, split /\./, $ENV{REMOTE_ADDR}; open ( IPF, $ip_file ) or die("can't open file: $!"); while ( <IPF> ) { next if ( /^#/ ); next if ( /^\n$/ ); chomp; my ($ipmask, $ip, $mask, $ip_bin, $mask_bin) = split( /\t/ ); my $network_bin = $mask_bin & $addr_bin; if ( $ip eq &get_network_address($network_bin) ) { $is_real_ip = 1; last; } } close ( IPF ); return $is_real_ip; } sub get_network_address { my $ip_bin = shift; return join '.', map { oct "0b$_" } $ip_bin=~/(\d{8})(\d{8})(\d{8})(\d{8})/; }
のように調べます。