Как мне получить провайдера посетителя через PHP? - PullRequest
12 голосов
/ 13 мая 2009

Как мне узнать, кто из интернет-провайдеров просматривает страницу PHP?

Можно ли использовать PHP для отслеживания или выявления его?

Если я использую что-то вроде следующего:

gethostbyaddr($_SERVER['REMOTE_ADDR']);

возвращает мой IP-адрес, а не имя хоста или провайдера.

Ответы [ 13 ]

10 голосов
/ 13 мая 2009

Похоже, это то, что вы ищете, он попытается вернуть полное имя хоста, если это возможно:

http://us3.php.net/gethostbyaddr

10 голосов
/ 25 марта 2011

Вы можете получить все эти вещи из следующих кодировок PHP.,

<?php

$ip=$_SERVER['REMOTE_ADDR'];

$url=file_get_contents("http://whatismyipaddress.com/ip/$ip");

preg_match_all('/<th>(.*?)<\/th><td>(.*?)<\/td>/s',$url,$output,PREG_SET_ORDER);

$isp=$output[1][2];

$city=$output[9][2];

$state=$output[8][2];

$zipcode=$output[12][2];

$country=$output[7][2];

?>
<body>
<table align="center">
<tr><td>ISP :</td><td><?php echo $isp;?></td></tr>
<tr><td>City :</td><td><?php echo $city;?></td></tr>
<tr><td>State :</td><td><?php echo $state;?></td></tr>
<tr><td>Zipcode :</td><td><?php echo $zipcode;?></td></tr>
<tr><td>Country :</td><td><?php echo $country;?></td></tr>
</table>
</body>
9 голосов
/ 13 мая 2009

В заголовках HTTP нет ничего, что указывало бы на ISP пользователя, поэтому ответ - нет, нет встроенной функции PHP, которая сообщит вам об этом. Вам придется использовать какую-то службу или библиотеку, которая сопоставляет IP-адреса с сетями / Интернет-провайдерами.

4 голосов
/ 18 октября 2016

Почему бы не использовать ARIN REST API.

<code><?php

// get IP Address
$ip=$_SERVER['REMOTE_ADDR'];

// create a new cURL resource
$ch = curl_init();

// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, 'http://whois.arin.net/rest/ip/' . $ip);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json'));

// execute
$returnValue = curl_exec($ch);

// close cURL resource, and free up system resources
curl_close($ch);

$result = json_decode($returnValue);

echo <<<END
<pre>
Handle: {$result->net->handle->{'$'}}
Ref: {$result->net->ref->{'$'}}
Name: {$result->net->name->{'$'}}
echo "OrgRef: {$result->net->orgRef->{'@name'}}";
КОНЕЦ; // eof

https://www.arin.net/resources/whoisrws/whois_api.html

2 голосов
/ 01 сентября 2011

Иногда поля меняются, так что это улучшение вышеуказанного поста.

<body> 
    <table align="center">

<?
 $ip=$_SERVER['REMOTE_ADDR'];
 $url=file_get_contents("http://whatismyipaddress.com/ip/$ip");
 preg_match_all('/<th>(.*?)<\/th><td>(.*?)<\/td>/s',$url,$output,PREG_SET_ORDER);
 for ($q=0; $q < 25; $q++) {
    if ($output[$q][1]) {
        if (!stripos($output[$q][2],"Blacklist")) {
            echo "<tr><td>".$output[$q][1]."</td><td>".$output[$q][2]."</td></tr>";

        }
    }
}
?> 
    </table>
</body> 
1 голос
/ 16 февраля 2019

Если все эти ответы бесполезны, вы можете попробовать API.

1. http://extreme -ip-lookup.com / json / [IP АДРЕС ЗДЕСЬ]

ПРИМЕР: http://extreme -ip-lookup.com / json / 106.192.146.13

2. http://ip -api.com / json / [IP АДРЕС ЗДЕСЬ]

ПРИМЕР: http://ip -api.com / json / 113.14.168.85

как только это сработает, не забудьте конвертировать JSON в PHP.

1 голос
/ 25 ноября 2014

Я пытался исправить ответ Рама Кумара, но всякий раз, когда я редактировал их пост, меня временно блокировали, а мои изменения игнорировали. (Что касается того, почему, я не знаю, это была моя первая и единственная редакция, которую я когда-либо делал на этом сайте.)

Начиная с его поста, его код больше не работает из-за изменений веб-сайта, и Администратор осуществляет базовые проверки ботов (проверяя заголовки):

<?php
$IP = $_SERVER['REMOTE_ADDR'];

$User_Agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0';
$Accept = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
$Accept_Language = 'en-US,en;q=0.5';
$Referer = 'http://whatismyipaddress.com/';
$Connection = 'keep-alive';

$HTML = file_get_contents("http://whatismyipaddress.com/ip/$IP", false, stream_context_create(array('http' => array('method' => 'GET', 'header' => "User-Agent: $User_Agent\r\nAccept: $Accept\r\nAccept-Language: $Accept_Language\r\nReferer: $Referer\r\nConnection: $Connection\r\n\r\n"))));

preg_match_all('/<th>(.*?)<\/th><td>(.*?)<\/td>/s', $HTML, $Matches, PREG_SET_ORDER);

$ISP = $Matches[3][2];
$City = $Matches[11][2];
$State = $Matches[10][2];
$ZIP = $Matches[15][2];
$Country = $Matches[9][2];
?>
<body>
    <table align="center">
        <tr><td>ISP :</td><td><?php echo $ISP;?></td></tr>
        <tr><td>City :</td><td><?php echo $City;?></td></tr>
        <tr><td>State :</td><td><?php echo $State;?></td></tr>
        <tr><td>Zipcode :</td><td><?php echo $ZIP;?></td></tr>
        <tr><td>Country :</td><td><?php echo $Country;?></td></tr>
    </table>
</body>

Обратите внимание, что достаточно указать пользовательский агент, и дополнительные заголовки, скорее всего, не требуются, я просто добавил их, чтобы запрос выглядел более аутентично.

1 голос
/ 18 марта 2010

Вы не можете полагаться ни на IP-адрес, ни на имя хоста, чтобы знать, кто-то использует интернет-провайдера. На самом деле он может вообще не использовать интернет-провайдера, или он может войти через VPN-соединение к месту работы, оттуда через другой VPN или удаленный рабочий стол, к хостинговой службе на полпути по всему миру, и подключиться к вам с этого , IP-адрес, который вы получите, будет тот, который вы указали на последней удаленной машине или на каком-то брандмауэре, за которым стоит эта машина, который может быть где-то еще.

1 голос
/ 13 мая 2009

GeoIP поможет вам в этом: http://www.maxmind.com/app/locate_my_ip

Существует библиотека php для доступа к данным geoip: http://www.maxmind.com/app/php

Внимание, вам нужно установить geoip db на вашем компьютере, чтобы все заработало:)

1 голос
/ 13 мая 2009

перейти к http://whatismyip.com

это даст вам ваш интернет-адрес. Подключите этот адрес в базу данных на http://arin.net/whois

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...