Pas de Detection de Fast


Kmacleod
WRInaute accro
WRInaute accro
 
Messages: 3418
Inscription: 28 Nov 2002

Pas de Detection de Fast

Message le Jeu Fév 27, 2003 14:55

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)


Gralon
WRInaute impliqué
WRInaute impliqué
 
Messages: 662
Inscription: 2 Nov 2002

idem

Message le Jeu Fév 27, 2003 17:14

même souçis,
quand je regarde mes logs, je vois bien fast mais pas dans googlestats ...


hetzeld
WRInaute passionné
WRInaute passionné
 
Messages: 2209
Inscription: 2 Déc 2002

Message le Jeu Fév 27, 2003 17:23

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 :wink:
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
Administrateur du site
 
Messages: 18958
Inscription: 19 Avr 2002

Message le Jeu Fév 27, 2003 17:23

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 ?


Gralon
WRInaute impliqué
WRInaute impliqué
 
Messages: 662
Inscription: 2 Nov 2002

soluce temporaire

Message le Jeu Fév 27, 2003 17:30

juste en remettant la même adresse ip dans le deuxième champs ip du moteur, ça fonctionne ...

faudra que je regarde un peu ce code tout de même ...


hetzeld
WRInaute passionné
WRInaute passionné
 
Messages: 2209
Inscription: 2 Déc 2002

Message le Jeu Fév 27, 2003 17:37

Olivier,

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

:wink:

Dan


hetzeld
WRInaute passionné
WRInaute passionné
 
Messages: 2209
Inscription: 2 Déc 2002

Message le Jeu Fév 27, 2003 17:39

Mea Culpa... :oops:
J'avais corrigé le code depuis un moment, et oublié de le poster ici ...
Ce n'est qu'en lisant l'article de Kmacleod que j'ai fait TILT!
Non... pas sur la tête ! :lol:

Dan


Gralon
WRInaute impliqué
WRInaute impliqué
 
Messages: 662
Inscription: 2 Nov 2002

ah ben vi

Message le Jeu Fév 27, 2003 17:42

c'est clair ... :)
Dernière édition par Gralon le Jeu Fév 27, 2003 19:25, édité 2 fois.


WebRankInfo
Administrateur du site
Administrateur du site
 
Messages: 18958
Inscription: 19 Avr 2002

Message le Jeu Fév 27, 2003 19:18

bon je crois que ça va mériter rapidement une petite version 2.01 !!!
:oops: :oops: :oops:


Gralon
WRInaute impliqué
WRInaute impliqué
 
Messages: 662
Inscription: 2 Nov 2002

modif possible

Message le Jeu Fév 27, 2003 19:25

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 ...


WebRankInfo
Administrateur du site
Administrateur du site
 
Messages: 18958
Inscription: 19 Avr 2002

Message le Jeu Fév 27, 2003 20:22

ça me parait une bonne idée mais tu n'utilises plus la variable "mode de détection" ?


Kmacleod
WRInaute accro
WRInaute accro
 
Messages: 3418
Inscription: 28 Nov 2002

Message le Jeu Fév 27, 2003 21:09

Merci Dan


WebRankInfo
Administrateur du site
Administrateur du site
 
Messages: 18958
Inscription: 19 Avr 2002

Message le Jeu Fév 27, 2003 22:13

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);
au lieu de
Code: Tout sélectionner
$pos = strpos(strtolower($_SERVER["HTTP_USER_AGENT"]), strtolower($enr["user_agent"]));
$detecte = ($pos !== false);
?


Gralon
WRInaute impliqué
WRInaute impliqué
 
Messages: 662
Inscription: 2 Nov 2002

Message le Ven Fév 28, 2003 9:20

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 ...


hetzeld
WRInaute passionné
WRInaute passionné
 
Messages: 2209
Inscription: 2 Déc 2002

Message le Ven Fév 28, 2003 9:39

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

Pas de Detection de Fast

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

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