Le soir du Nouvel An 2018, j’ai publié un article qui expliquait comment gratter les pages d’un site et écrire les résultats dans Google BigQuery. J’ai considéré que c’était un moyen sympa de créer votre propre grattoir Web, car il utilisait la puissance et l’échelle de la plate-forme Google Cloud combinées à la flexibilité d’un robot d’exploration sans tête construit au-dessus de Puppeteer.
Dans l’article d’aujourd’hui, je revisite cette solution afin de partager avec vous sa dernière version, qui inclut une fonctionnalité qui pourrait vous être extrêmement utile lors de l’audit des cookies déposés sur votre site.
Le but de cet exercice est de lister tous les cookies, à la fois propriétaires et tiers, que le robot d’exploration rencontre lorsqu’il suit automatiquement les liens de votre site. De cette façon, vous avez une idée du stockage des cookies réellement utilisé sur votre site.
Vous pouvez utiliser ces informations pour auditer et annoter de manière proactive l’utilisation des cookies sur votre site, ce qui est utile si vous vous efforcez de vous conformer à la réglementation européenne sur les cookies, par exemple.
X
La newsletter Mijoter
Abonnez-vous à la newsletter Simmer pour recevoir les dernières nouvelles et le contenu de Simo Ahava dans votre boîte de réception !
Comment le configurer
C’est la partie facile : vous suivez les exact étapes décrites dans l’article original. Le seul changement que vous voudrez peut-être faire est de définir l’indicateur de configuration skipExternal
pour true
dans le config.json
fichier, ce qui signifie que le robot d’exploration n’explorera plus les pages externes liées à votre site. Cela a été fait à l’origine pour obtenir les codes d’état HTTP des liens externes, mais comme vous vous concentrez sur un audit des cookies, les pages externes ne feraient qu’ajouter à la confusion.
En dehors de ce petit changement, suivez simplement les étapes de l’article d’origine. Juste pour récapituler, vous devriez avoir ce qui suit :
- UN Projet Google Cloud avec les API nécessaires activées.
- Le config.json fichier stocké dans un bucket de stockage Google Cloud.
- Le
gce-install.sh
script modifié avec l’URL du fichier de configuration dans le compartiment de stockage. - Possibilité d’exécuter le script de ligne de commande qui crée l’instance de machine virtuelle.
Une fois la machine virtuelle lancée, en supposant que vous ayez suivi méticuleusement les instructions, vous vous retrouverez avec une table BigQuery qui collecte un flux de pages récupérées, ainsi que les métadonnées de cookie nouvellement ajoutées.
Le robot d’exploration analyse les cookies dans les requêtes de la première et de la tierce partie. Les informations sur les cookies sont analysées nom, valeur, taille, domaine, chemin, expiration, HttpOnly, sécuriséet MêmeSite.
Exemples de requêtes
Une fois que vous avez les données dans le tableau, voici quelques requêtes SQL BigQuery que vous pouvez exécuter pour tirer le meilleur parti des nouvelles informations.
La première requête est simple : elle vous permet d’obtenir l’URL explorée ainsi que tous les cookies déposés sur le site.
SELECT
final_url,
cookies
FROM
`project.dataset.table`
Cette deuxième requête renvoie uniquement les cookies, regroupant les cookies similaires. C’est un moyen pratique d’obtenir une liste de tous les cookies distincts déposés lors de l’exploration. Chaque cookie avec un domaine un espace de noms différent du vôtre est un Cookie tiers (sauf si vous avez omis de régler le skipExternal
signaler à true
dans l’étape de configuration).
SELECT
c.name,
c.domain,
c.httpOnly,
c.secure,
c.session,
c.sameSite
FROM
`project.dataset.table`,
UNNEST(cookies) AS c
GROUP BY
1, 2, 3, 4, 5, 6
ORDER BY
1 ASC
Vous pouvez trouver une capture d’écran du résultat au tout début de cet article.
Mises en garde
Il y a quelques mises en garde à cette solution.
Les sites dynamiques qui ne révèlent les liens de navigation qu’en un clic, ou qui chargent du contenu avec un chargement différé, devront être configurés manuellement dans un robot d’exploration personnalisé utilisant Puppeteer’s page
Apis. Ce n’est pas trivial à mettre en place, car vous devrez essentiellement ajouter seul les liens extraits d’un clic de navigation dynamique (ou d’un événement de chargement différé) dans le headless-chrome-crawler
file d’attente pour éviter les doublons.
Un autre problème est qu’il peut y avoir des cookies qui ne sont définis que sur l’utilisateur qui interagit avec le site. Le premier exemple est un événement de connexion ou un événement de conversion qui ne repose pas sur un cookie de reciblage (qui se serait déclenché avec le chargement de la page). Dans ces cas, un audit complet des cookies nécessiterait que le robot d’exploration soit configuré avec ces chemins de navigation personnalisés, afin que tous les cookies soient audités en conséquence.
Il est également possible que certains fournisseurs puissent détecter les robots d’exploration et empêcher leurs SDK de déposer des cookies.
Dans tous les cas, la solution décrite ici devrait être un point de départ pour un audit de stockage plus complet. Il ne traite pas d’autres formes de stockage avec état (par exemple localStorage
ou IndexedDB
), mais cela vous donne une idée du stockage des cookies utilisé par les scripts et les balises exécutés sur votre site.
Résumé
J’espère que cet article vous incitera à revoir le projet web-scraper-gcp, en particulier avec les fonctionnalités mises à jour d’exploration des cookies. Je crois que chaque organisation dans le monde devrait exercer ce type de surveillance et de gouvernance au nom de la responsabilité. Vous le devez aux visiteurs de votre site. Et, si vos pratiques relèvent de la réglementation légale, par exemple du RGPD ou de la CPRA de Californie, vous devriez être très intéressé à savoir quel stockage de navigateur est utilisé sur votre site.
Le headless-chrome-crawler
Le projet n’a pas été mis à jour depuis quelques années, mais il fonctionne toujours. J’espère le forker un jour et résoudre les problèmes de dépendance, que vous avez peut-être remarqués si vous exécutiez la solution localement.
Faites-moi savoir dans les commentaires si vous avez des questions ou des commentaires sur la solution – je serai heureux de vous aider si je le peux !