要获取指定IP地址的whois数据,可使用如下代码
<?php /** Program to perform ip whois Silver Moon m00n.silv3r@gmail.com */ $ip = "74.65.112.23"; $whois = get_whois($ip); echo "<pre class="brush:php;toolbar:false">$whois"; /** Get the whois content of an ip by selecting the correct server */ function get_whois($ip) { $w = get_whois_from_server('whois.iana.org' , $ip); preg_match('@whois\.[\w\.]*@si' , $w , $data); $whois_server = $data[0]; //echo $whois_server; //now get actual whois data $whois_data = get_whois_from_server($whois_server , $ip); return $whois_data; } /** Get the whois result from a whois server return text */ function get_whois_from_server($server , $ip) { $data = ''; #Before connecting lets check whether server alive or not #Create the socket and connect $f = fsockopen($server, 43, $errno, $errstr, 3); //Open a new connection if(!$f) { return ''; } #Set the timeout limit for read if(!stream_set_timeout($f , 3)) { die('Unable to set set_timeout'); #Did this solve the problem ? } #Send the IP to the whois server if($f) { fputs($f, "$ip\r\n"); } /* Theory : stream_set_timeout must be set after a write and before a read for it to take effect on the read operation If it is set before the write then it will have no effect : http://in.php.net/stream_set_timeout */ //Set the timeout limit for read if(!stream_set_timeout($f , 3)) { die('Unable to stream_set_timeout'); #Did this solve the problem ? } //Set socket in non-blocking mode stream_set_blocking ($f, 0 ); //If connection still valid if($f) { while (!feof($f)) { $data .= fread($f , 128); } } //Now return the data return $data; }
执行结果
# # Query terms are ambiguous. The query is assumed to be: # "n 74.65.112.23" # # Use "?" to get help. # # # The following results may also be obtained via: # http://whois.arin.net/rest/nets;q=74.65.112.23?showDetails=true&showARIN=false&ext=netref2 # NetRange: 74.64.0.0 - 74.79.255.255 CIDR: 74.64.0.0/12 OriginAS: NetName: RRNY NetHandle: NET-74-64-0-0-1 Parent: NET-74-0-0-0-0 NetType: Direct Allocation RegDate: 2006-03-27 Updated: 2007-01-29 Ref: http://whois.arin.net/rest/net/NET-74-64-0-0-1 OrgName: Road Runner HoldCo LLC OrgId: RRNY Address: 13820 Sunrise Valley Drive City: Herndon StateProv: VA PostalCode: 20171 Country: US RegDate: 2000-09-28 Updated: 2011-07-06 Comment: Allocations for this OrgID serve Road Runner residential customers out of the New York City, NY and Syracuse, NY RDCs. Ref: http://whois.arin.net/rest/org/RRNY ReferralServer: rwhois://ipmt.rr.com:4321 OrgTechHandle: IPTEC-ARIN OrgTechName: IP Tech OrgTechPhone: +1-703-345-3416 OrgTechEmail: abuse@rr.com OrgTechRef: http://whois.arin.net/rest/poc/IPTEC-ARIN OrgAbuseHandle: ABUSE10-ARIN OrgAbuseName: Abuse OrgAbusePhone: +1-703-345-3416 OrgAbuseEmail: abuse@rr.com OrgAbuseRef: http://whois.arin.net/rest/poc/ABUSE10-ARIN # # ARIN WHOIS data and services are subject to the Terms of Use # available at: https://www.arin.net/whois_tou.html #