簡體   English   中英

PHP | 從客戶端用戶獲取私有IP地址?

[英]PHP | Get private IP address from a client user?

我知道問題,但沒有在stackoverflow上找到真正的答案。 這不是X_FORWARDED_FORSERVER_NAMESERVER_REMOTE_ADDR ,我想獲取連接到服務器的遠程客戶端的本地IP地址,以檢測實際連接了本地遠程網絡的人。

說明一下:

ISP  <---->  ROUTER <----> LOCAL NETWORK <----> LOCAL PC

我想知道什么?

  1. 連接的遠程客戶端$_SERVER["REMOTE_ADDR"]公共IP地址,可以,但是!
  2. 公用網絡上已連接客戶端的本地IP地址(192.168.xx,10.xxx,172.xxx)

如何解決這個問題呢? 我有答案,所以我想如果想知道本地IP地址,每個人都應該知道:

您應該使用CURLcurl_getinfo()函數。 然后,指向您想要的任何人的URL地址(您的主服務器ip或其他),例如:

<?php
    $ch = curl_init();

    $opt = curl_setopt($ch, CURLOPT_URL, "YOUR_SOME_URL_ADDRESS"); 

    curl_exec($ch);

    $response = curl_getinfo($ch);

    $result = array('client_public_address' => $response["primary_ip"],
                    'client_local_address' => $response["local_ip"]
            );

    var_dump($result);

    curl_close($ch);

?>

專注於響應您的公共地址的$response["primary_ip"]$response["local_ip"]本地地址的$response["local_ip"] 現在這是示例:

ISP  <---->  ROUTER <----> LOCAL NETWORK <----> LOCAL PC
 /\                                              /\
 ||                                              ||
 \/                                              \/
$response["primary_ip"]                  <----> $response["local_ip"]
213.x.x.x  (for example)                        192.168.1.3 (for example)

結果:

array (size=2)
  'client_public_address' => string '213.xxx.xxx.xxx' (length=14)
  'client_local_address'  => string '192.168.1.3' (length=11)

這不會提供真實的本地IP地址!

謝謝。

這將永遠無法正常工作。
首先,您需要客戶端上的HTTP服務器以使其響應CURL。
即使有,也不保證返回任何“本地IP”。 接下來,對客戶端執行ping操作的HTTP服務器看起來可疑,並且很可能被禁止。

無論如何,我在遠程IP上嘗試了您的代碼:

array(2) {
  ["client_public_address"]=>
  string(7) "8.8.8.8"
  ["client_local_address"]=>
  string(0) ""
}

它什么也沒返回

當我嘗試使用本地路由器時,它可以正常工作

array(2) {
  ["client_public_address"]=>
  string(13) "XXX"
  ["client_local_address"]=>
  string(12) "192.168.1.37"
}

它僅適用於您自己的本地路由器 ,但無法從遠程系統獲取任何本地地址。
坦白說,它僅顯示分配給您PC的本地IP地址。

默認情況下,尋址的本地IP不暴露給應用程序層。 您需要較低級別的工具,這些工具可以從網絡數據包中提取此信息。

您可以使用HTML5功能(CORS和WebSocket)來確定范圍(xxx.xxx.xxx.xxx/24),請參見以下實時示例:

JS-RECON

它是如何工作的? 您可以掃描IP地址的范圍(192.168.1.0/24、192.168.0.1/24等),並找到用戶使用的范圍,但是,查找准確的IP地址仍然很困難。

結果:不起作用。 IP為192.168.1.200返回192.168.1.2; 網站無效,工具無法真正發揮作用。

    function getRealIpAddr(){ 
        //check ip from share internet 
        if (!empty($_SERVER['HTTP_CLIENT_IP'])) { 
            $ip=$_SERVER['HTTP_CLIENT_IP'];
        } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
         //to check ip is pass from proxy 
            $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
        } else { 
            $ip=$_SERVER['REMOTE_ADDR']; 
        }

       return $ip; 
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM