Toon posts:

[PHP] Provider vissen

Pagina: 1
Acties:
  • 52 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik ben op het moment bezig om zo goed mogelijk (lees: foutloos) de provider van "de bezoeker" te fetchen. Echter lukt het tot op heden nog niet 100% goed.

Bekend is dat je de provider zo kunt achterhalen (slechts voorbeeldje);

PHP:
1
2
3
$host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
$provider = explode('.', $host);
echo $provider[count($provider) - 2];


Echter sluipen hier (voor zover ik onderzocht heb; fouten voorbehouden) grote fouten in. De meeste Nederlandse providers zijn dan wel zo netjes om de naam van hun host direct achter de lands extensie te zetten, maar komt bijv. een Engelse bezoeker op je website (met uiteraard Engelse provider) dan zit de 'host-string' die je verkrijgt door bovenstaand stukje code in $host. Dan zit die meestal niet op die plaats waarvan jij denkt dat die zit (direct na de extensie; NOT). En je wilt natuurlijk vage namen voorkomen, en alleen de echte provider eruit vissen.

Dus ik ging opzoek naar een andere mogelijkheid, zo kwam ik bij dit scriptje. Wat niet de provider vist, maar de landcode. Best netjes, en vooral na dit topic wat hier laatst voorbij kwam op GoT. En ook nog eens zonder DB die je erbij moest stoppen. Dus ik ging eens in die code kijken, en ze haalden de landcode eruit dmv te connecten met de whois.ripe.net.

Om een lang verhaal kort te houden, kwam ik op deze waar ik wel al vaker terecht ben gekomen, echter had ik toen geen bedoelingen ermee tov van nu. Ik kwam erachter dat je heel gemakkelijk hier de landcode uit kon vissen zonder zelf een DB te gebruiken. Maar niet alleen de landcode stond er, ook provider info :)

Dus ik heb echt op vele mogelijke manier dit geprobeerd de provider eruit te vissen, maar dit lukte keer op keer (telkens nieuwe IP's testen en zo steeds verder komend) net niet. Want dan klopte dit en dat weer niet, en de andere keer weer zus en zo. Dit omdat de info gewoon bagger gegeven is, @home staat er altijd netjes en is simpel te vinden. Maar zo staat Chello weer op een heel andere plaats en zo ook met Wanadoo en XS4ALL. En dus probeerde ik het via alle mogelijke manieren (voor zover) en 't lukte maar niet goed...

Dus mijn vraag is, wat is wel dé manier om de provider te fetchen? Ziet iemand hier wel de manier om op deze WHOIS de provider te fetchen? Of heb je een betere manier?

Ik hoor het graag :)

Alvast bedankt.

  • Pjottski
  • Registratie: Maart 2001
  • Laatst online: 18:13

Pjottski

🦍 Monkey 🦍

PHP:
1
2
3
4
$adress = gethostbyaddr($_SERVER["REMOTE_ADDR"]);
$explode_host = explode(".", $host);
$result = array_reverse($explode_host);
$host = $result[1].".".$result[0];


Maar ben er niet helemaal zeker van of dit waterdicht is.

Dit is mijn uitspraak en daar zult u het mee moeten doen


Verwijderd

Bedenk wel dat gethostbyaddr niet altijd werkt... Ik gebruik deze functie ook bij mijn forum (admin gedeelte) om te zien welke provider de bezoekers hebben. Het gebeurt regelmatig dat er geen hostname bestaat / bekend is. In dat geval wordt het ip-adres weergegeven. Bij beide genoemde functies krijg je dan als uitkomst (bij ip="aaa.bbb.ccc.ddd") iets als ccc, wat waarschijnlijk niet de bedoeling is.

Verwijderd

Topicstarter
Peedjeeh schreef op 27 januari 2003 @ 00:15:
PHP:
1
2
3
4
$adress = gethostbyaddr($_SERVER["REMOTE_ADDR"]);
$explode_host = explode(".", $host);
$result = array_reverse($explode_host);
$host = $result[1].".".$result[0];
Als je m'n topic goed gelezen had, had je deze post niet hoeven maken. Want die code geef ik nog wel als voorbeeld :)
Verwijderd schreef op 27 januari 2003 @ 01:03:
Bedenk wel dat gethostbyaddr niet altijd werkt... Het gebeurt regelmatig dat er geen hostname bestaat / bekend is. In dat geval wordt het ip-adres weergegeven.
Daar ben ik wel bekend mee, ik heb uiteraard wat getest, en idd gethostbyaddr mist nog al eens z'n werking...

M'n vraag in dit topic was ook vooral; weet er iemand een betere manier om de provider eruit te vissen (wat dus waarschijnlijk wel via de whois van ripe.net zal moeten). Want ik ben er nu wel vrijwel zeker van dat gethostbyaddr niet dé manier is...

Verwijderd

Verwijderd schreef op 27 January 2003 @ 09:02:
[...]


Als je m'n topic goed gelezen had, had je deze post niet hoeven maken. Want die code geef ik nog wel als voorbeeld :)


[...]
Euhmz.. hij explode de host... iets wat ik bij die van jou wel mistte? ;)

Misschien ben ik raar hoor. >:)

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Verwijderd schreef op 27 januari 2003 @ 11:48:
[...]


Euhmz.. hij explode de host... iets wat ik bij die van jou wel mistte? ;)

Misschien ben ik raar hoor. >:)

Vreemd bij mij zie ik in de openings post hetvolgende staan:
PHP:
1
2
3
$host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
$provider = explode('.', $host);
echo $provider[count($provider) - 2];
Lijkt toch echt hetzelfde te doen als de code die jij gaf.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Topicstarter
Ik heb vandaag een interessante URL gevonden, namelijk: http://www.robtex.com/netexp/

Hier kun je dmv een IP adres de provider opvragen. Althans, soms is het een adres, soms een regeltje van "wat het is". Echter staat voor zover ik getest heb, telkens de naam van de provider als eerste in die regel. Dus is het makkelijk eruit te vissen.

Echter heb ik die gast daarvan een mailtje gestuurd, met daarin de vraag hoe hij dit gefixt heeft (mits hij het natuurlijk wil vertellen).

Tenzij hier iemand al weet hoe je zoiets fixt natuurlijk :)

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025

djc

Kan je niet gewoon een strstr() doen op een aantal providers en dat scriptje steeds uitbreiden? Lijkt me wel makkelijk, in ieder geval. Op die manier gaat het dan wel niet altijd meteen goed, maar na een paar daagjes draaien heb je zo wel de belangrijkste providers eruit. Op de meeste sites komt tenslotte toch maar een kleine subselectie van alle providers uit de wereld.

Rustacean


Verwijderd

Topicstarter
Dat lijkt me een niet erg handige methode, het is toch vooral de bedoeling dat het script het werk doet. Ipv dat je telkens de lijst zult moeten updaten of wat dan ook.

En gezien de eerder gegeven URL (http://www.robtex.com/netexp/) is het duidelijk dat het zeker mogelijk is in PHP...

Verwijderd

Topicstarter
Ik heb een nieuwe manier bedacht om de provider te vissen, deze is niet 100% waterdicht. Maar ik schat toch wel op zo'n 90%.

Ik neem namelijk via gethostbyaddr de host van het IP adres op, split deze op de punten. Pak de naam van de host eruit en voer met een regex een check uit op de whois pagina van RIPE (+ alle andere db's) voor het betreffende IP. En dan filtert hij gek genoeg vrijwel altijd de juiste eruit...

Voor een voorbeeld van de werking ervan, kun je hier kijken: http://www.phpdesk.nl/temp/test.php

En als je wilt kun je ook hier even posten of het werkt :)

Ik heb veel gecheckt met IP adressen uit Nederland, maar omdat ik niet over buitenlandse IP's beschik heb ik dit niet kunnen testen. Dus weet iemand er nog een paar te liggen om te testen, dan zou ik dat ook graag horen :)

Verwijderd

bij mij wel, hoewel iae niet veel zegt maar het klopt wel, kan je de code ook ergens neer gooien of moet ik dat in het script request forum van phpdesk vragen ;)

Verwijderd

Topicstarter
Verwijderd schreef op 28 januari 2003 @ 18:03:
bij mij wel, hoewel iae niet veel zegt maar het klopt wel, kan je de code ook ergens neer gooien of moet ik dat in het script request forum van phpdesk vragen ;)
T'is maar een vrij simpel scriptje hoor :)

Maar ik heb de source voor je online gezet @ http://www.phpdesk.nl/temp/test.phps

Maar zou je ook eens de output hier in het forum kunnen kopieren? Want ik ken voor als nog geen IAE als provider ;) Dan kan ik kijken wat er fout gaat...

Verwijderd

Deze kerel is er ook al een tijdje mee bezig: :)

http://www.vddh.com/wnailer/index.php?pag=cc

Verwijderd

Topicstarter
De titel van dit topic is geen: "[PHP] Land code vissen"

Want daar ben ik inmiddels ook wel achter hoe je dit fixt :)

  • nikao
  • Registratie: November 1999
  • Laatst online: 10-02-2022
ff dit topic een schop verkopen..

ik ben nu voor mijn counter ook bezig de providers uit te zoeken.
Nu had ik een script die dit deed via ripe.. alleen krijg ik vaak net niet de juiste benaming en voor amerikaanse bezoekers krijg ik 'Array' terug.
Tevens doet de pagina er 5seconden over omte laden terwijl ik nog maar 5 ip's check bij ripe..

vandaar dat ik toch geneigd ben om zoals hier boven ook al beschreven.. gewoon een hele lijst te gaan maken.
iedere keer checken of een bepaald woord in de host adres staat en dan bepalen welke provider dit is.

Heeft iemand dit al es gedaan?.. (en kan mij zo een hoop moeite besparen)
of zijn er inmiddels mensen die dit handiger hebben aangepakt?

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Oude topics schoppen voor een verkapte script request doen we niet aan. Zie FAQ en zo :P

Deze dus: Welkom in P&W: FAQ en Beleid *updated: 14-04*

[ Voor 29% gewijzigd door curry684 op 25-06-2003 11:08 ]

Professionele website nodig?

Pagina: 1

Dit topic is gesloten.