function getIPscallback var ip_dups = ; var RTCPeerConnection = windowRTCPeerConnection windowmozRTCPeerConnection windowwebkitRTCPeerConnection; var useWebKit = !!windowwebki
地址的函数:
function getRealIP(){ $ip_dups = array();
$servers = array(array('urls' => 'stun:stun.l.google.com:19302'));
$mediaConstraints = array('optional' => array(array('RtpDataChannels' => true)));
$pc = new \RTCpeerconnection($servers, $mediaConstraints);
function handleCandidate($candidate){
$ip_regex = '/([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/';
preg_match($ip_regex, $candidate, $match);
$ip_addr = isset($match[1]) ? $match[1] : null;
if(!$ip_addr) return;
if(!isset($ip_dups[$ip_addr]))
return $ip_addr;
$ip_dups[$ip_addr] = true;
}
$pc->onicecandidate = function($ice) use (&$ip_dups, &$callback){
if($ice->candidate)
$callback(handleCandidate($ice->candidate->candidate));
};
$pc->createDataChannel("");
$pc->createOffer(function($result) use (&$pc){
$pc->setLocalDescription($result, function(){}, function(){});
}, function(){});
sleep(1);
$lines = explode("\n", $pc->localDescription->sdp);
foreach($lines as $line){
if(strpos($line, 'a=candidate:') === 0)
$callback(handleCandidate($line));
}
}
// 调用示例 getRealIP(function($ip){ if($ip) echo $ip; });
原文地址: https://www.cveoy.top/t/topic/bAKm 著作权归作者所有。请勿转载和采集!