1. 程式人生 > >純凈得只剩下字的訪問IP查詢API

純凈得只剩下字的訪問IP查詢API

用戶 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