Lexpaaaage, à secouez, sinon les pages, elles restent en bas    —  gogoprog

Discussions

Crawler

krapou 687 Geek
Bonjour !

Je cherche à faire un crawler, jusque là, rien de méchant.

Je voudrais pouvoir le lâcher sur un site, me cantonner au domaine du site + les iframes, toujours rien de méchant, d'autant plus que je tente avec du python ou du PHP (mais je préfère une logique côté client).

Par contre c'est la finalité qui me pose soucis, autant récupérer le DOM ça va, autant ce que je veux moi, c'est récupérer les cookies (simplement pour les lister, les connaître, bref, automatiser les tâches relative au listage des cookies qu'impose l'UE).

J'avais donc quelques questions :
-> Est-ce que quand on récupère l'entête http on récupère toutes les créations de cookies ?
-> Est-il possible de lister les appels aux cookies d'une façon analogue ?
-> Auriez-vous des langages / libraries / framework / outils permettant de faire ça (même si c'est autre chose que du Python ou PHP) ?
-> Pareil pour les conseils :)
Fabe 610 Geek
krapouJ'avais donc quelques questions :
-> Est-ce que quand on récupère l'entête http on récupère toutes les créations de cookies ?
-> Est-il possible de lister les appels aux cookies d'une façon analogue ?
-> Auriez-vous des langages / libraries / framework / outils permettant de faire ça (même si c'est autre chose que du Python ou PHP) ?
-> Pareil pour les conseils :)
1/ Oui, c'est le header Set-Cookie (note qu'il est possible de définir un cookie en javascript)
2/ Pas compris
3/ symfony.com/doc/current/… (Pour la partie DOM)

Pour la partie cookie, j'ai pas vraiment compris ce que tu veux faire. Simplement répertorier les cookies déposés par un site ? Quel besoin de crawler le DOM à ce moment là ? Suivre les liens ?


Ce message a été modifié 1 fois. Dernière modification : 13 octobre 2014 à 16:29 par Fabe.

krapou 687 Geek
Merci Fabe :jap:

C'est peut-être un peu lourd Symfony, non ?

En fait, pour le point 2, je voudrais lister les cookies utilisés, et pas seulement les cookies créés. Par exemple si un site tiers essaye de lire un cookie qu'il n'a pas précédemment créé, dans un monde idéal j'aimerai pouvoir le savoir.

Et oui, le Dom ne me servira qu'à deux choses : lister les pages et les suivre, éventuellement trouver les cookies gérés via JS (google analytics ?)


Ce message a été modifié 1 fois. Dernière modification : 13 octobre 2014 à 16:33 par krapou.

Fabe 610 Geek
krapouC'est peut-être un peu lourd Symfony, non ?
Le DomCrawler est un composant autonome : packagist.org/packages/s… (tu utilises composer, n'est-ce pas ? ;-) )
krapouEn fait, pour le point 2, je voudrais lister les cookies utilisés, et pas seulement les cookies créés. Par exemple si un site tiers essaye de lire un cookie qu'il n'a pas précédemment créé, dans un monde idéal j'aimerai pouvoir le savoir.
Je comprends pas ce que tu veux dire, le navigateur n'envoie les cookies que lorsqu'il émet une requête vers le domain + path qui est à l'origine du cookie. Il est possible de créér des cookies multi-domaines à partir du troisième niveau de domaine (par exemple, il est possible de créér un cookie qui sera renvoyé à tous les sous-domaines de .lexpage.net). C'est ceux là qui t'intéressent ?

Si tu cherches à savoir si le serveur fais oui ou non quelque chose de l'information qui lui est envoyée dans un cookie, ce n'est pas possible.

Si tu cherches à savoir si un domaine contient une ressource qui dépose des cookies depuis un domaine différent, il te faut récupérer le DOM, chercher toutes ses ressources (img, css, js, medias, etc...) et envoyer des requêtes HTTP vers celles-ci pour voir si il y a des cookies dans la réponse.

Idéalement, il faut aussi exécuter le javascript afin de s'assurer que celui-ci n'envoie pas un appel ajax qui poserait un cookie. En principe, ce dernier cas est interdit par la same origin policy, mais cette interdiction peut être contournée explicitement par le webmaster du site d'origine via l'utilisation d'un en-tête HTTP ou de JSONP. C'est souvent le cas pour intégrer certains services SAAS de type gestionnaire de commentaires ou analytics.


Ce message a été modifié 1 fois. Dernière modification : 13 octobre 2014 à 16:42 par Fabe.

krapou 687 Geek
Non, je n'utilise pas composer, parce que je n'en ai pas l'utilité sur les projets sur lesquels je bosse. Mais si j'ai pu faire un peu de symfony2 en formation, je n'avais pas eu vent des composants autonomes comme ça.

Ça tombe, bien, ça fait partie des choses qu'il faut que je bosse / révise / apprenne.

Enfin, pour répondre au point que tu évoques, non, je ne veux pas (du moins pas d'un point de vue informatique) déterminer l'utilisation du cookie. Je voudrais juste savoir si le site fait des appels à des cookies tiers sans les créer.

Par exemple, si twitter crée un cookie d'authentification lorsque je vais sur leur site, est-ce qu'il est utilisé lorsque je vais sur un autre site intégrant des widgets de réseaux sociaux. Ils peuvent via iframe notamment, tenter de lire le cookie pour tracer l'utilisateur.

Enfin, j'en sais rien, mais ça me permettrait de savoir. :bigsmile:

Il y a déjà de quoi lire dans ton billet, enfin le billet je l'ai lu, je veux dire approfondir, et rien que pour ça, merci.
Guybrush 8429 Bob
J'ai parcouru le thread en vitesse, mais y a une excellente librairie en Python pour faire tout ça... mais je me souviens plus du nom :-D Je me demande si c'est pas Beautiful Soup. Regarde de ce coté :)
krapou 687 Geek
Oui, beautiful soup, je m'en servais pour parser le DOM, et ça faisait ça très bien.

Je n'avais pas regardé du côté des cookies en revanche, je vais jeter un oeil, merci !


Ce message a été modifié 1 fois. Dernière modification : 13 octobre 2014 à 21:03 par krapou.

Répondre

Vous devez être inscrit et identifié.