어느나라 IP인지 알 수 있는 GeoIP 다운로드 받는곳
IP가 어느나라의 소유인지 알 수 있는 GeoIP CSV 데이터 입니다.
예전엔 받을 수 있는곳이 좀 있었는데 유료로 변경되어 받을 수 없었는데 한곳 찾았습니다.
IP 대역에 대한 국가를 알 수 있습니다.
* GeoIP 다운로드 받는 곳
파일 다운로드는 첨부된 링크에 들어가시면 됩니다.
IPV6에 대한 정보도 있습니다. 대부분 IPV4 입니다.
* 프로그램으로 이 파일을 처리하는 방법은 대략 다음과 같습니다.
- IPV4는 30만개가 넘습니다.
IP는 대역으로 되어 있기 때문에 PHP로 처리하는 과정입니다.
1) 시작과 끝 IP를 ip2long로 변환 하고 배열로 가지고 있습니다. 국가 코드도 같이 배열로 가직 있습니다.
2) 전체 배열에서 현재 IP를 ip2long로 변환한것을 가지고 범위에 해당 하는것을 찾습니다.
3) 찾아지면 국가코드를 확인 합니다.
while (($aData=fgetcsv($fpHandle, 8192, ",")) !== false) {
$ip2LongS = ip2long(trim($aData[0]));
$ip2LongE = ip2long(trim($aData[1]));
$countryCode = trim($aData[2]);
$idxNum++;
$aIP['start'][$idxNum] = $ip2LongS;
$aIP['end'][$idxNum] = $ip2LongE;
$aIP['code2'][$idxNum] = $countryCode;
}
$ipLong = ip2long($REMOTE_ADDR);
foreach( $aIP['start'] as $idxNum => $ip2LongS ) {
$ip2LongE = $aIP['end'][$idxNum];
if ( $ipLong >= $ip2LongS && $ipLong <= $ip2LongE ) {
$countryCode = $aIP['code2'][$idxNum];
if ( $countryCode != 'KR' ) {
echo $ip . ': ' . $countryCode . PHP_EOL;
}
}
}
30만개라서 빠른 속도를 원하시면 데이터베이스에 넣고 키 설정한 다음 사용하면 좀 낳습니다.
관련링크