PHP获取用户真实IP方法1:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<?php
function GetIP(){
if (! empty ( $_SERVER [ "HTTP_CLIENT_IP" ])){
$cip = $_SERVER [ "HTTP_CLIENT_IP" ];
}
elseif (! empty ( $_SERVER [ "HTTP_X_FORWARDED_FOR" ])){
$cip = $_SERVER [ "HTTP_X_FORWARDED_FOR" ];
}
elseif (! empty ( $_SERVER [ "REMOTE_ADDR" ])){
$cip = $_SERVER [ "REMOTE_ADDR" ];
}
else {
$cip = "无法获取!" ;
}
return $cip ;
}
echo GetIP();
?>
|
PHP获取用户真实IP方法2:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
<?php
error_reporting (E_ERROR | E_WARNING | E_PARSE);
if ( $HTTP_SERVER_VARS [ "HTTP_X_FORWARDED_FOR" ]){
$ip = $HTTP_SERVER_VARS [ "HTTP_X_FORWARDED_FOR" ];
}
elseif ( $HTTP_SERVER_VARS [ "HTTP_CLIENT_IP" ]){
$ip = $HTTP_SERVER_VARS [ "HTTP_CLIENT_IP" ];
}
elseif ( $HTTP_SERVER_VARS [ "REMOTE_ADDR" ]){
$ip = $HTTP_SERVER_VARS [ "REMOTE_ADDR" ];
}
elseif ( getenv ( "HTTP_X_FORWARDED_FOR" )){
$ip = getenv ( "HTTP_X_FORWARDED_FOR" );
}
elseif ( getenv ( "HTTP_CLIENT_IP" )){
$ip = getenv ( "HTTP_CLIENT_IP" );
}
elseif ( getenv ( "REMOTE_ADDR" )){
$ip = getenv ( "REMOTE_ADDR" );
}
else {
$ip = "Unknown" ;
}
echo $ip ;
?>
|
PHP获取用户真实IP方法3:
1
2
3
4
|
<?php
$iipp = $_SERVER [ "REMOTE_ADDR" ];
echo $iipp ;
?>
|
PHP获取用户真实IP方法4:
1
2
3
4
5
|
<?php
$user_IP = ( $_SERVER [ "HTTP_VIA" ]) ? $_SERVER [ "HTTP_X_FORWARDED_FOR" ] : $_SERVER [ "REMOTE_ADDR" ];
$user_IP = ( $user_IP ) ? $user_IP : $_SERVER [ "REMOTE_ADDR" ];
echo $user_IP
?>
|
PHP获取用户真实IP方法5:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
<?php
function get_real_ip()
{
$ip =false;
if (! empty ( $_SERVER [ "HTTP_CLIENT_IP" ])){
$ip = $_SERVER [ "HTTP_CLIENT_IP" ];
}
if (! empty ( $_SERVER [ 'HTTP_X_FORWARDED_FOR' ])){
$ips = explode ( ", " , $_SERVER [ 'HTTP_X_FORWARDED_FOR' ]);
if ( $ip ){
array_unshift ( $ips , $ip ); $ip = FALSE;
}
for ( $i = 0; $i < count ( $ips ); $i ++){
if (! eregi ( "^(10|172\.16|192\.168)\." , $ips [ $i ])){
$ip = $ips [ $i ];
break ;
}
}
}
return ( $ip ? $ip : $_SERVER [ 'REMOTE_ADDR' ]);
}
echo get_real_ip();
?>
|
PHP获取用户真实IP方法6:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<?php
if ( getenv ( 'HTTP_CLIENT_IP' )){
$onlineip = getenv ( 'HTTP_CLIENT_IP' );
}
elseif ( getenv ( 'HTTP_X_FORWARDED_FOR' )){
$onlineip = getenv ( 'HTTP_X_FORWARDED_FOR' );
}
elseif ( getenv ( 'REMOTE_ADDR' )){
$onlineip = getenv ( 'REMOTE_ADDR' );
}
else {
$onlineip = $HTTP_SERVER_VARS [ 'REMOTE_ADDR' ];
}
echo $onlineip ;
?>
|
获取用户真实IP原理:
客官看完了业界常用的获取用户真实IP方法后,发现有个共同规律,主要核心就是
HTTP_CLIENT_IP
HTTP_X_FORWARDED_FOR
REMOTE_ADDR
不同的演变,只是代码兼容性罢了!
如何模拟用户真实IP?
问:如果可以伪造模拟HTTP_CLIENT_IP,伪造模拟HTTP_X_FORWARDED_FOR,伪造模拟REMOTE_ADDR,不就可以达到追踪不到用户真实IP的目的了么?
答:楼上理解完全正确!如果做到这样完全可以通杀99%的获取用户真实IP,以用户IP为标识的系统!
支招【LET采集技巧】(curl、socket、fsocketopen、stream_socket_client):
如何模拟HTTP_CLIENT_IP?HTTP_CLIENT_IP可以模拟么?伪装HTTP_CLIENT_IP!
curl_setopt($curl, CURLOPT_HTTPHEADER, array (
'Client_Ip: '.mt_rand(0, 255).'.'.mt_rand(0, 255).'.'.mt_rand(0, 255).'.'.mt_rand(0, 255),
));//优点:伪造成本低,通杀90%系统
如何模拟HTTP_X_FORWARDED_FOR?HTTP_X_FORWARDED_FOR可以模拟么?伪装HTTP_X_FORWARDED_FOR!
curl_setopt($curl, CURLOPT_HTTPHEADER, array (
'X-Forwarded-For: '.mt_rand(0, 255).'.'.mt_rand(0, 255).'.'.mt_rand(0, 255).'.'.mt_rand(0, 255),
));//优点:伪造成本低,通杀90%系统
如何模拟REMOTE_ADDR?REMOTE_ADDR可以模拟么?伪装REMOTE_ADDR!
curl_setopt($curl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
curl_setopt($curl, CURLOPT_PROXY, '1.1.1.1:8080');//自行百度获得普匿代理IP即可,高匿代理IP更佳!
//优点:通杀100%系统
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://www.cnblogs.com/ghjbk/p/7728144.html