[PHP] search bots identificeren

Pagina: 1
Acties:
  • 178 views sinds 30-01-2008
  • Reageer

Onderwerpen


Verwijderd

Topicstarter
Is er een manier om om searchbots te identificeren in php ?

Het probleem : we hebben een site waar alle kliks worden geregistreerd middels een eigen CMS. Er wordt dus bijgehouden hoeveel members/guests er online zijn doordat we de laatste 5 minuten nemen als richtlijn en daarmee het aantal bezoekers bepalen.

Nu wordt het bezoekers aantal op sommige momenten gepiekt naar behoorlijke aantallen met allemaal IP adressen uit dezelfde reeks. Na wat speurwerk bleek dit o.a. naar google te herleiden.
Ik neem aan dit dit te maken heeft met search bots.

Is er dus een manier om hier onderscheid in te maken of is dit totaal onmogelijk ?
Maar hoe doen andere sites dit dan ?

Ik heb hier op lopen googlen maar ik kom alleen bij totaal andere onderwerpen uit en misschien loop ik in de verkeerde richting te zoeken.

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
In PHP heb je de beschikking over de $_SERVER array. Dat is een array, er zijn meer van die predifined variables zoals ze heten, met standaard informatie over de bezoeker die de pagina opvraagd. In die array staat 'HTTP_USER_AGENT'. Voorbeeld waarden zijn: Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0, die van de google bot is : Googlebot/2.1 (+http://www.google.com/bot.html).

Door te zoeken op bijvoorbeeld php browser identification googlebot kun je over dit onderwerp veel voorbeelden (source code) en overige informatie vinden.

[ Voor 11% gewijzigd door Sybr_E-N op 24-02-2005 22:52 ]


Verwijderd

Je kan ook met robots.txt (ofzo?) zorgen dat Google niet meer door je webpagina heen spidered. Dat heeft natuurlijk als nadeel dat ze niet meer in Google terug te vinden zijn.

  • we_are_borg
  • Registratie: September 2000
  • Laatst online: 15-09 09:28

we_are_borg

You will Comply

Verwijderd schreef op donderdag 24 februari 2005 @ 22:58:
Je kan ook met robots.txt (ofzo?) zorgen dat Google niet meer door je webpagina heen spidered. Dat heeft natuurlijk als nadeel dat ze niet meer in Google terug te vinden zijn.
Ik denk niet dat dit echt de bedoeling is.

Je kan wel even kijken hoe andere scripts dit hebben opgelost. AWStats maakt goed onderscheid tussen verschillende crawlers en search bots. Het is open source dus je mag ervan afkijken hoe hun dit hebben opgelost.

You need the computing power of a P1, 16 MB RAM and 1 GB Harddisk to run Win95. It took the computing power of 3 Commodore 64 to fly to the Moon. Something is wrong here, and it wasn't the Apollo.


Verwijderd

Topicstarter
Ik heb de lijst gezien van zoekmachines en de 'HTTP_USER_AGENT' en aangezien we in vele zoekmachines staan gaat dat wel een aardig klusje worden om dit bij te houden.

Die AWStats zal ik eens gaan bekijken. Misschien hebben zij een goede oplossing.

En het uitschakelen met robots.txt heeft meer nadeel dan voordeel dus dat is geen optie.

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 19-09 22:02

krvabo

MATERIALISE!

Ik gebruik zelf:
PHP:
1
2
$browser = get_browser();
$browser_name = $browser->browser;

En dan heb je bijv:
Google
MSN
etc..

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


Acties:
  • 0 Henk 'm!

  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 04-02-2022

tombo_inc

uhuh

die get_browser() werkt toch alleen op machines met browsercap.ini. dat zijn bij mijn weten alleen windows machines. maar ik kan me vergissen. verder werkt de http_user_agent methode goed.

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition


Acties:
  • 0 Henk 'm!

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 19-09 22:02

krvabo

MATERIALISE!

Tombo_inc schreef op vrijdag 25 februari 2005 @ 10:37:
die get_browser() werkt toch alleen op machines met browsercap.ini. dat zijn bij mijn weten alleen windows machines. maar ik kan me vergissen. verder werkt de http_user_agent methode goed.
Daar staat verder niets over windows-only hoor @ http://nl2.php.net/manual/en/function.get-browser.php ? dus als je een bron hebt? graag.

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


Acties:
  • 0 Henk 'm!

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 12:39

Urk

Grappig, ik had precies dezelfde issue een paar weken geleden, ik heb toen een database met user agents ergens vandaan gedownload, weet niet precies meer waar vandaan, maar in ieder geval iemand die ook browsercap.ini bijhoud.

Vervolgens heb ik de database wat gemodificeerd en met behulp van Regular Expressions in ASP word iedere bezoeker gekoppeld aan een browser en versie en aan een OS. Ook zijn robots geflagged, dus robots worden apart geteld en apart genoemd, dus niet bij user agent string.

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
is dit niet voldoende:

PHP:
1
2
3
4
if ( stripos($_SERVER['HTTP_USER_AGENT'], "bot") !== false )
{
  exit;
}


Je hebt een kleine kans dat je dan ook mensen uitsluit, maar ik heb nog nooit een user_agent gezien van een browser die het woordje bot bevat.

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
jammer, stripos werkt niet, alleen vanaf PHP 5.0

Hiervoor zou ik wel PREG_MATCH kunnen gebruiken om het
woord "bot" te filteren uit de USER_AGENT.

Ik vraag me af of je niemand anders uitsluit behalve bots maar ik kan het proberen.

Acties:
  • 0 Henk 'm!

  • PowerSp00n
  • Registratie: Februari 2002
  • Laatst online: 19-08 08:24

PowerSp00n

There is no spoon

Heb je al eens naar de nieuwe phpBB3 gekeken (die nog in ontwikkeling is), daar onderscheiden ze ook normale bezoekers en bots als ik het goed heb.

Acties:
  • 0 Henk 'm!

  • MacWebber
  • Registratie: September 2000
  • Niet online
Verwijderd schreef op vrijdag 25 februari 2005 @ 18:50:
jammer, stripos werkt niet, alleen vanaf PHP 5.0

Hiervoor zou ik wel PREG_MATCH kunnen gebruiken om het
woord "bot" te filteren uit de USER_AGENT.

Ik vraag me af of je niemand anders uitsluit behalve bots maar ik kan het proberen.
Ik zou voor de snelheid ipv preg_match gewoon strpos gebruiken. Kwestie van de user_agent string even door strtoupper of strtolower heen laten lopen zodat je weet of je naar BOT of bot moet zoeken.

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Je hebt een aantal dingen:
• Bots die zich alleen identificeren middels een hit op Robots.txt -> Dit kan je dus alleen uit de Apache logs halen omdat Robots.txt natuurlijk geen PHP kan bevatten.
• Bots die je kunt herkennen aan hun USER_AGENT. Daar kan je de bovenstaande get_browser en $_SERVER voor gebruiken.
Pagina: 1