如何使用php从外部网页检索ip列表?

时间:2017-05-24 22:47:30

标签: php ip tor

我需要将所有TOR用户发送到自定义验证码。

如何使用php检索此ip列表:

Tor Bulk Exit List

这是我的PHP代码:

  // 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;
  }

第一步“检索ip列表”不正确,我不知道如何用php检索它。

谢谢!

2 个答案:

答案 0 :(得分: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>';
}

那可能会这样做。

答案 1 :(得分:0)

我找到了另一种方法来检查它:Check if user uses TOR

所以代码就是这个:

/**
 * 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检查它?

在尝试所有可能的解决方案后,我会报告更多信息。

感谢。