インターネットで多くのコードを試しましたが、何も機能しませんでしたが、ip138 では毎回実際の IP を表示できます。特にヒーロー全員に協力を求めています。
たとえば、一般的な PHP を使用して取得した私の IP アドレスは次のとおりです: 60.55.8.229 - Ningbo, Zhejiang
しかし、ip38.com で取得した私の IP アドレスは次のとおりです: [42.196.192.67] From: Shanghai Great Wall Broadband
ip138 は正しい。
これは、私が病院でテストしたときのケースでもあり、私のphpコードで取得したIPは浙江省杭州です
しかし、ip138は私の実際のIP、上海交通大学を取得できます
私が現在使用しているPHPコードは次のとおりです。以下の通りです:
function GetIP(){ if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) $ip = getenv("HTTP_CLIENT_IP"); else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) $ip = getenv("HTTP_X_FORWARDED_FOR"); else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) $ip = getenv("REMOTE_ADDR"); else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) $ip = $_SERVER['REMOTE_ADDR']; else $ip = "unknown"; return($ip); } echo GetIP();
まだ勉強していませんが、それについても知りたいです。
階下の答えを楽しみにしています
http://iframe.ip138.com/ic.asp
もしかしたら、ASP には魔法の関数があるのでしょうか
これは私の方法です:
Function curIp(){ $ip=''; IF(Getenv('HTTP_CLIENT_IP') And StrCaseCmp(Getenv('HTTP_CLIENT_IP'),'unknown')){ $ip=Getenv('HTTP_CLIENT_IP'); }ElseIF(Getenv('HTTP_X_FORWARDED_FOR') And StrCaseCmp(Getenv('HTTP_X_FORWARDED_FOR'),'unknown')){ $ip=Getenv('HTTP_X_FORWARDED_FOR'); }ElseIF(Getenv('REMOTE_ADDR')And StrCaseCmp(Getenv('REMOTE_ADDR'),'unknown')){ $ip=Getenv('REMOTE_ADDR'); }ElseIF(isset($_SERVER['REMOTE_ADDR']) And $_SERVER['REMOTE_ADDR'] And StrCaseCmp($_SERVER['REMOTE_ADDR'],'unknown')){ $ip=$_SERVER['REMOTE_ADDR']; }Else{ $ip='127.0.0.1'; } Return $ip; }
function real_ip()
{
static $realip = NULL;
if ($realip !== NULL)
{
return $realip; }
if (isset($_SERVER))
{
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'] ))
{
$arr =explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
/* X-Forwarded-For の最初の不明でない有効な IP 文字列を取得します */
foreach ($ arr AS $ip)
{
$ip = トリム($ip);
if ($ip != 'unknown')
{
$realip = $ip;
}
}
}
elseif (isset ($_SERVER['HTTP_CLIENT_IP']))
{
$realip = $_SERVER['HTTP_CLIENT_IP'];
}
else
{
if (isset($_SERVER['REMOTE_ADDR']))
{
$ realip = $_SERVER['REMOTE_ADDR'];
}
else
{
$realip = '0.0.0.0'; }
}
}
else
{
if (getenv('HTTP_X_FORWARDED_FOR'))
{
$リアルリップ= getenv('HTTP_X_FORWARDED_FOR');
}
elseif (getenv('HTTP_CLIENT_IP'))
{
$realip = getenv('HTTP_CLIENT_IP')
}
else
{
$realip = geten v('REMOTE_ADDR') ;
}
}
$onlineip = null;
preg_match("/[d.]{7,15}/", $realip, $onlineip);
$realip = !empty($onlineip[0]); [0] : '0.0.0.0';
return $realip; }
コードがどれほど複雑であっても、必ず
HTTP_CLIENT_IP
HTTP_X_FORWARDED_FOR
REMOTE_ADDR
$
$ ip = '888.888.88888'
CURL_SETOPT ("X-Forwarded-For: $ IP", "CLIENT-IP:$ip"; ));
すると、あなたのコードは ip が 888.888.888.888 であると考えるでしょう
明らかにこれは冗談です
REMOTE_ADDR は常にネットワークへの第 1 レベルのルートの IP を反映します、これは真実です
は本物ですか?私がプロキシになるのはバカですね〜
プロキシを突破するには、他のテクノロジーが必要です
私は個人的に Goagent の Google プロキシを使用しています。時間も測れない。
PHP の関数を使用して実現できます
IP を取得する上記のコードには何も問題はありません。問題は、サーバーが単一行である可能性があることです。
米国のサーバーを使用して同じ PHP コードを使用して実際の万里の長城ブロードバンド IP を取得するのは間違いであることを個人的にテストしました。杭州の Alibaba 複数回線サーバーを使用すると、取得された IP は厦門電信の ip138 と同じになります。 line、取得したIPも間違っています。この国では複線化が非常に重要であることがわかります。この国はおばあちゃんのせいで、人為的な障害がたくさんある。