PDA

Visualizza la versione completa : Ricerche con Google da PHP (o altro linguaggio) simulando Explorer o Firefox


iomme
10-01-2006, 11:22
Sto provando a fare un programma in PHP che associ ad una lista di stringhe di ricerca la posizione ottenuta da un dato sito su google.
So che questo lavoro lo fanno già altri programmi, ma ho notato che i risultati non sono sempre attendibili.

Se devo cercare la stringa :
stringa da cercare,
il mio programma esegue il comando:


$nome = "http://www.google.com/search?hl=it&q=stringa+da+cercare&btnG=Cerca+con+Google&lr=";
$s = file_get_contents($nome) or $err = true;

se nella stringa $s non trova il collegamento al sito cercato prosegue nelle pagine successive fino ad una "profondità" massima fissata.

Il programma funziona, ma i risultati ottenuti sono lievemente diversi da quelli che si ottengono eseguendo la stessa ricerca dal Browser (Explorer o Firefox). Ciò è dovuto al fatto che la stringa $s contiene un HTML diverso da quello della pagina aperta dal Browser; la differenza consiste nel fatto che l'ordine dei risultati è diverso.

Questo comportamento potrebbe essere dovuto al fatto che google controlla l'intestazione dei pacchetti che gli arrivano rispondendo in maniera diversa al variare del Browser? In questo caso penalizzando gli accessi che non vengono effettuati in maniera automatica?

Avevo pensato di utilizzare un proxy che consenta di modificare al volo le intestazioni dei pacchetti, ma la soluzione mi pare scomoda. C'è un metodo più semplice per simulare un accesso da parte di un Browser?

Grazie! :ciauz:

debba
10-01-2006, 11:46
Questo comportamento potrebbe essere dovuto al fatto che google controlla l'intestazione dei pacchetti che gli arrivano rispondendo in maniera diversa al variare del Browser? In questo caso penalizzando gli accessi che non vengono effettuati in maniera automatica?

direi di sì ma purtroppo non saprei come aiutarti...

stefano3804
10-01-2006, 12:06
usa le api dei motori con la clase nusoap.php

iomme
13-01-2006, 14:02
Ci ho messo un po' troppo :dhò:, ma alla fine ho risolto :yuppi:!!!!!

Con questo codice PHP:


$old = ini_get('user_agent');
ini_set('user_agent', $_SERVER['HTTP_USER_AGENT']);
$s = file_get_contents($name) or $err = true;
ini_set('user_agent', $old);

ci si può spacciare per il browser utilizzato.

Grazie a tutti per l'aiuto! :ciauz:

Loading