Pas de Detection de Fast
20 messages
• Page 1 sur 2 • 1, 2
-

Kmacleod - WRInaute accro

- Messages: 3418
- Inscription: 28 Nov 2002
Pas de Detection de Fast
Alors que les passages de googlebot ou pompos sont bien détectée, je remarque dans le module "les visiteurs " que
FAST-WebCrawler/3.6 66.77.73.75 cr036r01-2.sac2.fastsearch.net est passé.
Dans googlestats je n'ai rien
ce moteur est bien configue avec détection par IP avec 66.77.73. (configuration d'origine)
Quelqu'un d'autre a t'il remarqué celà , ou le pb est chez moi uniquement (pb sur SQL par exemple)
FAST-WebCrawler/3.6 66.77.73.75 cr036r01-2.sac2.fastsearch.net est passé.
Dans googlestats je n'ai rien
ce moteur est bien configue avec détection par IP avec 66.77.73. (configuration d'origine)
Quelqu'un d'autre a t'il remarqué celà , ou le pb est chez moi uniquement (pb sur SQL par exemple)
-

hetzeld - WRInaute passionné

- Messages: 2209
- Inscription: 2 Déc 2002
J'avais moi aussi des problèmes de détection, probablement à cause du strpos qui ne donne pas toujours le résultat escompté. J'ai donc adapté le code et maintenant il détecte bien tous ceux qui sont passés, dont Fast.
J'ai changé la syntaxe du while, car si le robot est détecté ce n'est pas utile de continuer la boucle et de vérifier pour les autres, d'ou le test pour $detecte===false (!! 3 fois =)
J'ai aussi changé les strpos en strstr qui me semblent plus "fiables"... question de goût
Un dernier changement pour la syntaxe de détection par l'adresse IP qui gère mieux le cas où une seule adresse est spécifiée (Cas de Fast par défaut) Il y a un bug dans le code originel
A+
Dan
J'ai changé la syntaxe du while, car si le robot est détecté ce n'est pas utile de continuer la boucle et de vérifier pour les autres, d'ou le test pour $detecte===false (!! 3 fois =)
J'ai aussi changé les strpos en strstr qui me semblent plus "fiables"... question de goût
Un dernier changement pour la syntaxe de détection par l'adresse IP qui gère mieux le cas où une seule adresse est spécifiée (Cas de Fast par défaut) Il y a un bug dans le code originel
- Code: Tout sélectionner
// par defaut le robot n'est pas détecté.
$detecte = false;
while (($detecte === false) && ($enr = mysql_fetch_array($res)))
{
// selon le mode de détection du robot :
if ($enr["detection"] == $DETECTION_USER_AGENT)
{
// on détecte le robot en regardant son User Agent
if(strstr($_SERVER["HTTP_USER_AGENT"], $enr["user_agent"]) !== false)
$detecte = true;
}
else if ($enr["detection"] == $DETECTION_IP)
{
// on détecte le robot par son adresse IP
if ((($enr["ip1"] != "") && (strstr($_SERVER["REMOTE_ADDR"], $enr["ip1"]) !== false)) || (($enr["ip2"] != "") && (strstr($_SERVER["REMOTE_ADDR"], $enr["ip2"]) !== false)))
$detecte = true;
}
// si le robot a été détecté, on enregistre sa visite
if ($detecte == true)
{
... (suite le code originel)
A+
Dan
-

WebRankInfo - Administrateur du site

- Messages: 18958
- Inscription: 19 Avr 2002
c'est bizarre car la détection d'autres robots par l'adresse IP fonctionne bien !
faudrait essayer de le détecter par le user agent peut-être ?
faudrait essayer de le détecter par le user agent peut-être ?
-

hetzeld - WRInaute passionné

- Messages: 2209
- Inscription: 2 Déc 2002
Olivier,
Ton test initial ne peut pas fonctionner en détection d'IP s'il n'y a qu'une seule adresse mentionnée.
n'est vrai que si les deux tests sont vrais ,c.à .d ip1 ET ip2 définis
Dan
Ton test initial ne peut pas fonctionner en détection d'IP s'il n'y a qu'une seule adresse mentionnée.
- Code: Tout sélectionner
if ( ($enr["ip1"] != "") && ($enr["ip2"] != "")
n'est vrai que si les deux tests sont vrais ,c.à .d ip1 ET ip2 définis
Dan
-

WebRankInfo - Administrateur du site

- Messages: 18958
- Inscription: 19 Avr 2002
bon je crois que ça va mériter rapidement une petite version 2.01 !!!

-

Gralon - WRInaute impliqué

- Messages: 662
- Inscription: 2 Nov 2002
modif possible
bon ben moi j'ai tout enlever la partie
-----------------------------------------------------------------------------------------------
// par defaut le robot n'est pas détecté
$detecte = false;
// selon le mode de détection du robot :
if ($enr["detection"] == $DETECTION_USER_AGENT)
{
// on détecte le robot en regardant son User Agent
$pos = strpos(strtolower($_SERVER["HTTP_USER_AGENT"]), strtolower($enr["user_agent"]));
//$detecte = (is_string($pos) && !$pos));
$detecte = ($pos !== false);
//echo "|".$enr["nom"]."|".$_SERVER["HTTP_USER_AGENT"]."|".$enr["user_agent"]."|".$pos."|".$detecte."|
";
}
else if ($enr["detection"] == $DETECTION_IP)
{
// on détecte le robot par son adresse IP
if ( ($enr["ip1"] != "") || ($enr["ip2"] != "") )
$detecte = ( (strpos($_SERVER["REMOTE_ADDR"], $enr["ip1"]) !== false) || (strpos($_SERVER["REMOTE_ADDR"], $enr["ip2"
]) !== false) );
}
// si le robot a été détecté, on enregistre sa visite
if ($detecte)
{
------------------------------------------------------------------------------------------
et remplacé par une recherche directe dans la requête mysql ce qui empeche la boucle php :
$sql = "SELECT *";
$sql .= " FROM ".$TABLE_ROBOTS;
$sql .= " WHERE ((user_agent = \"$_SERVER[HTTP_USER_AGENT]\" and user_agent !=\"\") || (\"$_SERVER[REMOTE_ADDR]\" REGEXP CONCAT('^',
ip1) and ip1 !=\"\") || (\"$_SERVER[REMOTE_ADDR]\" REGEXP CONCAT('^', ip2) and ip2 !=\"\"))";
$sql .= " and actif=1";
-------------------------------------------------------------------------------------------
et ça marche bien ...
-----------
juste une remarque, faire attention soit de vérifier que vous utliser les magic quotes ou bien vous devez faire un addslashes du user agent ...
-----------------------------------------------------------------------------------------------
// par defaut le robot n'est pas détecté
$detecte = false;
// selon le mode de détection du robot :
if ($enr["detection"] == $DETECTION_USER_AGENT)
{
// on détecte le robot en regardant son User Agent
$pos = strpos(strtolower($_SERVER["HTTP_USER_AGENT"]), strtolower($enr["user_agent"]));
//$detecte = (is_string($pos) && !$pos));
$detecte = ($pos !== false);
//echo "|".$enr["nom"]."|".$_SERVER["HTTP_USER_AGENT"]."|".$enr["user_agent"]."|".$pos."|".$detecte."|
";
}
else if ($enr["detection"] == $DETECTION_IP)
{
// on détecte le robot par son adresse IP
if ( ($enr["ip1"] != "") || ($enr["ip2"] != "") )
$detecte = ( (strpos($_SERVER["REMOTE_ADDR"], $enr["ip1"]) !== false) || (strpos($_SERVER["REMOTE_ADDR"], $enr["ip2"
]) !== false) );
}
// si le robot a été détecté, on enregistre sa visite
if ($detecte)
{
------------------------------------------------------------------------------------------
et remplacé par une recherche directe dans la requête mysql ce qui empeche la boucle php :
$sql = "SELECT *";
$sql .= " FROM ".$TABLE_ROBOTS;
$sql .= " WHERE ((user_agent = \"$_SERVER[HTTP_USER_AGENT]\" and user_agent !=\"\") || (\"$_SERVER[REMOTE_ADDR]\" REGEXP CONCAT('^',
ip1) and ip1 !=\"\") || (\"$_SERVER[REMOTE_ADDR]\" REGEXP CONCAT('^', ip2) and ip2 !=\"\"))";
$sql .= " and actif=1";
-------------------------------------------------------------------------------------------
et ça marche bien ...
-----------
juste une remarque, faire attention soit de vérifier que vous utliser les magic quotes ou bien vous devez faire un addslashes du user agent ...
-

WebRankInfo - Administrateur du site

- Messages: 18958
- Inscription: 19 Avr 2002
ça me parait une bonne idée mais tu n'utilises plus la variable "mode de détection" ?
-

WebRankInfo - Administrateur du site

- Messages: 18958
- Inscription: 19 Avr 2002
tant qu'Ã remplacer le strpos, je me demande si on ne devrait pas utiliser
- Code: Tout sélectionner
$detecte = (stristr($_SERVER["HTTP_USER_AGENT"], $enr["user_agent"]) !== false);
- Code: Tout sélectionner
$pos = strpos(strtolower($_SERVER["HTTP_USER_AGENT"]), strtolower($enr["user_agent"]));
$detecte = ($pos !== false);
-

Gralon - WRInaute impliqué

- Messages: 662
- Inscription: 2 Nov 2002
Non plus besoin d'utiliser la variable de détection puisque cela fonctionne dans les deux cas ... avec cette requete (à modifier si on veut rendre la recherche de l'agent plus "lâche")...
de plus, avec cette requête on évite donc la boucle php qui teste tous les moteurs (gain de charge process apache)
et le must pour ceux qui sont en mysql 4 avec le query cache activé, c'est le pied ... prenons un exemple :
l'internaute : 195.65.65.65 avec agent mozilla 4.0 passe sur le site, la requete est executé une première fois : (recherche si c'est un robot), il n'y a pas de réponse (la query est mis dans le cache),
maintenant cet internaute se promène sur le site, la requete est dans le cache (gain de process mysql) et gain de process php/apache car pas de boucle de vérification ...
idem quand un robot passe ...
de plus, avec cette requête on évite donc la boucle php qui teste tous les moteurs (gain de charge process apache)
et le must pour ceux qui sont en mysql 4 avec le query cache activé, c'est le pied ... prenons un exemple :
l'internaute : 195.65.65.65 avec agent mozilla 4.0 passe sur le site, la requete est executé une première fois : (recherche si c'est un robot), il n'y a pas de réponse (la query est mis dans le cache),
maintenant cet internaute se promène sur le site, la requete est dans le cache (gain de process mysql) et gain de process php/apache car pas de boucle de vérification ...
idem quand un robot passe ...
-

hetzeld - WRInaute passionné

- Messages: 2209
- Inscription: 2 Déc 2002
Gralon,
Cela a l'air bien et je suis d'accord avec toi quant à l'inutilité de poursuivre la boucle PHP comme dans la version originale une fois un robot détecté.
Pour être sûr qu'on parle tous du même source, pourrais-tu poster l'intégralité de ta modification, sinon on risque de partir sur quelques dizaines/centaines/.. de versions différentes ?
Par exemple, "remplacer les lignes 20 Ã 50 par ce qui suit:" (ton code)
Dan
Cela a l'air bien et je suis d'accord avec toi quant à l'inutilité de poursuivre la boucle PHP comme dans la version originale une fois un robot détecté.
Pour être sûr qu'on parle tous du même source, pourrais-tu poster l'intégralité de ta modification, sinon on risque de partir sur quelques dizaines/centaines/.. de versions différentes ?
Par exemple, "remplacer les lignes 20 Ã 50 par ce qui suit:" (ton code)
Dan
20 messages
• Page 1 sur 2 • 1, 2
Lectures recommandées sur ce thème :
Consultez la description détaillée des produits ou services de Google suivants : Google Fast Flip
- Analyse de similarité textuelle
Cet outil vous permet de calculer la similarité entre 2 pages web. L'algorithme utilisé repose sur l'analyse des occurrences des mots (mais pas sur leur positionnement dans les pages). Google utilise cette notion à certains endroits dans son algorithme, mais de façon bien plus évoluée que ce petit outil... Avoir des pages trop similaires peut entraîner des problèmes d'indexation... Cet outil vous permettra peut-être de résoudre certains problèmes de contenus dupliqués. - Test de redirection
Cet outil vous permet de tester la validité d'un lien pour le référencement. Il vous indique la nature du lien (lien en dur, redirection bien gérée par les moteurs ou redirection mal gérée par les moteurs). - Transformer des simples citations de votre site en liens
Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink). - Calcul du taux de liens profonds
Cet outil vous permet de calculer le taux de liens profonds vers un site web. Un lien profond est un lien qui ne pointe pas vers la page d'accueil mais au contraire vers une page interne du site. Les sites dont l'essentiel du référencement vient de leurs inscriptions dans des annuaires ont un taux de liens profonds faible ; à l'inverse, les sites de référence ont souvent un taux de liens profonds plus important, signe que leur contenu a suscité de nombreux liens spontanés.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
