高防IP如何獲取客戶端真實IP地址

2023-07-02    分類: 網站建設

這篇文章主要介紹了關于PHP、Java獲取客戶端真實IP地址的方法,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下。


僅適用于網站類轉發規則


經過代理以后,由于在客戶端和服務之間增加了中間層,因此服務器無法直接拿到客戶端的IP,服務器端應用也無法直接通過轉發請求的地址返回給客戶端。但是在轉發請求的HTTP頭信息中,增加了X-FORWARDED-FOR 、X-Real-IP信息。用以跟蹤原有的客戶端IP地址和原來客戶端請求的服務器地址。


先說說這些請求頭的意思

X-Forwarded-For

這是一個 Squid 開發的字段,只有在通過了HTTP代理或者負載均衡服務器時才會添加該項。

格式為X-Forwarded-For:client1,proxy1,proxy2,一般情況下,第一個ip為客戶端真實ip,后面的為經過的代理服務器ip。現在大部分的代理都會加上這個請求頭。

X-Real-IP

nginx代理一般會加上此請求頭。


php獲取客戶端IP地方法如下

1、REMOTE_ADDR

2、HTTP_X_FORWARDED_FOR


3、HTTP_CLIENT_IP

4、HTTP_X_REAL_IP


REMOTE_ADDR 是你的客戶端跟你的服務器“握手”時候的IP。如果使用了“匿名代理”,REMOTE_ADDR將顯示代理服務器的IP。


HTTP_CLIENT_IP 是代理服務器發送的HTTP頭。如果是“超級匿名代理”,則返回none值。同樣,REMOTE_ADDR也會被替換為這個代理服務器的IP。

$_SERVER['REMOTE_ADDR']; //訪問端(有可能是用戶,有可能是代理的)IP
$_SERVER['HTTP_X_FORWARDED_FOR']; //用戶是在哪個IP使用的代理(有可能存在,也可以偽造)

$_SERVER['HTTP_CLIENT_IP']; //代理端的(有可能存在,可偽造)



一、沒有使用代理服務器的情況:
REMOTE_ADDR = 您的 IP
HTTP_X_FORWARDED_FOR = 沒數值或不顯示

二、使用代理服務器的情況:

REMOTE_ADDR = 最后一個代理服務器 IP
HTTP_X_FORWARDED_FOR = 您的真實 IP ,經過多個代理服務器時,這個值類似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

獲取客戶端真實的IP地址實例:

/**
* 獲取客戶端ip
*/
function getClientIP() {
$ip = "unknown";
/*
* 訪問時用localhost訪問的,讀出來的是“::1”是正常情況。
* ::1說明開啟了ipv6支持,這是ipv6下的本地回環地址的表示。
* 使用ip地址訪問或者關閉ipv6支持都可以不顯示這個。
* */
if (isset($_SERVER)) {
if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
}elseif (isset($_SERVER["HTTP_X_REAL_IP"])) {
$ip = $_SERVER["HTTP_X_REAL_IP"];
}elseif (isset($_SERVER["HTTP_CLIENT_ip"])) {
$ip = $_SERVER["HTTP_CLIENT_ip"];
} else {
$ip = $_SERVER["REMOTE_ADDR"];
}
} else {
if (getenv('HTTP_X_FORWARDED_FOR')) {
$ip = getenv('HTTP_X_FORWARDED_FOR');
}elseif (getenv('HTTP_X_REAL_IP')) {
$ip = getenv('HTTP_X_REAL_IP');
}elseif (getenv('HTTP_CLIENT_ip')) {
$ip = getenv('HTTP_CLIENT_ip');
} else {
$ip = getenv('REMOTE_ADDR');
}
}
if(trim($ip)=="::1"){
$ip="127.0.0.1";
}
return $ip;
}



Java獲取客戶端真實IP地址方法


在JSP里,獲取客戶端的IP地址的方法是:request.getRemoteAddr(),這種方法在大部分情況下都是有效的。但是在通過了Apache,Squid等反向代理軟件就不能獲取到客戶端的真實IP地址了。


下面是一個參考獲取客戶端IP地址的方法:
public String getClientIP(HttpServletRequest request) {  String ip = request.getHeader("x-forwarded-for");  if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {    ip = request.getHeader("Proxy-Client-IP");  }  if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {    ip = request.getHeader("WL-Proxy-Client-IP");  }  if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {    ip = request.getRemoteAddr();  }  return ip;}

網站欄目:高防IP如何獲取客戶端真實IP地址
網頁地址:http://www.kartarina.com/news24/269074.html

成都網站建設公司_創新互聯,為您提供關鍵詞優化手機網站建設、做網站動態網站、外貿建站、營銷型網站建設

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

營銷型網站建設
主站蜘蛛池模板: 东京热加勒比无码视频| 亚洲AV无码一区二区二三区软件| 欧洲Av无码放荡人妇网站 | 乱人伦中文无码视频在线观看| 综合无码一区二区三区四区五区| 国产高清无码视频| 亚洲精品无码成人| 日韩免费无码视频一区二区三区 | 青青草无码免费一二三区| 免费无码又爽又高潮视频| 久久亚洲精品成人无码网站| 热の无码热の有码热の综合| 亚洲欧洲av综合色无码| 国产∨亚洲V天堂无码久久久| 免费A级毛片无码A| 亚洲av永久无码精品秋霞电影秋| 亚洲AV无码成人精品区蜜桃| 亚洲不卡无码av中文字幕| 精品高潮呻吟99av无码视频| 日韩国产精品无码一区二区三区| 亚洲熟妇少妇任你躁在线观看无码| 国产精品无码AV天天爽播放器| 久久久无码人妻精品无码| 日韩人妻无码精品久久久不卡| 亚洲中文字幕无码永久在线| 亚洲色无码一区二区三区| 自拍中文精品无码| 亚洲日产无码中文字幕| 久久久久久AV无码免费网站| 亚洲国产精品无码专区影院| 国产成年无码久久久免费| 暴力强奷在线播放无码| 东京热人妻无码一区二区av| 日日摸夜夜爽无码毛片精选| 少妇中文无码高清| 中文字幕乱偷无码AV先锋| 无码精品A∨在线观看| 久久男人Av资源网站无码软件 | 精品无码一区二区三区亚洲桃色| 亚洲精品无码乱码成人| 制服在线无码专区|