2018年6月19日 星期二

用 https://ipinfo.io/ 檢查IP來源

如果你在瀏覽器上輸入 https://ipinfo.io/ 就可以得到您目前所在位置IP的資訊

如果我們在https://ipinfo.io/都後面接上IP,例如:https://ipinfo.io/168.95.1.1 就可以得到168.95.1.1這個ip的資訊

當然前述兩種方式適合於人工閱讀,如果要讓程式判斷就比較不合適。

https://ipinfo.io/可以註冊後取得API的token後依照說明使用API,這裡介紹一種更簡便的方式

https://ipinfo.io/168.95.1.1/geo ( https://ipinfo.io/168.95.1.1/json 資料更齊全)

這種方式可以取得 168.95.1.1的JSON資料,然後就可以運用到javascript或php上了,底下以php為例子解說:

輸入  https://ipinfo.io/168.95.1.1/geo
看到的是這樣的資料

其中country 表示國家,台灣的代碼是TW
本校的xoops網站位置在/nlps2014/
而/nlps2018/則只是一個簡單的純網頁(原來網站的截圖,加上中文版和英文版的連結)。
在www.nlps.tyc.edu.tw的首頁加上這樣的index.php

 $myip= $_SERVER['REMOTE_ADDR'];
 $web="/nlps2014/";
 if (substr($myip,0,3) !='10.' && substr($myip,0,7) !='163.30.' ) {
   $json= file_get_contents("https://ipinfo.io/$myip/geo"); 
   if (trim($json)!='') {
     $iparr = json_decode($json,true);
     if ($iparr['country'] !='TW') $web="/nlps2018/";
   } else {
     die("ERROR IPINFO");
   }
 }
header("Location :$web");

這樣的話如果是台灣的瀏覽器就會被導向 主網頁,如果是外國網站則會被導向 簡單網頁,當然您也可以直接導向代管的英文版。
PS. 直接導向英文版會有一個嚴重的缺點,以後用google搜尋貴校名稱會找不到貴校網站或者是顯示英文網站。

2018-08-01補充
原本使用的好好,但是今天出現大量的ERROR IPINFO,似乎ipinfo不給用了,所以我另外寫了一個用自己的資料庫去檢查ip的API程式 http://163.30.200.26/twip.php
它的使用方法如下:
http://163.30.200.26/twip.php?ip=8.8.8.8
http://163.30.200.26/twip.php?ip=163.30.4.1
它的回應只有兩種,一是yes ,一是no,底下是使用範例
$myip= $_SERVER['REMOTE_ADDR'];
 $web="/nlps2014/";
 if (substr($myip,0,3) !='10.' && substr($myip,0,7) !='163.30.' ) {
   $yesno= file_get_contents("http://163.30.200.26/twip.php?ip=$myip");
   if (trim($yesno)!='') {
     if ($yesno=='no') $web="/nlps2018/";
   } else {
     die("ERROR IPINFO");
   }
 }
header("Location :$web");


沒有留言:

張貼留言