Merhaba,
Elimdeki bazı IP numaralarının (web sitelerime sık uğrayan numaralar) hangi ülkelere ait olduğunu bulmak istiyorum.
Bunu manuel olarak yapmak oldukça yorucu.
IP numaralarının hangi ülkelere ait olduğunu sorgulayacağım basit bir sistem var mı?
Yaptığım araştırmalarda geoip konusu öne çıkıyor.
Delphide kullanabileceğim ücretsiz geoip veritabanları bulabilir miyim?
Bu konuyla daha önce ilgilenmiş arkadaşların önerisi ne olur?
Teşekkürler. İyi çalışmalar.
Hangi IP hangi ülkeye ait
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: Hangi IP hangi ülkeye ait
Yazacağınız bir proje için kaynak mı soruyorsunuz yoksa zaten yazılmış bir tavsiye mi anlayamadım?
... Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!
Mustafa Kemal Atatürk...
Mustafa Kemal Atatürk...
Re: Hangi IP hangi ülkeye ait
İkisi de olabilir.warder yazdı:Yazacağınız bir proje için kaynak mı soruyorsunuz yoksa zaten yazılmış bir tavsiye mi anlayamadım?
Açık kaynak hazır bir çözüm varsa, kullanabilirim elbette.
Eğer çözümü kendim üretmek zorunda kalırsam, yardımcı kaynaklara ve mümkünse bu konuda deneyim sahibi kişilerin yönlendirmelerine ihtiyacım var.
Bu tür konulara yeni girdiğim için, bilgilerim de mozayik gibi parçalı.
Re: Hangi IP hangi ülkeye ait
Zorlu bir çözümü yok. Bir projemde TR ip adreslerini bir kaç ayda bir güncelliyorum öyle kullanıyorlar.
Size kendi kullanımımı ve ip adreslerinin en güncel kaynak adresini vereyim gerisi gelecektir.
Tabi bu adreslerin dünyadaki ip adresi haritalamasıyla ilgili bölgelerden sadece birisi olduğu unutulmamalıdır.

Bizimde içinde bulunduğumuz bölgeye ripe bakıyor. Size ripe bilgilerini veriyorum.
ip blokları en güncel adresi (adresin farklı dizinlerinde aynı dosyayı tarihsel kategoriye göre bulabilirsiniz.):
Hangi ip bloğu kime ait:
Önce de belirttiğim gibi bu bilgilerden sadece güncel TR ip adreslerini ayıklayıp kullanıyorum. Siz tümünü kullanabilirsiniz.
Dosyadaki veri formatı:
Formattan da kolayca görülebileceği gibi tam bir TStringList->Delimiter = '|'; durumu var.
Ben format açıklamasında belirttiğim ip blok başıngıcından adet kadar ip üretip karşılaştırma kolaylığı olması açısından unsigned long türüne çeviriyorum.
Sonra önceden hazırladığım aralıklarla karşılaştırıp kullanıyorum.
Bir (SQLite3) db olarak da değerlendirilebilir.
Normal bir programda kullansaydım öyle yapardım.
Hızlı çalışması gereken bir programda kullandığım için RAM da yüklü olmasını tercih ettim.
Delphicesi size kalmış.
Linkler dahil alıntı değildir...
Kolay gelsin...
Size kendi kullanımımı ve ip adreslerinin en güncel kaynak adresini vereyim gerisi gelecektir.
Tabi bu adreslerin dünyadaki ip adresi haritalamasıyla ilgili bölgelerden sadece birisi olduğu unutulmamalıdır.

Bizimde içinde bulunduğumuz bölgeye ripe bakıyor. Size ripe bilgilerini veriyorum.
ip blokları en güncel adresi (adresin farklı dizinlerinde aynı dosyayı tarihsel kategoriye göre bulabilirsiniz.):
Kod: Tümünü seç
ftp://ftp.ripe.net/pub/stats/ripencc/delegated-ripencc-latest
Kod: Tümünü seç
ftp://ftp.ripe.net/pub/stats/ripencc/membership/
Dosyadaki veri formatı:
Kod: Tümünü seç
ripencc|TR|ipv4|5.2.80.0|2048|20120501|allocated
ripencc -> yönetsel kurum (dünya haritalamasından bahsetmiştim)
TR -> ülke kodu
ipv4 -> ip adres formatı
5.2.80.0 -> ip blok başlangıcı
2048 -> blokta kaç adet ip var
20120201 -> kullanıma açıldığı tarih
allocated -> assigned olana kadar dosyadan okunabilir.
assigned kısmı henüz kullanılmayan grup dosyada 51000. satır civarında başlıyor.
Ben format açıklamasında belirttiğim ip blok başıngıcından adet kadar ip üretip karşılaştırma kolaylığı olması açısından unsigned long türüne çeviriyorum.
Sonra önceden hazırladığım aralıklarla karşılaştırıp kullanıyorum.
Bir (SQLite3) db olarak da değerlendirilebilir.
Normal bir programda kullansaydım öyle yapardım.
Hızlı çalışması gereken bir programda kullandığım için RAM da yüklü olmasını tercih ettim.
Kod: Tümünü seç
//---------------------------------------------------------------------------
unsigned long ThKanal::IpToInt(UnicodeString usIpAdres)
{
TStringList * sList = new TStringList;
sList->Delimiter = '.';
sList->StrictDelimiter = true;
sList->DelimitedText = usIpAdres;
return ((sList->Strings[0].ToInt() * 256 * 256 * 256) +
(sList->Strings[1].ToInt() * 256 * 256) +
(sList->Strings[2].ToInt() * 256) +
(sList->Strings[3].ToInt()));
}
//---------------------------------------------------------------------------
bool ThKanal::IpYerlimi(UnicodeString usIpAdres)
{ //108-723 satır arası
unsigned long iIp = IpToInt(usIpAdres);
if((iIp >= 100331520) && (iIp <= 100335615)) { return true; }
else if((iIp >= 100597760) && (iIp <= 100614143)) { return true; }
else if((iIp >= 1042087936) && (iIp <= 1042120703)) { return true; }
......
Linkler dahil alıntı değildir...
Kolay gelsin...
En son warder tarafından 27 Ara 2014 08:43 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
... Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!
Mustafa Kemal Atatürk...
Mustafa Kemal Atatürk...
Re: Hangi IP hangi ülkeye ait
Merhaba warder,
Verdiğin bilgiler için çok teşekkür ediyorum.
Ben bu bilgileri şimdilik sadece kendi bilgisayarımda kullanacağım. Belki yerel mysql üzerine aktarırım.
Ancak düşündüğüm çalışmada hız hiç önemli değil. O yüzden sadece text search bile yeterli olabilir.
Ama önce mekanizmayı kavramam gerekecek.
Başlangıç için çok güzel bir kaynak. Tekrar teşekkür ediyorum.
İyi çalışmalar.
Verdiğin bilgiler için çok teşekkür ediyorum.
Ben bu bilgileri şimdilik sadece kendi bilgisayarımda kullanacağım. Belki yerel mysql üzerine aktarırım.
Ancak düşündüğüm çalışmada hız hiç önemli değil. O yüzden sadece text search bile yeterli olabilir.
Ama önce mekanizmayı kavramam gerekecek.
Başlangıç için çok güzel bir kaynak. Tekrar teşekkür ediyorum.
İyi çalışmalar.