Weboldal látogató országának megállapítása mivel?

 ( kumgabor | 2018. február 9., péntek - 11:02 )

Sziasztok!

Egy weboldal látogatóinak országát kell megállapítani a weboldal betöltésekor. Jelenleg a maxmind CSV-jéből generálunk egy adatbázistáblát, és abból állapítjuk meg IP alapján az országot.
A problémák:
- kézzel kell rendszeresen frissíteni
- ipv6-ot nem kezeli
- gyakori a hiba (20% feletti a hibaarány)

Gondolom a whois futtatása minden új látogatónál nem megoldás, mert iszonyat lassú lesz. Ötlet?

Szerk.: egy webáruházról van szó, ahol eltérő termékek/árak/feltételek vannak országonként (a szállítási cím a mérvadó). Nyilván rendeléskor megadja a vevő az országát, és böngészés közben is tud változtatni, de illene jól felismerni.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

mod_geoip, vagy ungyanez php-ba? De 100% soha nem lesz, nem naprakészek az adatbázisok. A fizetős maxmind db jobb lehet az ingyenesnél, naprakészebb.

A mod_geip nálam nagyon ette a RAM-ot. Valaki használja élesben shared hosting környezetben?

Csak erre eléggé overkill, és amúgy sem biztos, hogy neked jó megoldás, de én amúgy is CloudFlare-t használok, és az tud ilyet (beleírja headerbe az országot)

+1 CloudFlare

~~~~~~~~
deb http://deb.uucp.hu/ wheezy yazzy repack

(Ugye azért kell ez, hogy a belgákat belgául, a svájciakat svájciul, az erdélyieket románul üdvözölhesse a program?)

Ha erre kell, akkor felesleges, arra ott az Accept-Language header.

Na most lelőtted a poént...

Ami használhatatlan erre.
Nálam például ami csak lehet, szóljon hozzám angolul (az OS nyelve is angol, minden szoftver, ami csak lehet angol), ezért az Accept-Language legmagasabb priós értéke angol, mégis Magyarországon vagyok.

Az Accept-Language nem mondja meg, hogy hol van a felhasználó, csak azt, hogy milyen nyelven akar tartalmat kapni. Baromira nem ugyanaz a két dolog.

Igazából a következő volt az állítás: ha csak arra kell neki az ország, hogy tudja milyen nyelven beszéljen a felhasználóhoz, akkor rossz úton jár: az ország ismerete se nem szükséges se nem elégséges ehhez.

Szerintem a Firefox inkognitó módban is alapból angolra állítja.


Nem csak az M$ számol furán... A Zinternet lenne ilyen gyors?
65% [62 Sources 1528 kB/6239 kB 24%] 3062 PB/s 0s

épphogy arról van szó h a felhasználó saját nyelvén szóljon hozzá a site.
csak a topiknyitó távolabbról közelítette meg, nem tudván arról h a browser amúgy közli a felh beállított nyelvét.

a "belgákat belgául" gondolom arra utal h a magukat a locale beállítások által belgaként azonosító felhasználókat - legyenek bárhol a világban - azon a beállított nyelven szólítsa meg. (amúgy már van belga nyelv? közel áll a flamandhoz? és "svájci"? az kevert olasz+német+francia+rhétoromán ¼+¼+¼+¼ arányban?)

jobban belegondolva lehet h hozzám hasonlóan persicsb sem kapta el előszörre NevemTeve hsz-ában mutatkozó cinizmust.
gondolok arra hogy csak olyan országokat sorolt fel ahol vagy nincs vagy nem egy nemzeti nyelv van, vagy számottevő nemzetiség. jelezvén hogy az ország alapú nyelv-heurisztika mennyire pontatlan lehet.

~~~~~~~~
deb http://deb.uucp.hu/ wheezy yazzy repack

Nem, az nem derült ki, hogy arról lenne szó, hogy egy adott nyelven szóljunk a felhasználó felé, a topiknyitó ezt nem írta le.
Még mindig nem derült ki, hogy mi kéne neki? A felhasználó nyelve, a felhasználó jelenlegi pozíciója szerinti ország, vagy a felhasználó állampolgársága?
Ennyit írt: " weboldal látogatóinak országát kell megállapítani "
De ez ugye sokféle módon értelmezhető.

Ország kell, nem nyelv, nem állampolgárság és nem etnikai hovatartozás :-)
A pontos cím nem kell, azt majd megadja később.

--
Kum Gábor
Linux póló | Ciprus | Matek korrepetálás

rendben. szentül meg voltam győződve h a nyelv kell. :)

~~~~~~~~
deb http://deb.uucp.hu/ wheezy yazzy repack

Ma már léteznek ennék szentebb célok is: az indiai látogatót támadó pakisztániakról szóló hírrel kell vendégelni (és viszont), orosz látogatót támadó homokosokról szólókkal, szerbet támadó bosnyákokkal, amerikai támadó mexikóiakkal, magyart... itt lehet a legrugalmasabbnak lenni.

:)))

Nem. A konkrét ország kell.

--
Kum Gábor
Linux póló | Ciprus | Matek korrepetálás

$ curl -qs ipinfo.io/195.70.62.1 | jq
{
  "ip": "195.70.62.1",
  "hostname": "devox.hu",
  "city": "Budapest",
  "region": "Budapest",
  "country": "HU",
  "loc": "47.5000,19.0833",
  "org": "AS5588 T-Mobile Czech Republic a.s.",
  "postal": "1012"
}

t

Szerintem 100% sohasem lesz (VPN,proxy szerver...)
Viszont több dolgot figyelve lehet javítani a hiba arányon.
Language + IP + navigator.geolocation

[Feliratkozás]

Miért kéne kézzel frissíteni?

Jelenleg egyedi megoldás van (még), ami a fenti adatbázist használja. Ezért kell még kézzel frissíteni, és ezért, plusz a magas hibaarányért szeretném cserélni.

--
Kum Gábor
Linux póló | Ciprus | Matek korrepetálás

Mi a cél?
JavaScript segítségével tudsz geolokácót kérdezni - amennyiben a felhasználó engedélyezi-, annál pontosabban semmi nem mondja meg neked, hogy hol van a felhasználó.
A helyzetének az országát, a felhasználó nyelvét, az állampolgárságát, vagy mit akarsz megtudni?

És ha nem engedélyezi, akkor mi legyen a default?

Akkor válassza ki,ha nem akarja elárulni a helyét,és akkor hozzáfér az ő helyéhez tartozó tartalomhoz.


Nem csak az M$ számol furán... A Zinternet lenne ilyen gyors?
65% [62 Sources 1528 kB/6239 kB 24%] 3062 PB/s 0s

Országát.

--
Kum Gábor
Linux póló | Ciprus | Matek korrepetálás

A helyzetének az országát, vagy azt, ahol ő amúgy lakik?
Mondok egy példát: kint vagyok Csehországban és épp Prágában látogatom a kocsmákat, de közben netezek is, de amúgy Magyarországon élek és egy magyar VPN-en keresztül netezek külföldön. Az IP címem szerint Magyarország a helyem, a GPS szerint Csehország.
Mit kell visszaadjon? :)

Szerintem túlbonyolítjuk a kérdést, főleg, hogy ha VPN-en netezel, teljesen mindegy hol vagy valójában. Ugyanígy a roamingoló mobilnet sem érdekes.

Egy webáruháznál különböző árak/termékek/feltételek vannak országonként (a szállítási cím a mérvadó).

--
Kum Gábor
Linux póló | Ciprus | Matek korrepetálás

Ekkor viszont az IP-cím semmiképpen nem jó megoldás neked, hiszen az baromira nem releváns a fizikai helynél.
Marad a JS-es geolokáció, de ahhoz:
1. JS kell, kliensoldali kódot is kell futtatni
2. A felhasználónak engedélyt kell hozzá adnia.
és ha ez megvan, akkor még egy okosítást tudsz csinálni: különféle térképszolgáltatók kínálnak reverse geocoding szolgáltatást.
Azaz koordinátákból címet képeznek a saját címadatbázisuk alapján.
https://developers.google.com/maps/documentation/geocoding/start
https://developer.here.com/documentation/geocoder/topics/what-is.html
https://msdn.microsoft.com/en-us/library/ff701710.aspx

Sok weboldal (légitársaságoknál nagyon gyakori, de máshol is előfordul) úgy kezdi, hogy amikor megérkezel, megkérdezi, hogy melyik az országod és melyik nyelven szeretnéd az oldalt élvezni (esetleg pénznemet is kérdez).
Aztán ezt elteszi egy sütibe, és legközelebb már kérdés nélkül adja a kontent.

Ezt szeretném segíteni egy kis automatizmussal. Kiválasztom, és megkérdezem, hogy stimmel-e.

--
Kum Gábor
Linux póló | Ciprus | Matek korrepetálás

Erre tökéletes a JS geolokáció

Vagy akár csak egy sima dropdown is.

Feldobsz egy status sávot fent, animációval, hogy

we’ve detected you are browsing from Hungary, the prices reflect this. Change Country

Itt az etsy-s példa hasonló:

http://ui-patterns.com/patterns/GoodDefaults

Hasonló van spotify-n:
http://d2r5da613aq50s.cloudfront.net/wp-content/uploads/310935.image1.jpg

Vagy ugye gDolgokban törlésnél pl, de levélküldésnél is akár:

http://static1.businessinsider.com/image/529e7b3d6bb3f7c737dfbba0-659-163/screen%20shot%202013-12-03%20at%207.45.20%20pm.png

80%-os pontosságnál én már simán betervezek egy ilyet, linkre kattintva feljön egy országváltó lista (popover, popup, vagy csak kinyitsz a felületen egy dropdown-t), oszt csókolom. 100%-os pontosság úgysincs.

Ha meg tényleg KELL a 100%, akkor azon userek akiknel nincs cookie kapnak egy intro page-et hogy:

We’ve detected you live in Hungary Updating prices in 10...9...8...7.., seconds

Not in Hungary? Change country instead

Túlbonyolítani tényleg nem kell.