2017-05-24 9 views
0

すべてのTORユーザーにカスタムキャプチャを送信する必要があります。これは私のPHPコードであるphpで外部Webページからip listを取得するには?

Tor Bulk Exit List

: "IPリストの取得"

// Retrieve ip list 
    $deny_ips = file('https://check.torproject.org/cgi-bin/TorBulkExitList.py?ip=8.8.8.8'); 

    // Read user ip address 
    $ip = isset($_SERVER['REMOTE_ADDR']) ? trim($_SERVER['REMOTE_ADDR']) : ''; 

    // Search current IP in $deny_ips array and present Captcha 
    if ((array_search($ip, $deny_ips))!== FALSE) { 
    echo 'Captcha goes here!'; 
    exit; 
    } 

最初のステップは正しくないと私はどのように行う、私はPHPで、このIPリストを取得することができます

PHPでそれを取得する方法を知らない

ありがとうございました!

+0

どのように正しくないですか?おそらくhttp(s)fopenラッパーはあなたの設定で無効になっていますか? – ccKep

+0

私はそれが最初のステップではファイルではなくウェブページであると考えています。私は、例えば配列のようなものを試してみました。残念ながら、PHPの私の理解はまだ限られています。 – Cell

+0

'file()'は、fopenラッパーが有効である限り、URLを読み取ることができます。 [php docs](http://php.net/manual/en/function.file.php)の情報を参照してください。 – ccKep

答えて

0

アイデアがあります。

$tor = file_get_contents('https://check.torproject.org/cgi-bin/TorBulkExitList.py?ip=8.8.8.8'); 
$array = explode('#', $tor); 
$ips = end($array); 
$ips_array = explode(PHP_EOL, $ips); 

If(in_array($ip, $ip_array)){ 
    echo 'ip found <br>'; 
}else{ 
    echo 'ip not found <br>'; 
} 

そうかもしれません。

+0

私を助けてくれてありがとう。解決策を試し、結果を後で報告します。 – Cell

+0

あなたのソリューションはオリジナルの投稿と一緒に機能し、他のソリューションは私が投稿しました。私はあなたのサポートを非常に速く、私がオンラインで見つけた他のすべてのソリューションとは異なる答えを出したので、あなたの答えを受け入れました。私はあなたのコードを多かれ少なかれ理解していますが、私が投稿した他の解決策はより具体的であり、コードをあまり理解できません。ご回答有難うございます。 – Cell

0

私はここでそれを確認する別の方法を見つけました:Check if user uses TOR

ので、コードはこの1つである:

/** 
* detect if current user is using tor network 
* @return bool 
*/ 
function IsTorExitPoint(){ 
    if (gethostbyname(ReverseIPOctets($_SERVER['REMOTE_ADDR']).".".$_SERVER['SERVER_PORT'].".".ReverseIPOctets($_SERVER['SERVER_ADDR']).".ip-port.exitlist.torproject.org")=="127.0.0.2") { 
    return true; 
    } 
    else { 
    return false; 
    } 
} 

/** 
* reverse the ip 
* @param string $input 
* @return string 
*/ 
function ReverseIPOctets($inputip){ 
    $ipoc = explode(".",$inputip); 
    return $ipoc[3].".".$ipoc[2].".".$ipoc[1].".".$ipoc[0]; 
} 

/** 
* present custom captcha to user using tor network 
*/ 
if (IsTorExitPoint()) { 
    echo 'Captcha goes here!'; 
    exit; 
} 

ないパフォーマンスの問題に応じてそれを行うための最善の方法何を確認してください。 PHPでそれをチェックする方法はありますか?

可能なすべての解決策を試した後で、さらに詳しい情報を報告します。

ありがとうございました。

関連する問題