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:
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
X
Mit is takar a rövidítés?
RIPE NCC: Réseaux IP Européens Network Coordination Centre
magyarul: Európai IP Hálózatok Hálózati Koordinációs Központja
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ázishozzá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:
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:
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:
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ó?
Ez a távolság tökéletesen alkalmas arra, hogy felhasználónkhoz közel eső
helyeket, szolgáltatásokat, üzleteket, vagy éppen felhasználókat ajánljunk, vagyis
weblapunk tartalmát hozzáigazítsuk látogatónk földrajzi helyzetéhez. Ezt számos
oldalon felhasználóként mi magunk is tapasztalhattuk, tapasztaljuk.
A földrajzi hely ilyen szerényebb pontosságú meghatározása is elegendő lehet arra,
hogy regionális, vagy területi alapú statisztikát készíthessünk látogatóink
pozíciójáról. Ennek köszönhetően pedig akár saját szolgáltatásainkat is
területspecifikusan fejleszthetjük, illetve célzott marketingtevékenységünk
hatékonyságát ellenőrizhetjük.
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ó:
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!
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:
A böngésző régebbi, és nem ismert még benne a funkció.
A felhasználó nem engedélyezi a helymeghatározási kérelmet.
A böngészőben alapértelmezés szerint tiltva van a helymegosztás.
A helyadatok egyéb külső okok miatt nem érhetőek el.
Kérelem-időtúllépés történik.
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:
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:
2021-03-20 11:40Dezső
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 :)