ugrás a tartalomhoz

honnan érkezik a látogató

shamanix · 2010. Aug. 24. (K), 14.10
hogyan lehet megtudni, h melyik url-ről érkezett a látogató? mystat és egyebek hogyan csinaljak az ilyen statokat? nem látok olyan környezeti változot, ami erre utalna.
köszi
 
1

hogyan lehet megtudni, h

kuka · 2010. Aug. 24. (K), 14.20
hogyan lehet megtudni, h melyik url-ről érkezett a látogató?
A Referer HTTP fejlécben küldi el a kliens és a $_SERVER tömbön keresztül érhető el.
nem látok olyan környezeti változot, ami erre utalna.
Mert nem környezeti változó: $_SERVER['HTTP_REFERER'].

Azt, hogy legfennebb statisztikai nyalánksághoz jó, mert könnyen letiltható/hamisítható, gondolom nem kell említsem.
2

$_SERVER['HTTP_REFERER']

shamanix · 2010. Aug. 24. (K), 18.26
aha, és miért nem látom a phpinfo() -ban a többi _SERVER változó mellett a $_SERVER['HTTP_REFERER']-t? gondolom mert nincs éppen értéke.
és mit jelent ha üres az érték? az illető szerver ahonnan jön tiltja?
vagy már a mi szerverünkön van egy ideje? ill meddig őrződik a referer érték? és hogyan lehet hamisitani?
vagy ez böngésző függő?
3

HTTP fejléc

Poetro · 2010. Aug. 24. (K), 19.07
A referer a HTTP fejlécben van. Vegyük például ennek az oldalnak a lekérdezését:
Host: weblabor.hu
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: UTF-8,*
Keep-Alive: 115
Connection: keep-alive
Referer: http://weblabor.hu/koveto
Mint látszik magában a HTTP kérés fejlécében szerepelt a referer. Amennyiben a böngésző ezt nem adja át, akkor az érték ugye nem lesz kitöltve. A szervereknek semmi köze a referer értékéhez, mivel azt a böngésző továbbítja, amennyiben továbbítja. Annak, hogy meddig őrződik meg nincsen értelme. A referer azt mutatja, már amennyiben valós, hogy az illető mely weboldalról érkezett ide. Hamisítani pedig elég egyszerű, mint akár milyen HTTP fejlécet. Böngészők esetén pluginnal, vagy ha nem böngészőt használ az oldal letöltésére akkor a HTTP kliensében (pl: curl, wget) azt állít be amit akar.
4

aha, és miért nem látom a

kuka · 2010. Aug. 24. (K), 19.17
aha, és miért nem látom a phpinfo() -ban a többi _SERVER változó mellett a $_SERVER['HTTP_REFERER']-t? gondolom mert nincs éppen értéke.
Igen, ezért nem szokott megjelenni.
és mit jelent ha üres az érték?
Lévén a böngészők nem szoktak üres értéket küldeni, ha úgy érkezik, azt jelenti valami belepiszkált.
az illető szerver ahonnan jön tiltja?
Szó szerint szerver nem tilthassa, hiszen a szerver a tiéd. A túlsó oldalon a küldő fél a kliens.
vagy már a mi szerverünkön van egy ideje?
Hogyhogy "egy ideje"? A Referer fejléc a kéréssel együtt jön...
ill meddig őrződik a referer érték?
... és a kéréssel együtt szünik meg. Ha az őrzés alatt naplózást értesz, akkor a szervered állításai között nézelődj. Apache esetén például:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog /var/log/httpd/access_log combined
és hogyan lehet hamisitani?
Legtöbbször a böngésző már hamisítva küldheti, vagy útközben a vírus/kémprogram írtó, esetleg a tűzfal lecseréli. Hogy konkrétan hogyan? Hát más adatot küld. A lehetőségek általában:
  • Ne küldjön semmit.
  • A kért URL legyen a Referer is.
  • Előre megadott Referert küldjön.
vagy ez böngésző függő?
Ha böngészőből piszkálják akkor az. És tudomásom szerint kiegészítés függő is, mert alapból kevés böngésző tudja.
6

Üres érték

Poetro · 2010. Aug. 24. (K), 19.33
Lévén a böngészők nem szoktak üres értéket küldeni, ha úgy érkezik, azt jelenti valami belepiszkált.

Üres értéket a böngésző akkor állít be magától, ha nem egy linkre kattintva, vagy más hasonló eseménnyel jutottál az oldalra, hanem mondjuk beírtad a címsorba, vagy könyvjelzők közül látogattál oda.
7

Én személy szerint még

kuka · 2010. Aug. 25. (Sze), 10.36
Én személy szerint még egyetlen így viselkedő böngészővel sem találkoztam. Na de a te kedvedért végigmegyek a felhozatalon.

netcat -l -p 8888 tanúsága szerint Arora, Chromium, Dillo, ELinks, Epiphany, Firefox, Konqueror, Links, Lynx, Midori, NetSurf, Opera, rekonq, SeaMonkey és w3m nem küld üres értéket. Ha nincs hivatkozó cím, a Dillo a kért URL-t küldi, a többi pedig egyáltalán nem küld Referer fejléc sort.

Te mely böngészők esetében tapasztaltad, hogy üres Referert küldenek?
8

Utalás

Poetro · 2010. Aug. 25. (Sze), 14.36
Itt a kérdezőnek arra akartam utalni, hogy lehet, hogy a Referer értéke nincs megadva, nem arra, hogy üres értéket küldött a böngésző.
9

Ah, ez már a szakmai

kuka · 2010. Aug. 25. (Sze), 14.44
Ah, ez már a szakmai ártalomhoz sorolható.

Bizonyos specifikációkban üres!=semmi, aztán úgy maradtam. Most már fórum hozzászólásokat is aszerint "párszol" az agyam. :-S
5

curl

Poetro · 2010. Aug. 24. (K), 19.27
Curl esetén vegyük a következő parancsot:
$ curl -H "Host: poetro.hu
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: UTF-8,*
Keep-Alive: 115
Connection: keep-alive
Referer: http://whitehouse.gov/" http://www.poetro.hu/sandbox/weblabor/server.php
Mint látszik, itt eléggé sokmindent meghamisítok, amit a Curl alapból más értéknek állítana be.
Csináltam egy nagyszerű kis PHP fájlt, ami a következőt tudja:
<?php
header('Content-type: text/plain; charset=utf-8');
print_r($_SERVER);
?>
Ennek kimenete a fenti kérés után:
Array
(
    [SCRIPT_URL] => /sandbox/weblabor/server.php
    [SCRIPT_URI] => http://poetro.hu/sandbox/weblabor/server.php
    [HTTP_USER_AGENT] => curl/7.20.1 (i686-pc-cygwin) libcurl/7.20.1 OpenSSL/0.9.8o zlib/1.2.5 libidn/1.18 libssh2/1.2.5, Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US;
rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8
    [HTTP_ACCEPT] => */*, text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    [HTTP_HOST] => poetro.hu
    [HTTP_ACCEPT_LANGUAGE] => en-us,en;q=0.5
    [HTTP_ACCEPT_ENCODING] => gzip,deflate
    [HTTP_ACCEPT_CHARSET] => UTF-8,*
    [HTTP_KEEP_ALIVE] => 115
    [HTTP_CONNECTION] => keep-alive
    [HTTP_REFERER] => http://whitehouse.gov/
    [REMOTE_PORT] => 58090
    [GATEWAY_INTERFACE] => CGI/1.1
    [SERVER_PROTOCOL] => HTTP/1.1
    [REQUEST_METHOD] => GET
    [QUERY_STRING] =>
    [REQUEST_URI] => /sandbox/weblabor/server.php
    [SCRIPT_NAME] => /sandbox/weblabor/server.php
    [PHP_SELF] => /sandbox/weblabor/server.php
    [REQUEST_TIME] => 1282670875
    [argv] => Array
        (
        )

    [argc] => 0
)
A kérdés tekintetében nem lényeges információkat töröltem a válaszból.
10

honnan jön a látogató

kukodajanos · 2010. Szep. 16. (Cs), 18.52
Akkor végül is hogyan lehet megállapítani hogy honnan jön a látogató? Ha a böngésző logját megnézem, ott szerepel egy IP cím. Ezt PHP-vel valahogy le tudom kérni?
11

$_SERVER['REMOTE_ADDR']

Poetro · 2010. Szep. 16. (Cs), 19.22
$_SERVER['REMOTE_ADDR']
12

shamanix: honnan érkezik a

kuka · 2010. Szep. 17. (P), 10.20
shamanix:
honnan érkezik a látogató

kukodajanos:
honnan jön a látogató

Az én értelmezésem szerint (és úgy tűnik Poetroé szerint is) a fenti két kérdés között különbség van:
  • Az első: honnan irányították ide a látogatót, azaz hol járt előzőleg, ahol a mi oldalunkra mutató hivatkozásra kattintott
  • A második: hol tanyázik az oldalunk látogatója, azaz honnan intézték hozzánk a kérést

kukodajanos, az első értelmezés szerinti válaszokat megtalálod e téma korábbi hozzászólásaiban. A második értelmezés nem tartozik e témához, ha azt kívánod megbeszélni, jobb volna ha új témát nyitnál.