それが、調べたらあったんです。
Network Information APIっていうのが。
Network Information API はシステムのネットワーク接続に関する情報を、一般的な接続タイプ (例: ‘wifi’ や ‘cellular’ など) の観点から提供します。これは、ユーザの接続を元に高解像度コンテンツまたは低解像度コンテンツを選択するために使用できます。API の全体像は NetworkInformation インタフェースの追加と、Navigator インタフェースに追加された 1 個のプロパティ Navigator.connection で構成されます。
とのこと。https://developer.mozilla.org/ja/docs/WebAPI/Network_Information
例えば、inlineで埋め込んだ動画コンテンツをセルラー回線の時だけ、 静止画に置き換えるなーんてことができたら超便利!
しかし…現状は?
現状ではChromeしか対応していない状態。(T_T)2018 3/1追記
でも、キービに動画を埋め込んだサイトでUAで振り分けるの勿体な〜い!
だってスマホやタブレットでも動画再生は可能なんですから。
というわけで、キャリア各社のゲートウェイを調べたら下記の数値から始まるIPアドレスになるようです。
ドコモ
・1.66.~・1.76.~
・1.75.~
・1.78.~
・1.79.~
・49.96.~
・49.97.~
・49.98.~
・49.104.~
・49.106.~
・110.163.~
・183.74.~
・183.75.~
au
・59.128.~・59.135.~
・106.128.~
・106.135.~
・111.86.~
・111.87.~
・118.152.~
・182.248.~
・182.249.~
・182.250.~
・222.1.~
・222.15.~
ソフトバンク
・123.108.~・126.161.~
・126.163.~
・126.186.~
・126.192.~
・126.193.~
・126.194.~
・126.204.~
・126.237.~
・202.253.~
・210.228.~
しかし、JSでIP取るの難しそう…
そこで、PHPにてクライアントのIPとって前方一致で条件分岐かけてJSに渡すことにしました。
で、簡潔にPHPをJSに埋め込んでしまえ!というのが下記のソースになります。
当然このまんまじゃ動かないのでサーバの.htaccsesの設定を忘れずに。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
var circuit; <?php //javascriptファイルとして処理させる header("Content-type: application/x-javascript"); //IPアドレスを変数に代入 $ip_address = $_SERVER['REMOTE_ADDR']; //スクリプトの出力 if(preg_match('/1.66./',$ip_address)|| preg_match('/1.76./',$ip_address)|| preg_match('/1.75./',$ip_address)|| preg_match('/1.78./',$ip_address)|| preg_match('/1.79./',$ip_address)|| preg_match('/49.96./',$ip_address)|| preg_match('/49.97./',$ip_address)|| preg_match('/49.98./',$ip_address)|| preg_match('/49.104./',$ip_address)|| preg_match('/49.106./',$ip_address)|| preg_match('/110.163./',$ip_address)|| preg_match('/183.74./',$ip_address)|| preg_match('/183.75./',$ip_address)|| preg_match('/59.128./',$ip_address)|| preg_match('/59.135./',$ip_address)|| preg_match('/106.128./',$ip_address)|| preg_match('/106.135./',$ip_address)|| preg_match('/111.86./',$ip_address)|| preg_match('/111.87./',$ip_address)|| preg_match('/118.152./',$ip_address)|| preg_match('/182.248./',$ip_address)|| preg_match('/182.249./',$ip_address)|| preg_match('/182.250./',$ip_address)|| preg_match('/222.1./',$ip_address)|| preg_match('/222.15./',$ip_address)|| preg_match('/123.108./',$ip_address)|| preg_match('/126.161./',$ip_address)|| preg_match('/126.163./',$ip_address)|| preg_match('/126.186./',$ip_address)|| preg_match('/126.192./',$ip_address)|| preg_match('/126.193./',$ip_address)|| preg_match('/126.194./',$ip_address)|| preg_match('/126.204./',$ip_address)|| preg_match('/126.237./',$ip_address)|| preg_match('/202.253./',$ip_address)|| preg_match('/210.228./',$ip_address)){ echo "circuit = '1';"; }else{ echo "circuit = '0';"; } ?> |