2009-05-13 41 views
9

Làm cách nào để tìm nhà cung cấp ISP của một người đang xem trang PHP?Làm cách nào để truy xuất ISP của khách truy cập thông qua PHP?

Có thể sử dụng PHP để theo dõi hoặc hiển thị nó không?

Nếu tôi sử dụng một cái gì đó như sau:

gethostbyaddr($_SERVER['REMOTE_ADDR']); 

nó sẽ trả về địa chỉ IP của tôi, chứ không phải tên máy chủ hoặc ISP của tôi.

Trả lời

0

Tôi nghĩ bạn cần sử dụng một số dịch vụ của bên thứ ba (Có thể là dịch vụ web) để tra cứu IP và tìm nhà cung cấp dịch vụ.

9

này có vẻ là những gì bạn đang tìm kiếm, nó sẽ cố gắng để trả lại tên máy đầy đủ nếu có thể:

http://us3.php.net/gethostbyaddr

+0

đây là những gì tôi đang tìm kiếm .. Cảm ơn rất nhiều –

+0

Đã không nhận được yo u .. Làm thế nào để bạn tìm thấy nhà cung cấp dịch vụ bằng cách sử dụng này? Hãy làm rõ nếu có thể –

+0

đợi .. nó trả lại địa chỉ IP của tôi ... đây không phải là tôi muốn –

8

Không có gì trong các tiêu đề HTTP để chỉ ra ISP một người sử dụng là đến từ, vì vậy câu trả lời là không, không có hàm dựng sẵn PHP nào sẽ cho bạn biết điều này. Bạn sẽ phải sử dụng một số loại dịch vụ hoặc thư viện để ánh xạ IP tới mạng/ISP.

0

truy cập http://whatismyip.com

điều này sẽ cung cấp cho bạn địa chỉ internet của bạn. Cắm địa chỉ vào cơ sở dữ liệu tại http://arin.net/whois

+0

Và điều đó liên quan đến việc thực hiện nó thông qua PHP như thế nào, chính xác? –

+2

Tôi không thấy phương pháp tốt hơn của bạn bằng cách sử dụng php Chad. Bạn có thể sử dụng curl, hoặc một whois - nhiều tùy chọn nhưng nếu bạn không biết về arin hoặc whois các thông tin tôi cung cấp là hữu ích. – Eddy

1

Bạn không thể dựa vào địa chỉ IP hoặc tên máy chủ lưu trữ để biết ai đó đang sử dụng ISP. Trên thực tế, anh ta có thể không sử dụng ISP hoặc có thể đăng nhập thông qua kết nối VPN tới nơi làm việc của mình, từ đó sử dụng VPN hoặc máy tính từ xa khác cho dịch vụ lưu trữ trên toàn thế giới và kết nối với bạn cái đó. Địa chỉ ip bạn nhận được sẽ là địa chỉ từ máy cuối cùng từ xa hoặc từ một số tường lửa mà máy đang ngồi phía sau có thể ở một nơi khác nữa.

11

Bạn có thể nhận được tất cả những thứ đó từ mã khác PHP sau.,

<?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> 
+1

Không biết tại sao điều này không được thừa nhận. Hoạt động tuyệt vời! Cảm ơn. – bozdoz

+32

Điều này vi phạm [TOS] (http://whatismyipaddress.com/terms-of-use): "Bạn không được sử dụng tập lệnh, tác nhân, ứng dụng hoặc truy vấn trang web này theo cách tự động mà không có sự cho phép trước bằng văn bản." –

+0

Sau đó, thay thế cho nó là gì @JeffWinkworth. Bạn có thể vui lòng nói. –

2

Đôi khi lĩnh vực thay đổi, vì vậy đây là sự cải thiện của bài viết ở trên.

<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

Đây là cách thích hợp để tìm một isp từ trang web hoặc ip.

<?php 
$isp = geoip_isp_by_name('www.example.com'); 
if ($isp) { 
    echo 'This host IP is from ISP: ' . $isp; 
} 
?> 
+0

geoip_isp_by_name() Chức năng này hiện chỉ có sẵn cho người dùng đã mua một GeoIP ISP Edition thương mại. – Ingo

+0

GeoIP là một thư viện trả phí, mã nguồn của nó được đánh giá cao để tránh phân phối –

0

Tôi đã cố gắng sửa câu trả lời của Ram Kumar nhưng bất cứ khi nào tôi chỉnh sửa bài đăng, tôi sẽ tạm thời bị cấm và thay đổi của tôi bị bỏ qua. (Về lý do tại sao, tôi không biết, đó là bản chỉnh sửa đầu tiên và duy nhất của tôi mà tôi từng thực hiện trên trang web này.)

Từ bài của mình, mã của mình không hoạt động nữa do sự thay đổi trang web và quản trị thực hiện kiểm tra bot cơ bản (kiểm tra các tiêu đề):

<?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> 

Lưu ý rằng chỉ cung cấp một user-agent có lẽ sẽ đủ và các tiêu đề bổ sung có nhiều khả năng không nhất thiết, tôi chỉ cần thêm chúng để làm cho yêu cầu trông chân thực hơn.

2

Tại sao không sử dụng API REST của ARIN.

<?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'}}"; 
</pre> 
END; 

// eof 

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

Các vấn đề liên quan