Modérateur
Bonjour,

Je voulais juste savoir si, lorsqu'on récupère le contenu d'une page Web en utilisant la fonction file_get_contents(), tout se passe comme si cette page avait été visitée.
Exemple. Je récupère et affiche le contenu (code HTML) de la page d'accueil d'alsacreations ainsi :
<?php
$alsahome = file_get_contents('http://www.alsacreations.com/');
echo $alsahome;
?>

La question : est-ce qu'en faisant cela, tout se passe comme si cette page avait été visitée par un internaute (par exemple, le script de statistique ajoutera un hit pour la page d'accueil) ?

Merci d'avance pour votre aide. Smiley smile
Modifié par jojaba (10 May 2016 - 07:55)
Dès l'instant où une connexion aura été établie entre le navigateur et le serveur pour faire transiter une page HTML, le compteur de visites est susceptible d'être incrémenté.
Tout dépend en fait du mode de comptage. Si un script javascript est utilisé, il est possible qu'il soit ignoré si le client a désactivé javascript.
Si le langage côté serveur effectue lui-même ce comptage, la visite sera de facto enregistrée.
Pour le script javascript, par exemple, les "pages perso Orange" le rajoutent systématiquement sur les pages HTML (procédé à mon avis plus que douteux...), mais je bloque son exécution côté client avec une balise META Content-Security-Policy. Je n'aime pas vraiment qu'on m'impose des scripts non sollicités Smiley smile
Modérateur
Merci sepecat pour ta réponse.
L'exemple du compteur était peut-être mal trouvé de ma part, ce n'est pas le compteur qui m'importe. La question à laquelle il faudrait répondre dans mon cas est : est-ce que le fait de récupérer le contenu d'une page (côté serveur donc) induit forcément qu'elle ait été visitée ?
En d'autres termes plus techniques, est-ce que le script php ci-dessous sera considéré comme un affichage de cette page par un navigateur.
J'explique un peu pourquoi je demande ça pour préciser les choses.

En fait, je souhaiterais récupérer par scrapping (rien d'illégal, ne vous inquiétez pas, cela se passera sur des sites qui m'appartiennent) les résultats d'une recherche sur une page du type :
http://un-site.fr/recherche.php?s=mot_recherche

Je récupère donc le contenu de cette page avec la méthode ci-dessus, je trouve ce que je veux afficher en utilisant le balisage html et je l'affiche sur le site qui utilise le script.
Lorsqu'une recherche est effectuée sur le site http://un-site.fr, il y a indexation des ressources trouvées. J'aimerais que cette indexation ait lieu également en utilisant le scrapping. Il me faut donc savoir si, lorsque je procède de la manière indiquée ci-dessus l'indexation se fera également.
Je ne sais pas si j'ai été plus clair Smiley ohwell
Modifié par jojaba (10 May 2016 - 10:57)
Quand tu fais un file_get_contents avec une URL, tout se passe comme n'importe quelle requête pour la cible. De ton côté, PHP va, comme un navigateur, envoyer une requête HTTP. À moins que ta cible ne détecte tes requêtes (par quelque moyen que ce soit) et ne bloque l'indexation pour celles-ci, tout devrait se passer normalement.

Si tu regardes la doc PHP (http://php.net/manual/fr/function.file-get-contents.php), tu peux voir qu'on peut même définir les en-têtes HTTP que file_get_contents doit envoyer.

En espérant avoir pu t'aider
Modifié par Bguigui67 (10 May 2016 - 13:49)
Bonjour,

Je n'ai pas de réponse à apporter au sujet toutefois ceci me titille l'oreille:
sepecat a écrit :
[...] je bloque son exécution côté client avec une balise META Content-Security-Policy.

Ce qui m'inspire quelque questions sur le sujet de La balise meta CSP


Bon courage !
Modifié par Greg_Lumiere (10 May 2016 - 11:30)
Modérateur
@ Greg_Lumiere
Euh, hors sujet Greg !!! Smiley langue
Tu as posté dans le mauvais fil...
@ Bguigui67
Merci Guillaume, tu réponds exactement à mon interrogation. Smiley smile
Greg_Lumiere a écrit :
Bonjour,

Je n'ai pas de réponse à apporter au sujet toutefois ceci me titille l'oreille:
Ce qui m'inspire quelque questions sur le sujet de La balise meta CSP
Bon courage !

Salut Greg... Je réponds ici pour pouvoir citer ton commentaire.
Concernant CSP, tu peux indiquer quelles seront les ressources accessibles ou non depuis le navigateur. En déclarant le script de stat Orange persona non grata, celui-ci est purement et simplement bloqué par les navigateurs conformes (c'est à dire hors IE) et non exécuté.
CSP est très puissant côté sécurisation et je l'ai inclus dans mon générateur HTML.
jojaba a écrit :
Merci sepecat pour ta réponse.
L'exemple du compteur était peut-être mal trouvé de ma part, ce n'est pas le compteur qui m'importe. La question à laquelle il faudrait répondre dans mon cas est : est-ce que le fait de récupérer le contenu d'une page (côté serveur donc) induit forcément qu'elle ait été visitée ?
En d'autres termes plus techniques, est-ce que le script php ci-dessous sera considéré comme un affichage de cette page par un navigateur.
J'explique un peu pourquoi je demande ça pour préciser les choses.

En fait, je souhaiterais récupérer par scrapping (rien d'illégal, ne vous inquiétez pas, cela se passera sur des sites qui m'appartiennent) les résultats d'une recherche sur une page du type :
http://un-site.fr/recherche.php?s=mot_recherche

Je récupère donc le contenu de cette page avec la méthode ci-dessus, je trouve ce que je veux afficher en utilisant le balisage html et je l'affiche sur le site qui utilise le script.
Lorsqu'une recherche est effectuée sur le site http://un-site.fr, il y a indexation des ressources trouvées. J'aimerais que cette indexation ait lieu également en utilisant le scrapping. Il me faut donc savoir si, lorsque je procède de la manière indiquée ci-dessus l'indexation se fera également.
Je ne sais pas si j'ai été plus clair Smiley ohwell

Euh... J'avoue rester perplexe sur le besoin exact mais rien de grave, on devrait s'en sortir Smiley smile
A priori, je crois comprendre que tu souhaites effectuer une recherche sur le contenu d'un site et indexer le résultat. J'ai un peu plus de mal par contre à voir la relation avec le statut "page visitée / non visitée".
Modérateur
Pour ton navigateur, il n'aura pas visité la page puisque c'est ton serveur qui le fait.

Le serveur visé recevra une visite de ton serveur, tout dépend ensuite des entêtes que ton serveur envoi.

http://php.net/manual/fr/function.file-get-contents.php , http://php.net/manual/fr/function.stream-context-create.php et http://php.net/manual/fr/context.http.php et http://php.net/manual/fr/filesystem.configuration.php
Modifié par gcyrillus (10 May 2016 - 22:29)