Est-ce que le test cookie/header gène le référencement ?

WRInaute passionné
Bonjour,

Voilà, je suis sur un site de sexologie (et non pas pornographie, je précise) et par sécurité j'ai ajouté un disclamer.

Je teste en haut des pages la valeur d'un cookie qui est à "non" tant que le gars n'est pas passé par l'accueil pour certifier son âge.
Si le visiteur arrive par une autre page que l'accueil, il est redirigé vers celui-ci.
Une fois qu'il a certifié son âge sur la page d'accueil, la valeur du cookie passe à oui et il est redirigé vers la page qu'il souhaitait visiter.
Classique donc.

Mais je me demande si ça ne va pas empêcher google d'indexer mes pages.

Je crois que non, mais j'ai un doute.

Qu'en pensez-vous ? Et si ça gène, comment je fais ?

Merci d'avance
 
WRInaute accro
- Si l'utilisateur n'accepte pas les cookies, qu'est-ce qui se passe ?
- Si le cookie n'existe pas, il y a redirection ou non ?
- Dans quel langage test-tu la valeur du cookie ? PHP, javascript ?

Pour le savoir :
1- désactive javascript dans les options de ton navigateur
2- désactive les cookies dans les options de ton navigateur
3- va sur ton site via une page interne

Si, tu es redirigé vers ton disclaimer, ça sent pas bon. Sinon, c'est bon. Par mesure de sécurité, vérifie bien que le cache de tes pages dans l'index de Google contienne vraiment le contenu de tes pages.

Sinon, répond à mes questions du début et on pourra surement t'aider ;)
 
WRInaute passionné
Salut blman,

blman a dit:
- Si l'utilisateur n'accepte pas les cookies, qu'est-ce qui se passe ?
IL EST EXPEDIE SUR L'ACCUEIL ET TANT PIS POUR LUI.
- Si le cookie n'existe pas, il y a redirection ou non ?
OUI
- Dans quel langage testes-tu la valeur du cookie ? PHP, javascript ?
PHP

**edit**

Bon je viens de lire ce commentaire sur WRI, effectivement, c'est pas gagné (si c'est exact :
ça sert pour les personnes qui n'acceptent pas les cookies.

Cette variable est ajoutée uniquement si l'internaute n'accepte pas les cookies (ce qui est le cas des bots).

Cela permet à un utilisateur qui n'accepte pas les cookies de pouvoir utiliser le site avec une session a lui, on passe le numero de session dans l'url...

https://www.webrankinfo.com/forum/t/liste-des-bots.77943/


Une solution très simple si je veux garder mon cookie en php (parce que javascript c'est foireux), serait de tester si c'est un bot qui visite.
Si c'est le cas, je ne fais pas le test du cookie, tout bêtement.



Mais comment puis-je faire pour tester si c'est un bot qui visite :?:
 
WRInaute passionné
Donc il en est de même pour les robots ?

Peut-être serait-il bon d'annuler cette précaution (louable) lorsqu'à partir d'une liste d'USER_AGENT, tu constates qu'il s'agit d'un robot ?
Quelque chose comme la comparaison d'un HTTP_USER_AGENT et d'une liste de spider par exemple...
 
WRInaute passionné
T'as répondu en même temps que j'éditais mon message, druart :)



Oui en effet, je dois faire un test comme tu l'indiques.


Quelqu'un a un bout de code ? Je ne connais pas la variable HTTP_USER_AGENT.


**edit**

Ca me fait un peu flipper ce genre de test. Si ça foire, il faut des mois pour s'en rendre compte et pendant ce temps là, les moteurs n'indexeront pas les pages.

**edit 2**

J'ai trouvé ça sur WRI, il est bon ce code ? Ca date de 2004 quand même...
Et c'est quoi ce $dns ??

$scooter=strpos($dns,"sv.av.com");
$voilabot=strpos($dns,"x1crawler");
$googlebot=strpos($dns,"googlebot.com");
$lycosbot=strpos($dns,"lycos.com");
$inktomi=strpos($dns,"inktomisearch.com");
if (($scooter==false) && ($voilabot==false) && ($googlebot==false) && ($lycosbot==false) && ($inktomi==false))
{
Le code que les bots ne doivent pas voir
}
https://www.webrankinfo.com/forum/t/http_user_agent-de-yahoo-google-et-autres-bots.14826/
 
WRInaute passionné
moi j'avais en tête quelque chose du style strtolower(getenv('HTTP_USER_AGENT'));
avec ensuite une comparaison avec une liste

ça doit être trouvable un script pour détecter un robot.
Moi je ne suis qu'un chercher d'or en php ... peut-être un félin passera-t-il par là.

Je ne comprend pas ta crainte puisque si tu "estimes" qu'il s'agit d'un robot tu passes au dessus de ta vérification du cookies
et j'y j'ai bien compris, tu ne ne le renvoies pas dare dare vers la porte d'entrée...
 
WRInaute passionné
Il n'accepte pas les cookies, c'est un robot, on ne lui a pas appris à le faire.
Dans ce cas tu lui "bot" les fesses et lui demande de toquer à l'entrée ... il fait comment alors ?
En tout cas c'est ce que tu expliques faire actuellement ;-)
 
WRInaute accro
Meeuuuhhh a dit:
Ca me fait un peu flipper ce genre de test. Si ça foire, il faut des mois pour s'en rendre compte et pendant ce temps là, les moteurs n'indexeront pas les pages.

Il suffit de regarder tes logs... Le statut HTTP (200 si tout va bien, 30x si redirection) est indiqué dedans. Il suffit de regarder un peu dans les redirections si tu des bots et leurs copains, et tu seras vite fixé.

Jacques.
 
WRInaute passionné
Oui j'ai bien compris.


Mais si mon test censé l'autoriser à visiter les pages sans cookie foire, alors comment le saurais-je ?

Je vais mettre longtemps à m'en rendre compte et pendant ce temps là mon site n'est pas référencé.
 
WRInaute passionné
Je doute qu'il te faille longtemps pour t'en rendre compte.
Sinon tu peux la jouer lourd : choisis une page au hasard et prévois de t'envoyer un émail avec le nom du robots lorsque ton test le détecte :)
 
WRInaute passionné
Perso j'utilise une fonction de base (certainement à améliorer), que je peux te filer :

Code:
// detection moteurs
$moteur_tab=array("bot","Scooter","Slurp","Voila","WiseNut","Fast","Index","Teoma","Mirago","search","find","loader","archive","Spider","Crawler");
foreach($moteur_tab as $key) if(stristr($_SERVER['HTTP_USER_AGENT'],$key)) $moteur=1;
 
WRInaute passionné
Merci Jeroen. Il est où googlebot dans ta liste ?

Perso je viens de dégoter ce code, je voudrais votre avis dessus. Déjà je pense que c'est risqué avec des IP dans le tableau, car googlebot par exemple n'a jamais la même.
Code:
    * // Renvoie TRUE si le visiteur de la page est un robot d'un moteur de recherche
    * function IsVisitorBot() {
    *
    * // Tableau des adresses ip
    * $IPtab[] = '66.249.'; // Googlebot
    * $IPtab[] = '207.68.146.'; // MSN Bot
    * $IPtab[] = '65.54.188.'; // MSN Bot
    * $IPtab[] = '66.196.'; // Yahoo
    * $IPtab[] = '68.142.'; // Yahoo
    * $IPtab[] = '195.101.94.'; // Voila
    * $IPtab[] = '64.241.243.65'; // Wisenut
    * $IPtab[] = '209.249.67.1'; // Wisenut
    * $IPtab[] = '64.241.242.177'; // Wisenut
    * $IPtab[] = '66.77.73.'; // Fast
    * $IPtab[] = '62.212.117.198'; // Deepindex
    * $IPtab[] = '65.214.36.'; // Teoma
    * $IPtab[] = '65.214.38.10'; // Teoma
    * $IPtab[] = '212.127.141.180'; // Whalhello
    * $IPtab[] = '213.73.184.'; // Whalhello
    * $IPtab[] = '216.243.113.1'; // Gigablast
    * $IPtab[] = '217.205.60.225'; // Mirago
    * $IPtab[] = '62.119.21.157'; // picsearch
    * $IPtab[] = '193.218.115.6'; // Szukacz
    * $IPtab[] = '210.59.144.149'; // Openfind
    * $IPtab[] = '66.237.60.22'; // Openfind
    * $IPtab[] = '218.145.25.'; // Naver
    *
    * // Vérifie chaque adresse
    * if(isset($_SERVER['REMOTE_ADDR']) && !empty($_SERVER['REMOTE_ADDR'])) {
    * for($t = 0, $max = count($IPtab); $t < $max; ++$t) {
    * if (strpos($_SERVER['REMOTE_ADDR'], $IPtab[$t]) === 0)
    * {
 if(!isset($_COOKIE["majeur"]) OR $_COOKIE["majeur"]=='non')
{
die(header('Location: index.php'));
}//ferme if isset $cookie
    * }
    * }

http://www.phpcs.com/codes/SAVOIR-SI-VISITEUR-EST-ROBOT-MOTEUR-RECHERCHE_42493.aspx

Je me demande du reste si j'ai placé mon if isset _COOKIE[] au bon endroit.
 
WRInaute accro
Un moyen "simple" de repérer un robot c'est de voir s'il lit /robots.txt...

Après, qu'on se base sur des IPs, des UAs, ou une combinaison des deux, c'est un choix un peu arbitraire... Si tu veux être sûr de ne louper personne, tu mets dans une table toutes les IPs qui ont lu /robots.txt, dans une autre tous les UAs qui ont fait de même, et si l'IP ou l'UA de ton visiteur est dans la table correspondante, hop: c'est un robot.

Jacques.
 
WRInaute passionné
Meeuuuhhh a dit:
Merci Jeroen. Il est où googlebot dans ta liste ?

Perso je viens de dégoter ce code, je voudrais votre avis dessus. Déjà je pense que c'est risqué avec des IP dans le tableau, car googlebot par exemple n'a jamais la même.

Je me demande du reste si j'ai placé mon if isset _COOKIE[] au bon endroit.

Perso je préfère la méthode de jeroen à la différence prés que je mettrais la liste dans un fichier externe que j'irais parcourir (ce qui faciliterait les mises à jour)
Tu peux trouver facilement de telles listes
 
WRInaute accro
Bon je lis votre discussion ce matin et en fait, personnellement, je ne me serait pas embêté avec le USER AGENT pour 2 raisons :
- la détection en PHP peut être foireuse
- à partir du moment où tu dresse une liste, il faut capable de la mettre à jour et être sûr qu'aucun "gentil" robot ne soit bloqué. Surtout qu'on sait que Google envoit des robots avec des user agent plus communs pour leur détection anti-cloacking (ex : IE ou firefox).

Donc voila, personnellement,

1- j'aurais fait la détection en javascript. Pas plus compliqué qu'en PHP mais Meuuuuh trouve ça foireux donc j'abandonne l'idée. En tout cas, c'est cette solution que j'aurais fait en 1er

2- Sinon, j'aurais tout simplement essayer d'initialisé mes variables de sorte que si l'utilisateur n'accepte pas les cookies, on ne le redirige pas vers le disclaimer. Je sais que là, en PHP, c'est pas facile mais il doit bien y avoir une solution...
 
WRInaute accro
J'pense à une chose, pourquoi ne pas déclencher la redirection vers le disclaimer par Javascript; comme ça les moteurs n'y vont pas et les internautes y passeront ?
Edit : Ah mince j'avais pas lu la réponse de BLman :)
 
WRInaute passionné
Bah oui mais dans ton deuxième cas, tu laisses passer les visiteurs qui n'acceptent pas les cookies, même s'ils sont peu nombreux.


GoogleBot (et consors) sont ici : "bot"
Le simple fait de marquer "bot" va autoriser tous les bots de google ?! Comment cela se fait-il ?

Code:
$moteur_tab=array("bot","Scooter","Slurp","Voila","WiseNut","Fast","Index","Teoma","Mirago","search","find","loader","archive","Spider","Crawler");
foreach($moteur_tab as $key) if(stristr($_SERVER['HTTP_USER_AGENT'],$key)) $moteur=1;

Ton script est plus simple en effet. Finanement la fonction stristr() parcoure les informations de la variables USER_AGENT, à la recherche des mots clefs indiqués plus haut, c'est cela ? Effectivement dans ce cas, si tous les noms des robots de google se termine par bot, ça les inclut de fait.



**edit**
Bon j'ai fait comme ça, vous en pensez quoi :?:
Code:
$moteur_tab=array("bot","Scooter","Slurp","Voila","WiseNut","Fast","Index","Teoma","Mirago","search","find","loader","archive","Spider","Crawler");
foreach($moteur_tab as $key) if(!stristr($_SERVER['HTTP_USER_AGENT'],$key)) {
//test du cookie, si on a pas validé les CGU, retour à l'accueil
if(!isset($_COOKIE["majeur"]) OR $_COOKIE["majeur"]=='non')
{
die(header('Location: http://www.site.com'));
}//ferme if !isset $cookie
;}//ferme if !stristr()

Finalement, je n'ai ajouté que le ! devant la fonction stristr().
 
Discussions similaires
Haut