2013-09-04 18 views
5

Istnieje wiele programów, które udostępniają przybliżone informacje o lokalizacji na podstawie adresu IP. Czytałem, że jest to możliwe, ponieważ adresy IP są przypisywane w blokach do konkretnych lokalizacji, a organizacje takie jak amerykański rejestr numerów internetowych zarządzają informacjami o tym, gdzie są dystrybuowane. Oprogramowanie geolokalizacyjne zapytuje o ich tabele.Czy istnieje usługa lub procedura, która może wygenerować adres IP, gdy zostanie podana lokalizacja?

Próbuję jednak przejść w drugą stronę. Chciałbym wiedzieć, czy istnieje jakikolwiek dostępny sposób dostarczenia lokalizacji (za pomocą kodu pocztowego lub kodu DMA) i wygenerowania przykładowego adresu IP, który znajduje się w tej lokalizacji. Moje wyszukiwanie online okazało się bezowocne: czy istnieje usługa online, która to robi, czy też metoda rozpowszechniania adresów IP odbywa się za pomocą procesu, który może zostać zdekonstruowany w celu renderowania adresu IP z uwzględnieniem tej informacji o lokalizacji?

+0

Jeśli nie chcesz zagłębiać się w szczegóły, możesz użyć XKCD [mapa internetu] (http://xkcd.com/195/). Możesz zrobić program, który z danej lokalizacji da Ci łatwo losowy adres IP. – Renan

+0

Czy próbujesz osiągnąć to za darmo? (Nie próbuję sprzedawać moich usług!) – user2588667

Odpowiedz

3

Mam dla ciebie rozwiązanie. Najpierw podkreślę kroki na wysokim poziomie.


(1) Pobierz bezpłatne dane, które łączą blok adresów IP z kodem pocztowym. (odwrotność tego, co chcesz).

(2) Po prostu zapytaj bazę danych o kod pocztowy i wybierz dowolny adres IP w "prawidłowym zakresie" dla tego kodu pocztowego w pobranej tabeli.


Tak na przykład, chciał prawidłowy adres IP dla Chicago, IL 60657, można odszukać poprawny zakres adresów IP dla 60657 i wybrać jeden!

W dół do szczegółów teraz ... przejdź do http://dev.maxmind.com/geoip/legacy/geolite/ przewiń do dołu i pobierz Geolite City. Jest dostarczany z dwoma plikami CSV, które prawdopodobnie będziesz chciał zaimportować do jakiejś relacyjnej bazy danych. Jedna tabela mapuje identyfikator lokalizacji do kodu pocztowego. Druga tabela odpowiada identyfikatorowi lokalizacji do prawidłowego zakresu IP.

Jeśli więc chcesz wymyślić poprawny adres IP dla kodu pocztowego 60657, wyszukaj identyfikator lokalizacji dla 60657, a następnie użyj drugiej tabeli, aby sprawdzić prawidłowy zakres IP dla tego identyfikatora lokalizacji.

Jedną z rzeczy, o których należy pamiętać, jest to, że ilekroć masz do czynienia z zakresami adresów IP, nubmery są dziesiętne, tj. I.E 16777471 zamiast 103,4.441.1122 (fałszywy przykład). Aby konwertować notację dziesiętną i notację adresu IP oraz odwrotnie, użyj formuł na tej stronie https://sites.google.com/site/followyourheart10/technical-section/ip-address-notations-conversion.

Powodzenia!

+0

Dziękuję. Korzystając z bloków GeoLiteCity widzę dwa wiersze odpowiednio o nazwie startIpNum i endIpNum. Nie rozumiem, jak przekonwertować dowolną ich kombinację na adres IP. Opierając się na strukturze IP, domyślam się, że to tylko pierwsze trzy liczby i ostatnie trzy liczby. Ale w jaki sposób mogę użyć tego w zapytaniu o lokalizację? Jeszcze raz dziękuję za tę szczegółową odpowiedź. – 1252748

+0

Oznaczono twoje pytanie jako PHP, więc zakładam, że używasz PHP. PHP ma wbudowaną funkcję "long2ip()", http://php.net/manual/en/function.long2ip.php. Jeśli używasz MySQL, możesz użyć funkcji 'INET_NTOA', http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html#function_inet-ntoa – user2588667

+0

Świetna strategia. Pracowałem jak urok +100 :) – 1252748

Powiązane problemy