純凈得只剩下字的訪問IP查詢API
阿新 • • 發佈:2018-07-01
用戶 limit 常量 else ria string html AR ML
純凈得只剩下字的訪問IP查詢API
實用資源 / 2018-02-26 / 3 條評論看到一個好玩的,就隨手收藏一下,本API作用:獲取用戶真實IP,而獲取用戶IP常見的坑有兩個,開發支付的時候也需要獲取用戶的真實IP:
- 獲取的是內網的ip地址。在Nginx作為反向代理層的架構中,轉發請求到PHP,Java等應用容器上。結果PHP獲取的是Nginx代理服務器的ip,表現為一個內網的地址。PHP獲取REMOTE_ADDR就是這樣一個情況(內網地址)。
- 獲取的是攻擊者偽造的ip地址。攻擊者可以隨便偽造一個頭部信息,隨便填寫一個ip放到頭部發過來,php獲取到HTTP_CLIENT_IP就是這樣一個情況。偽造的ip,導致我們數據庫存儲是假的ip,無從真實去判斷攻擊者的來源。比如批量註冊帳號的註冊ip,登錄的ip等。
操作如下:
將 PHP 代碼保存為 index.php,然後上傳到網站根目錄下的 IP 文件夾(這個自己隨機定義)
現在,瀏覽器訪問 http://你的域名/ip/ 就可以看到你的IP了
PHP代碼如下:
<?php
/**
* 純凈得只剩下字的訪問IP查詢API | 沈唁誌
* https://qq52o.me/1814.html
*/
//文本輸出編碼
Header(‘content-type:text/html;Charset=utf-8‘);
//定義函數
function getIP()
{
static $realip;
//定義常量
if (isset($_SERVER)){
if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
$realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
} else if (isset($_SERVER["HTTP_CLIENT_IP"])) {
$realip = $_SERVER["HTTP_CLIENT_IP"];
} else {
$realip = $_SERVER["REMOTE_ADDR"];
}
} else {
if (getenv("HTTP_X_FORWARDED_FOR")){
$realip = getenv("HTTP_X_FORWARDED_FOR");
} else if (getenv("HTTP_CLIENT_IP")) {
$realip = getenv("HTTP_CLIENT_IP");
} else {
$realip = getenv("REMOTE_ADDR");
}
}
return $realip;
}
$bool = false;
if ($_GET[‘code‘]===‘js‘) {
echo "function syip(){document.write(\"";
echo "您的IP是:".getip();
echo "\");}";
$bool = true;
}
if ($_GET[‘code‘]===‘js-txt‘) {
echo "function syiptxt(){document.write(\"";
echo getip();
echo "\");}";
$bool = true;
}
if (!$bool){
echo getip();
}
?>
實例數據獲取
- 請求地址:https://api.qq52o.me/ip
- 請求方式:GET
- 請求參數:接口:code 參數:1. js(返回【您的IP是:XXX】) 2.js-txt(僅返回IP)
使用方法
將下面這段代碼放入頁面內需要展示IP的位置即可
<script type="text/javascript" src="https://api.qq52o.me/ip/?code=js"></script>
<script>syip()</script>
該腳本實質為document.write的腳本。
演示一下
您的IP是:106.123.60.226
純凈得只剩下字的訪問IP查詢API