Eszköztár
113 Kezdőlap - Webszerkesztés - PHP - IP-cím
ujdomainek.hu

Az IP-cím

mely mindent elárul

Jegyzet

Ahogyan azt már a $_SERVER című oldalon is megnéztük, ez a PHP változó számos információ lekérdezésére ad lehetőséget - így például a  $_SERVER['REMOTE_ADDR']  kifejezéssel a felhasználó IP-címének meghatározására is. Márpedig weboldalüzemeltetőként a részletesebb látogatói sztatisztikák készítéséhez a látogatóink IP-címének nyomon követése meglehetősen fontos feladat lesz PHP programjaink során. Az említett kifejezés alapján az Ön IP-címe:

44.200.94.150

Az IP-címek rendszeréről ezek a Wikipedia oldalak kínálnak alapvető ismereteket:
Mi derül ki a fenti IP-címből?

Nyilván pusztán a számokból nem sok minden. De a számok alapján meg lehet tudni, honnan netezünk - ami jelentheti az internetszolgáltatónkat, de jelentheti akár a földrajzi helyünket is. A folytatásban ezen adatok lekérdezési lehetőségeit fogjuk megvizsgálni. Fontos azonban hangsúlyozni, hogy nem feltétlenül működik az alábbi módszerek mindegyike egy adott IP-cím vonatkozásában. Ezt mindenképpen kalkuláljuk bele a kísérletezésbe, tapasztalatszerzésbe.

1. A PHP gethostbyaddr() függvénye

A  gethostbyaddr()  egy meglehetősen egyszerű függvény: a bemenetként adott IP-címből megmondja az internet-kiszolgáló szerver nevét. A visszakapott szervernévből gyakran következtetni lehet az internetszolgáltató cég, vagy éppen a szervert üzemeltető intézmény nevére. Ám az is előfordulhat, hogy a szervernév nem túl informatív, vagy éppen nincs is, és hiányában ezért magát a bemeneti IP-címet kapjuk vissza eredményül. Az Ön fent jelzett IP-címére a függvény az alábbi választ adja:

ec2-44-200-94-150.compute-1.amazonaws.com

A függvény élő internetkapcsolatot igényel, vagyis lokális szerveren (AppServ, XAMPP, stb.) nem fog működni.

2. A RIPE NCC adatbázis

Mit is takar a rövidítés? Egész Európában, így Magyarország esetén is ez a szervezet tartja nyilván az IPv4 és IPv6 címek kiosztását, vagyis az egyes IP-címekhez, pontosabban címtartományokhoz rendelt internethasználó cégek és intézmények nevét és adatait. A nyilvántartás kezelésének része a keresővel ellátott, ingyenes, és nyilvános adatbázis­hozzáférés biztosítása is, mely a weboldalukon keresztül érhető el. A megnyíló oldalon használja a jobb felső sarokban található keresőt, vagy a közvetlen adathozzáférésért kattintson az alábbi linkre:
https://apps.db.ripe.net/db-web-ui/query?searchtext=44.200.94.150
Mivel a fenti link eredményének feldolgozása - vagyis csupán néhány, kiemelt adat megjelenítése a sok mindenből - egy saját honlapon nem igazán volna lehetséges, ezért ugyanezen adatokat a RIPE oldala JSON formában is hozzáférhetővé teszi. Az Ön jelenlegi internetkapcsolatáról az alábbi link tartalma mesél:
https://rest.db.ripe.net/search.json?query-string=44.200.94.150
Ez utóbbi link, és az ott használható JSON kód alapján természetesen már annak sincsen akadálya, hogy akár egy saját IP-cím ellenőrző felületet alakítsunk ki honlapunkon, vagy éppen oldalunk látogatóiról összetettebb statisztikát vezessünk. Ráadásul ez utóbbi megfelelő adatkezelési nyilatkozat mellett még csak jogszabályba sem ütközik - ám statisztikai szempontból kifejezetten érdekes lehet.

Más kérdés, hogy mit tudunk meg az IP-címből és a szolgáltató nevéből. Mert a konkrét felhasználó személye ebből valóban nem derül ki. Legalábbis számunkra, webhely üzemeltetők számára biztosan nem. Ám könnyű belátni, hogy kritikus esetben pl. egy nyomozóhatóság rendelkezik azzal a jogkörrel, mellyel visszamenőleg is kikérheti az internetszolgáltatótól, hogy egy adott időpontban mely szerződött felhasználójuk számára volt kiadva a kérdéses IP-cím, és ez már kellően sokat eláruló információ. Vagyis meglehetősen hiú ábránd azt gondolni, hogy az interneten arctalanok, és anonimek lennénk.

De hogyan tudja például a Google, hogy honnan internetezem?

Eléggé szembeötlő, hogy megnyitva a Google Maps oldalt, a kezdőtérkép közepe szinte mindig a mi éppen aktuális földrajzi tartózkodási helyünk lesz. Mobiltelefon esetén még csak-csak betudjuk ezt a telefonban rejlő GPS-nek, de mi a helyzet asztali számítógépek esetén? Kiderül a videóból.

3. Melissa

Mint ahogyan tehát a fenti videó is rávilágít, egy Google méretű cég számára - a mobiltelefonoknak köszönhetően - nem kihívás felépíteni egy irgalmatlan nagy méretű adatbázist a világ wifi routereinek földrajzi pozícióiról, ami alapján pedig már a routerekre kapcsolódó asztali gépek helyzete sem lesz kérdéses. De vajon vannak-e olyan adatszolgáltató cégek, amik hasonló adatbázissal rendelkeznek, és esetleg üzleti alapon még hozzáférést is biztosítanak ehhez az adatbázishoz? Nyilvánvalóan IGEN a válasz, hiszen ez egy technikailag megvalósítható, és legálisan kiaknázható üzleti lehetőség.

E szolgáltatási területen az egyik legjobb cég a világon a Melissa Data Corporation. A kaliforniai cég 1985. óta létezik, és eredetileg hagyományos postai tevékenységhez kapcsolódtak szolgáltatásai, melyek az internet elterjedésével párhuzamosan bővültek az online világ irányába is. Ez utóbbi irány egyik terméke az IP-címből földrajzi helyet mutató felületük:
https://www.melissa.com/v2/lookups/iplocation/ip/
Az oldal használata a lekérdezések számától függően ingyenes, vagy fizetős. Egy felhasználói pontról kipróbálásként havonta mindössze 10 lekérdezést lehet indítani. Regisztráció esetén azonban ingyen kapunk 1000 kreditet. Az oldalon ezekkel a kreditekkel történik a lekérdezések utáni elszámolás. 1 lekérdezés 2 kreditbe kerül . Ha nagyobb mennyiségben gondolkodunk, akkor további krediteket vásárolhatunk. Az aktuális tarifa szerint 1000 kredit 3 dollárba kerül. Átváltva tehát egy "fizetős" lekérdezés nagyjából 2 Ft-ért valósítható meg.

Mire lehet mindez jó? Milyen pontossággal működik?

Az adatbázisból kapott GPS koordináták nem arra szolgálnak, hogy néhány méteres pontossággal be tudjuk lőni a felhasználónk pozícióját. Ennyire nem megbízható ez a rendszer. A kapott földrajzi hely akár 5-10 km távolságra is eshet az adott IP-címmel működő eszköz tényleges helyétől. De akkor mire lehet mégis jó? Természetesen mindehhez a Melissa.com is kínál API-t, mellyel a fentiekhez szükséges adatgyűjtés automatizáltan megvalósítható:
https://www.melissa.com/v2/lookups/iplocation/ip/?fmt=json&ip=44.200.94.150
Az API használatára pontosan ugyanazok a korlátok és lehetőségek vonatkoznak, mint a korábban leírt webes felületű lekérdezésekre. Vagyis ha a fenti linkre kattintva nem JSON kódot kapunk eredményül, akkor minden bizonnyal kimerítettük a havi 10 ingyenes, regisztráció nélkül lekérdezési keretünket. Ekkor tehát jöhet a regisztráció.

4. HTML Geolocation

A korábbi pontokban említett közvetlen adatbázishozzáféréseken túl a javascript is kínál lehetőséget a helymeghatározásra. Az erre szolgáló objektum neve a geolocation, mely a böngésző window nevű legfőbb objektumának elemeként létező navigator objektumának az eleme:
window.navigator.geolocation
vagy rövidebben is elérhető módon
navigator.geolocation
Mivel a földrajzi hely adatainak lekérése veszélyezteti az adatvédelmet, ezért a pozíció csak akkor érhető el, ha a felhasználó ezt jóváhagyja. A jóváhagyást a böngésző fogja igényelni - ezzel nekünk webfejlesztőként nincs dolgunk. Jóváhagyás esetén a böngésző az elérhető legjobb módszer kiválasztásával határozza meg a felhasználó eszközének helyadatait. Ez lehet elérhető GPS, vagy éppen WiFi alapú helymeghatározás is.

Próbálja ki a funkció működését az alábbi felületen!
Az Ön tartózkodási helye

A helyadatok lekéréséhez nyomja meg a gombot!

Működik? Nem működik?

Egyáltalán nem biztos, hogy kapunk vissza adatokat. A HTML Geolocation működése ugyanis jó pár problémába ütközhet. Ilyen problémák lehetnek például: Mennyire működik pontosan?

A tapasztalatok szerint a HTML Geolocation pontosságáról is kb. az mondható el, mint a Melissa adatbázisát használó helymeghatározás pontosságáról: akár 5-10 km is lehet a megjelölt távolság a valósághoz képest.

Hogy néz ki a program JavaScriptben megírva?

A helymeghatározó program forráskódját az alábbi képre kattintva láthatja:
A program lelke a helyadatlekeres() függvényben található alábbi sor:
navigator.geolocation.getCurrentPosition( vaneredmeny, nincseredmeny )
Itt a getCurrentPosition() függvénynek mindkét paramétere valójában egy-egy függvényhívás. Ha sikerrel jár az aktuális pozíció lekérése, akkor a vaneredmeny() függvény kerül meghívásra, mely a pozicio nevű változó megfelelő mezőiben fogja látni a GPS koordinátákat. Sikertelen helyadatlekérés esetében pedig a nincseredmeny() függvényt hívjuk meg, mely pedig a hiba nevű változóban fogja megtalálni a hiba okának kódját.

És ha JavaScript, akkor a weboldal üzemeltetőjeként mi honnan fogjuk látni a koordinátákat?

Nos igen. Ha ezt is szeretnénk, akkor szükséges lehet majd a programot kiegészíteni egy szerveroldali függvényhívással, ami a szerveren is eltárolja az adatokat.

5. Tor Browser

Finoman szólva is felfedezhető némi komolytalanság abban, hogy a HTML Geolocation használata esetén a felhasználónak bele kell egyeznie a helyadatainak kiadásába, miközben szerveroldalon az IP-címét - és nem mellesleg még azon kívül is gyakorlatilag bármit - gond nélkül le lehet kérdezni a felhasználó gépéről. Pedig hát nincs ebben semmi furcsa: a webprogramozó és a jogász szakma két külön terület.

De mi van abban az esetben, ha - felhasználóként - csakugyan szeretnénk minél inkább rejtve maradni a szerverek és a kíváncsi weboldalüzemeltetők, tartalomszolgáltatók, vagy éppen a hatóság előtt? Ebben az esetben érdemes lehet kipróbálni egy másik böngészőt, a Tor Browsert.

A böngésző egyik sajátossága, hogy - anonimitásunk megőrzésére való törekvése okán - kifelé nem a valós IP-címünket mutatja. Emellett természetesen még számtalan már technikát is alkalmaz a cél érdekében, ám az ezekkel járó előnyök és hátrányok feltárása már nem célja e jelen oldalnak. Érdeklődők számára azonban kiindulásként az alábbi linkek mindenképpen ajánlhatóak:
előző oldal random oldal következő oldal


Eddig 1 hozzászólás van a témához:

2021-03-20 11:40 Dezső Azt gondolom kimerítő részletességű és sok gyakorlati segítséget adó bejegyzés lett! Szívesen látnák hasonló részletességet a többi oldalon is :)




Új hozzászólás:
E-mail cím:


Erre a címre küldjük ki a hozzászólás jóvá- hagyásához szükséges linket. Az e-mail címet sehol nem tesszük közzé.

Név:


Ez a név fog megjelenni az Ön hozzászólásai mellett.

Mennyi tizenöt + hét?
Számjegyekkel írja be!



Ez a robotok beírása elleni védelem miatt szükséges ellenőrzés.


© infojegyzet.hu, 2021. március