Avant de commencer
Si vous n’administrez pas le serveur, transmettez cette liste à la personne qui le gère. Il lui faut :- Apache 2.4 avec
mod_rewrite,mod_setenvifetmod_log_configactivés, et le programmerotatelogsinstallé avec Apache ; - l’autorisation de modifier la configuration d’Apache et de le recharger ;
- un shell Linux avec
sh,curl,find,splitetsha256sum, et un moyen de lancer une commande toutes les cinq minutes, comme cron ; - un accès HTTPS sortant depuis le serveur vers
https://www.qwairy.co; - le
ServerNamede l’hôte virtuel, qui doit être le nom d’hôte configuré pour la marque Qwairy, ou son équivalent apex ouwww; - une clé créée dans Qwairy, comme décrit ci-dessous.
Créer et protéger la clé
- Dans Measure > Analytics des crawlers > Paramètres, sélectionnez API HTTP générique.
- Sélectionnez Créer une clé, puis saisissez un nom descriptif et le fuseau horaire IANA utilisé pour les analytics quotidiennes.
- Copiez le secret lorsqu’il apparaît. Qwairy n’en affiche ensuite que le préfixe.
- Sur le serveur, enregistrez-le dans un fichier lisible uniquement par l’utilisateur qui exécute le script :
YOUR_CRAWLER_KEY par le secret. Ne le commitez pas dans le gestionnaire de code source et ne l’écrivez pas dans des logs.
Écrire un fichier de log dédié
La configuration ci-dessous écrit un événement JSON par ligne, uniquement pour les requêtesGET et HEAD des crawlers d’IA connus. Un nouveau fichier démarre toutes les cinq minutes : le script d’envoi ne lit donc que des fichiers qu’Apache a fermés.
1
Créez le répertoire de logs
/var/log/httpd sur les systèmes dérivés de Red Hat, et gardez le même chemin à chaque étape.2
Définissez le filtre de crawlers et le format de log
Ajoutez ces lignes à la configuration principale du serveur, en dehors de tout bloc La liste des User-Agents correspond aux recettes générées dans Qwairy. Qwairy réapplique son registre maintenu à la réception : une liste plus ancienne ne manque que les identités ajoutées depuis.
<VirtualHost> :3
Journalisez les requêtes des crawlers d’IA dans l’hôte virtuel
Ajoutez ces lignes dans le Lancez
<VirtualHost> qui sert le site en HTTPS, avant toute autre règle de réécriture.Si cet hôte virtuel n’a pas encore de ligne CustomLog, il écrit dans le log d’accès principal du serveur. Un CustomLog ajouté dans un hôte virtuel interrompt cet héritage : copiez d’abord la ligne CustomLog principale dans l’hôte virtuel pour conserver votre log d’accès habituel.command -v rotatelogs et utilisez le chemin renvoyé. Si un autre hôte virtuel sert aussi des pages du même site, ajoutez-y les mêmes lignes avec un autre préfixe de fichier.4
Vérifiez et rechargez Apache
Une ligne ressemble à ceci :
Envoyer les fichiers fermés
Enregistrez ce script sous/usr/local/bin/qwairy-send-logs, puis lancez sudo chmod 700 /usr/local/bin/qwairy-send-logs :
Idempotency-Key dérivée de son contenu, et un répertoire d’étape permet à un passage interrompu de reprendre avec les mêmes lots : aucune ligne n’est comptée deux fois. Il traite les réponses ainsi :
Planifiez le script toutes les cinq minutes, par exemple dans
/etc/cron.d/qwairy :
/var/log/apache2/qwairy, ajoutez QWAIRY_LOG_DIR=/votre/chemin avant le script dans la ligne cron.
Pour lancer le script à la main sans délai aléatoire, définissez QWAIRY_MAX_DELAY=0 :
Vérifier la livraison
-
Demandez une page en tant que crawler d’IA, en remplaçant le nom d’hôte :
-
Vérifiez qu’une ligne apparaît dans le fichier le plus récent de
/var/log/apache2/qwairy, avec"request_path":"/", votreServerNameet une heure avec décalage. -
Attendez au moins six minutes, puis lancez le script une fois à la main avec la commande ci-dessus. Il n’affiche rien lorsque tous les lots ont été acceptés, et
failed/reste vide. - Dans Qwairy, attendez que le connecteur passe de l’état en attente à connecté, puis ouvrez le jour analytique en cours et cherchez la page.
Limites et comportement
- Les événements arrivent dans Qwairy environ 6 à 20 minutes après la requête : jusqu’à cinq minutes avant la fermeture du fichier, six minutes avant que le script le considère comme fermé, jusqu’à cinq minutes avant le passage suivant de cron, et jusqu’à quatre minutes de délai aléatoire.
- Les événements sont acceptés jusqu’à 72 heures après la fin de leur jour analytique. Si l’envoi s’arrête plus longtemps, les événements plus anciens sortent de la fenêtre d’arrivée tardive et sont rejetés. Les logs d’accès historiques ne peuvent pas être importés.
- Seules les requêtes
GETetHEADdes crawlers d’IA listés, avec une ligne de requête en ASCII imprimable et un User-Agent en ASCII imprimable de 512 caractères au plus, sont écrites. Le trafic humain et les autres requêtes ne quittent jamais le serveur. - Une seule ligne invalide fait renvoyer
400à tout le lot. Les autres lignes de ce lot ne sont pas comptées tant que vous ne l’avez pas corrigé. - Les requêtes servies par un CDN ou un cache avant Apache ne sont pas observées.
Dépannage
Revenir en arrière
- Retirez de l’hôte virtuel les lignes
CustomLoget de réécriture de Qwairy, conservez votreCustomLoghabituel, puis lancezsudo apachectl graceful. - Attendez au moins six minutes pour que le dernier fichier soit considéré comme fermé, puis lancez le script une dernière fois à la main avec la commande ci-dessus.
- Vérifiez que le répertoire de logs ne contient plus qu’un répertoire
failed/vide. Traitez tout lot restant avant de continuer. - Supprimez
/etc/cron.d/qwairy,/usr/local/bin/qwairy-send-logs,/etc/qwairy/crawler.envet le répertoire de logs. - Révoquez la clé dans Qwairy.

