这个php函数返回客户端的真实IP地址:
function getRealIpAddr()
{
if (!empty($_SERVER['HTTP_CLIENT_IP'])) //check ip from share internet
{
$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;
}
当我为IE设置ip:端口代理时,此代码仍显示我的真实IP,我不知道如何隐藏我的ip从这个PHP代码! (如VPN机制)
答案 0 :(得分:1)
这不是你的错。如果你想隐藏真正的IP,你必须找到一个真正的匿名代理(也称为'精英')。您无法更改http标头以伪造您的IP - 这些标头(实际上是HTTP_X_FORWARDED_FOR)是由透明代理服务器即时添加的。
当通过非精英但正常的匿名代理进行连接时,只会有一个标题表示连接被转发,但不会显示您的真实IP。
您也可以使用不修改http标头的SOCKS代理,因为它们没有指定的协议,只能在TCP连接中进行调解。
某些代理可以使用自己的非标准标头发送您的IP。如果你想确定你的IP没有在任何地方给出,你应该编写自己的测试器,它将解析所有标题以找到你的确切IP。
另外请记住,并非每个代理都是安全的,其中一些代理可以由黑客设置来捕获密码或动态更改数据。
答案 1 :(得分:0)
所有标头都可由客户端填写。套接字的终点是不可原谅的 - 但是对于像tor这样的设施,你不能依赖于数据的准确,更不用说NAT了。
无论您想要实现什么,都不应该依赖函数返回的信息。您应该使用它的唯一地方是大样本大小的指示性信息(例如,用于GIS ip /地址查找)。
您当然不应该将其用于身份验证目的。
答案 2 :(得分:-2)
如果将CURL和curl_setopt()与此选项一起使用 - CURLOPT_INTERFACE。
但这不会将数据返回给您,而是返回到新的IP地址集。