Signal d’automatisation et réglages de Chrome
Dans la matrice contrôlée, le résultat suit la valeur native de navigator.webdriver, indépendamment de la présence de --enable-automation. Ce constat porte sur les conditions testées, pas sur une règle universelle de Google.
Comparaison factorielle
Chrome 153.0.8010.52, même binaire et même SHA-256, même VPS, mêmes adresses IPv4 et IPv6, même requête « musée du Louvre site officiel », langue fr-FR/fr, viewport 1280 × 720. Chaque navigation utilise un profil neuf. Le getter reste natif ; sa valeur est vérifiée avant et après navigation. CDP est connecté dans toutes les cellules.
La fonctionnalité Blink AutomationControlled est désactivée dans les quatre combinaisons. La commande CDP Emulation.setAutomationOverride contrôle le signal natif indépendamment de la présence du flag. Deux blocs contiennent chacun les quatre combinaisons dans un ordre randomisé, fixé avant exécution (graine 20261019). Deux témoins ordinaires, sans désactivation de la fonctionnalité ni flag, encadrent les essais.
| Flag --enable-automation | webdriver natif | Résultat |
|---|---|---|
| Absent | false | 2 résultats sur 2 |
| Présent | false | 2 résultats sur 2 |
| Absent | true | 2 refus sur 2 |
| Présent | true | 2 refus sur 2 |
Les deux témoins affichent les résultats. Les dix navigations sont complètes, sans erreur technique ni changement des adresses de sortie. Aucun effet propre du flag n’est distinguable dans cette matrice. L’intervention sur le signal natif soutient un rôle causal dans cet environnement ; elle ne permet pas de connaître le score serveur ni d’attribuer le verdict à une lecture particulière d’une VM.
Contrôles des réglages et du pilotage
La comparaison des navigateurs et des réglages comprend 37 navigations, distinctes de la matrice factorielle. Les options proviennent du processus Chrome lancé par Playwright 1.51, hors canal de pilotage, profil et URL de départ.
| Configuration | Observation |
|---|---|
| Chrome normal avec port de débogage ouvert | Résultats, avec ou sans Playwright connecté |
| Liste de 17 fonctions désactivées | 3 résultats sur 3 |
| 29 autres réglages de Playwright | 3 résultats sur 3 |
| --enable-automation seul, sans intervention sur le signal | 1 refus ; webdriver=true |
| Ensemble des 31 réglages, sans Playwright | Refus |
Les groupes couvrent les 31 réglages ; la combinaison des 30 réglages sans le flag n’a pas été testée. Les refus de cette comparaison de réglages ne sont mesurés qu’une fois par configuration. Les contrôles du flag et des groupes vérifient aussi la sortie IPv6 utilisée par Chrome ; les comparaisons générales Chrome/Camoufox et port de débogage ne contrôlent que l’IPv4.
Un remplacement JavaScript du getter retournant false reçoit également un refus, alors que le témoin natif qui le suit affiche les résultats. Ce remplacement n’est donc pas une intervention neutre et ne se confond pas avec le contrôle natif de la matrice.
Classification et portée
Les documents acceptés affichent les résultats Search en HTTP 200 avec #search. Les refus conduisent le document principal vers /sorry, puis à une réponse 429. La classification recoupe navigation, contenu et captures d’écran ; une requête de fond vers /sorry ne constitue pas un refus du document principal. Dans la comparaison du flag seul, la page de vérification est suivie d’un rechargement environ 0,2 seconde plus tard.
Deux répétitions par cellule, une machine, un réseau et une requête : ces effectifs ne permettent pas d’estimer un taux de détection généralisable. Les profils neufs ne sont pas identiques bit à bit et les états serveur ne sont pas contrôlés. Les interventions restent des commandes du navigateur dans un environnement où AutomationControlled est désactivé. Ni l’unicité du signal dans la décision de Google ni sa suffisance dans tous les environnements ne sont établies. Aucun CAPTCHA n’est résolu. Profils, cookies, tokens et traces brutes restent privés.