Correctifs Rebrowser : une fois le proxy connecté
Comparez les correctifs Rebrowser, Playwright original et un profil déclaré sur une page contrôlée. Distinguez bibliothèque, rendu et routage du proxy.
BotBrowser Team
Vous voulez la documentation structurée pour Empreinte ?
Cet article fait partie de la bibliothèque éditoriale. Pour les étapes de configuration, la référence et les mises à jour continues, passez directement à la section docs.
Une connexion proxy Rebrowser fonctionnelle ne détermine ni la sortie du canvas, ni les polices, ni le traitement audio du navigateur. Identifiez d'abord si l'application utilise les correctifs open source des bibliothèques Rebrowser, un service de navigateur hébergé, ou les deux. Ce sont des configurations différentes. BotBrowser fournit des contrôles de profil déclarés pour les graphismes, les polices et l'audio exposés par le navigateur, mais ne garantit pas la décision d'un site cible et ne peut pas faire d'un changement de proxy la définition d'un environnement de navigateur complet.
Résumé
- Les correctifs Rebrowser figés à une révision modifient le code des bibliothèques d'automatisation, notamment la gestion des contextes d'exécution et les arguments de lancement. Ils ne remplacent pas l'exécutable de Chrome.
- CDP peut exécuter des scripts et installer des scripts avant l'exécution d'un document. Une API qui sort du périmètre d'un correctif donné n'est pas pour autant inaccessible via CDP.
- Sur une page de test contrôlée sous Ubuntu, Playwright original et la bibliothèque corrigée ont renvoyé les mêmes quatre observations de rendu lors de trois lancements indépendants chacun. La configuration à profil déclaré a modifié trois observations ; le résultat audio est resté identique.
- La configuration de profil utilisait une version corrective du navigateur différente et une cible Windows sous Ubuntu. Ses différences sont des observations de cette configuration, et non une mesure isolée d'une couche d'implémentation.
Sommaire
- Distinguer un paquet Rebrowser, un proxy et un navigateur cloud
- Lire le correctif réel avant de délimiter son périmètre
- Comparer trois configurations sur une page contrôlée
- Interpréter séparément canvas, WebGL, polices et audio
- Reproduire l'observation sans tester un tiers
- Choisir la vérification suivante selon l'opération en échec
- Conclusion pratique
Distinguer un paquet Rebrowser, un proxy et un navigateur cloud
L'expression rebrowser proxy peut masquer trois questions indépendantes : quel paquet d'automatisation s'exécute, où son navigateur s'exécute et quel itinéraire transporte la requête. Consignez chacune explicitement. Installer un paquet ne prouve pas qu'un proxy a été utilisé. Se connecter à un navigateur distant ne prouve pas que son système de fichiers, son profil ou son exécutable correspond à une installation locale. Un changement d'adresse publique de sortie ne démontre pas qu'une entrée du rendu a changé.
| Configuration | Ce qu'elle identifie | Ce qui exige encore des preuves distinctes |
|---|---|---|
| Paquet Playwright original | La bibliothèque d'automatisation et sa version | Exécutable du navigateur, arguments de lancement et itinéraire réseau |
| Paquet de remplacement direct Rebrowser | Une bibliothèque à laquelle les correctifs du projet sont appliqués | Paquet réellement chargé, Chrome sous-jacent et réglages des correctifs choisis |
| Connexion proxy | Un itinéraire pour le trafic qui lui est affecté | Réglages du navigateur, état stocké et interprétation du site cible |
| Session de navigateur hébergée | Un service de navigateur exploité à distance | Configuration propre au service, persistance et comportement réseau |
| Profil de navigateur déclaré | Des entrées appliquées à un environnement de navigateur compatible | Chargement réussi, sortie réelle et compatibilité avec l'application |
Le README officiel à la révision figée décrit les paquets de remplacement direct comme les bibliothèques originales auxquelles sont appliqués des correctifs, et présente séparément l'offre cloud du fournisseur. Une expérience sur un paquet local ne peut donc étayer une affirmation sur les identités de navigateur, l'offre de proxys, les prix ou les taux de réussite de ce produit cloud. Aucune session Rebrowser dans le cloud n'a fait partie de la comparaison ci-dessous.
Si la requête emprunte le mauvais itinéraire, commencez par les preuves réseau. Un observateur sous votre contrôle doit établir l'adresse de sortie, tandis qu'un marqueur à l'origine permet d'identifier la requête reçue. Les valeurs graphiques du navigateur ne permettent pas de savoir si un tunnel s'est authentifié. Le diagnostic d'itinéraire à contexte conservé traite des changements de routage du trafic ; le fonctionnement du lanceur traite du démarrage et de la gestion des sessions de navigateur configurées. Ni les preuves d'itinéraire ni un lancement réussi ne remplacent la vérification du paquet réellement chargé par une application.
N'incluez pas les identifiants du proxy dans le relevé de comparaison. Les noms et versions des paquets, les empreintes des navigateurs, une étiquette d'itinéraire et la réponse d'un observateur contrôlé suffisent généralement à séparer ces questions. Si aucun observateur autorisé n'est disponible, indiquez que l'itinéraire n'est pas vérifié. Une page correctement rendue n'identifie pas l'itinéraire qui l'a fournie, et une requête rejetée n'identifie pas la propriété du navigateur prise en compte par le site cible.
Lire le correctif réel avant de délimiter son périmètre
Le code source inspecté est celui du commit 31b51356499600f71126aae532f3d57abdc92272 de Rebrowser patches, notamment son correctif pour Playwright 1.64.1. Les paquets exécutés étaient [email protected] et [email protected]. Une version de paquet et la version amont visée par un correctif sont des identifiants différents ; conservez les deux au lieu de supposer que leurs derniers composants numériques doivent coïncider.
Le correctif source figé modifie la préparation des contextes d'exécution, le nommage du monde utilitaire et d'autres comportements de la bibliothèque. Ses modifications des arguments de lancement comprennent le réglage Blink relatif au contrôle par automatisation et des changements de plusieurs options par défaut. Cette description est plus précise que celle d'un ensemble de remplacements de propriétés de page. Certains changements affectent la manière dont la bibliothèque communique avec Chrome, d'autres les options transmises au démarrage de Chrome.
Ces détails expliquent aussi pourquoi un résultat de canvas inchangé ne prouve pas que le correctif a échoué. Modifier la gestion des contextes n'a pas le même objectif que modifier les pixels du canvas. Le moteur de rendu peut produire des octets identiques alors que la bibliothèque d'automatisation suit un chemin de préparation différent. À l'inverse, obtenir une chaîne différente d'une API ne prouve pas que le reste de l'environnement du navigateur est cohérent.
La limite générale du protocole exige la même prudence. CDP documente Runtime.evaluate et Page.addScriptToEvaluateOnNewDocument. Un client du protocole peut exécuter des scripts de page, y compris des scripts qui affectent le comportement visible depuis JavaScript. Ainsi, « ces correctifs figés ne configurent pas cette sortie de rendu » est une affirmation sur une implémentation. « CDP ne peut pas affecter les valeurs des API de rendu » serait une affirmation beaucoup plus large, que les fonctions documentées d'exécution de scripts ne justifient pas.
Le monde d'exécution constitue une autre entrée expérimentale. Un script évalué dans un monde isolé ne partage pas toutes les liaisons JavaScript avec le monde principal du document. Une comparaison qui change à la fois la bibliothèque et le monde utilisé pour lire une valeur peut attribuer la différence à la mauvaise entrée. Dans cette page de test, le propre script du document effectue les observations et les envoie à sa propre origine. Le pilote navigue et attend leur livraison ; il ne collecte pas les valeurs en évaluant la fonction d'observation dans un monde choisi par la bibliothèque.
Ne déduisez pas le résultat obtenu auprès d'un site cible de cette inspection du code. Le code source établit ce qu'une révision précise modifie. Il n'établit ni toutes les conséquences sur chaque version de Chrome, ni le comportement d'un autre paquet installé sous un nom semblable, ni le processus de décision d'un site web. Les affirmations de Rebrowser concernant des sites tiers n'ont pas été testées indépendamment ici et ne sont pas utilisées comme résultat.
Comparer trois configurations sur une page contrôlée
L'exécution contrôlée utilisait Ubuntu, des navigateurs avec interface graphique sur le même affichage, une zone d'affichage demandée de 1280 × 900 et des répertoires de données neufs et indépendants. Chaque configuration a été exécutée trois fois, soit neuf tâches dans un même pool global. La limite demandée pour le pool était de 20, plafonnée par les neuf tâches disponibles. L'échantillonnage des processus a observé neuf lignes d'exécution de navigateur actives simultanément, et le superviseur a vérifié l'absence de processus résiduels appartenant à l'exécution. Les pages originale et corrigée ont indiqué 1280 × 900 ; la configuration déclarée a indiqué 1288 × 944. La taille observée ne restait donc pas constante entre les trois configurations.
| Groupe | Paquet d'automatisation | Version réelle de l'exécutable | Profil |
|---|---|---|---|
| Original | [email protected] | Chrome standard 157.0.8103.50 | Aucun profil produit déclaré |
| Corrigé | [email protected] | Le même Chrome standard 157.0.8103.50 | Aucun profil produit déclaré |
| Déclaré | [email protected] | BotBrowser 157.0.8103.38 | Cible Chromium 157 Windows x64 sous Ubuntu |
La comparaison entre les groupes original et corrigé maintient le même exécutable standard. Le troisième groupe change à la fois l'exécutable et la configuration cible. Tous trois partagent la même version majeure du navigateur, mais leurs versions complètes ne sont pas identiques. Une différence dans cette troisième colonne ne peut pas identifier à elle seule l'effet d'un profil, de la version corrective de l'exécutable ou d'une couche d'implémentation. C'est un relevé de configurations utile, assorti de limites explicites, et non une affirmation contrôlée de la supériorité d'une couche.
Le tableau suivant utilise des préfixes des valeurs SHA-256 complètes uniquement pour faciliter la lecture. Les valeurs complètes, les algorithmes, les observations répétées et les relevés d'environnement sont conservés dans la sortie du programme de test exécutable. Un préfixe est une étiquette propre à cette exécution, pas un score d'identité.
Les observations consignées, le script de comparaison locale et le code source de la page contrôlée sont consultables. Enregistrez le script avec l'extension .mjs et la page à ses côtés sous le nom render-fixture.html. Le script public reproduit les observations de page ; il n'effectue pas l'audit distinct de chargement du profil utilisé pour accepter l'exécution contrôlée.
| Observation | Original | Corrigé | Profil déclaré |
|---|---|---|---|
| Préfixe SHA-256 du RGBA du canvas | 26cd080f5b96 | 26cd080f5b96 | 0119c1c2e040 |
| Renderer WebGL, abrégé | ANGLE, Vulkan, SwiftShader | ANGLE, Vulkan, SwiftShader | ANGLE, NVIDIA Quadro P1000, Direct3D11 |
| Polices candidates détectées | Arial; Times New Roman; Courier New; DejaVu Sans; Liberation Sans | Les cinq mêmes candidates | Arial; Times New Roman; Courier New |
| Préfixe SHA-256 des échantillons audio hors ligne | 0d6f33df90bb | 0d6f33df90bb | 0d6f33df90bb |
| Somme des valeurs absolues des 500 derniers échantillons audio | 124.04347776696522 | 124.04347776696522 | 124.04347776696522 |
Ces observations se sont répétées dans chaque groupe lors des trois nouveaux lancements. En particulier, les échantillons audio n'ont pas changé dans le groupe à profil déclaré pour cette entrée. Une comparaison doit conserver cette égalité au lieu de la simplifier en affirmant que la configuration du profil modifie toutes les surfaces d'empreinte numérique.
Le superviseur de l'exécution acceptée a indiqué :
"comparisonPermitted": true,
"peakActive": 9,
Cette permission signifie que les prérequis locaux de l'expérience ont été satisfaits. Les premières tentatives ne disposaient pas des preuves requises de chargement du profil dans les journaux et n'ont pas été acceptées comme résultats à trois groupes. L'exécution finale a conservé les preuves de déchiffrement et de chargement réussis du fichier chiffré exact, ainsi que l'identité Windows déclarée provenant du même contexte de page. Un nom de fichier, un processus lancé ou une session CDP connectée n'ont pas été considérés seuls comme une preuve de chargement.
Aucun site web externe n'a été contacté pour obtenir le verdict d'un détecteur. La page de test n'utilisait pas de proxys ; elle ne peut donc ni mesurer les performances des proxys Rebrowser ni comparer des fournisseurs de proxys. Son résultat répond à la question plus restreinte de savoir si ces quatre observations de page ont changé dans les configurations locales consignées.
Interpréter séparément canvas, WebGL, polices et audio
La comparaison du canvas utilisait un canvas fixe de 300 × 80, avec des formes, des couleurs et un texte fixes. SHA-256 a été calculé sur les 96000 octets renvoyés par getImageData, avant l'encodage de l'image. Comparer à la place un fichier PNG ou une URL de données introduirait une entrée de sérialisation différente. Conservez le texte, la police demandée, les dimensions et l'ordre de dessin lorsque vous répétez la mesure. Un changement d'empreinte permet de repérer une sortie modifiée ; il n'explique pas si la cause vient des polices, de la rastérisation, des options du navigateur ou d'une autre entrée.
La comparaison WebGL consignait le renderer exposé via WEBGL_debug_renderer_info lorsqu'il était disponible. Le renderer indiqué décrit une valeur exposée, pas un inventaire vérifié du matériel physique. La configuration ciblant Windows indiquait un renderer Direct3D tout en s'exécutant sous Ubuntu ; présenter cette chaîne comme le GPU installé sur l'hôte serait donc trompeur. Si l'extension ou le contexte est indisponible, le relevé correct est « indisponible », et non une chaîne de renderer vide discrètement comparée comme une correspondance.
L'expérience sur les polices était volontairement limitée à un petit ensemble de candidates. Il s'agissait de Arial, Times New Roman, Courier New, DejaVu Sans, Liberation Sans et Noto Sans. Pour chacune, la page de test comparait la largeur d'un texte fixe aux polices de repli serif, sans-serif et monospace. Une détection signifie que la candidate a modifié la largeur mesurée avec cette méthode. Elle ne prouve pas l'existence du fichier de police exact, n'énumère pas toutes les polices installées et ne distingue pas tous les alias et substituts. La sortie complète conserve les largeurs ainsi que la liste des détections, afin qu'une étiquette sommaire ne masque pas l'observation sous-jacente.
L'audio hors ligne utilisait un canal, 5000 trames à 44100 Hz, un oscillateur triangulaire et une configuration fixe du compresseur. La sortie consigne une empreinte des octets des échantillons Float32 et la somme des valeurs absolues des 500 derniers échantillons. Il s'agit d'un calcul hors ligne, pas d'un enregistrement provenant d'un microphone, d'une carte son ou d'un haut-parleur. Des échantillons égaux établissent l'égalité pour ce graphe et cette entrée. Ils n'établissent pas que toutes les API audio, tous les appareils ou tous les graphes de traitement se comportent de manière identique.
L'accord au sein d'un groupe est également plus limité que la stabilité à long terme. Trois nouveaux lancements sur un hôte n'établissent pas la permanence d'une valeur après des mises à niveau du système d'exploitation, des changements de polices, de pilotes GPU ou de version du navigateur. De même, une seule observation différente ne révèle pas comment un système distant combine les signaux. Les contrôles documentés des surfaces du navigateur identifient les domaines configurables du produit ; le tableau établit uniquement le comportement réellement observé pour cette configuration sélectionnée.
Reproduire l'observation sans tester un tiers
Utilisez une page sous votre contrôle et gardez son script de collecte identique dans tous les groupes. Figez les versions des deux paquets d'automatisation et fournissez des chemins d'exécutable explicites. Playwright précise qu'un chemin vers un exécutable alternatif comporte un risque de compatibilité ; le bon fonctionnement avec les versions de Chrome testées ne doit donc pas devenir une promesse pour n'importe quelle version future. Consignez un échec de lancement comme un échec de préparation avant toute comparaison.
Une petite reproduction locale peut servir une page et enregistrer un résultat envoyé sans demander à un vérificateur tiers de l'interpréter. Avec Node.js, la partie livraison peut être :
import http from 'node:http';
import { readFile, writeFile } from 'node:fs/promises';
const page = await readFile('./render-fixture.html');
const server = http.createServer(async (request, response) => {
if (request.method === 'GET' && request.url === '/') {
response.writeHead(200, { 'Content-Type': 'text/html' });
response.end(page);
return;
}
if (request.method === 'POST' && request.url === '/results') {
const chunks = [];
let size = 0;
for await (const chunk of request) {
size += chunk.length;
if (size > 131072) {
response.writeHead(413).end();
return;
}
chunks.push(chunk);
}
const record = JSON.parse(Buffer.concat(chunks).toString('utf8'));
await writeFile('./observation.json', JSON.stringify(record, null, 2));
response.writeHead(200).end('recorded');
return;
}
response.writeHead(404).end();
});
server.listen(0, '127.0.0.1');
Cet exemple de livraison n'est pas un superviseur de navigateur complet : utilisez un fichier de résultat par tâche, fixez une échéance globale et fermez votre propre serveur ainsi que les contextes du navigateur après la livraison. Le programme complet de comparaison sépare ces tâches et consigne le nettoyage des processus. Une attente fixe n'est pas sa condition de fin. Il attend le POST de résultats de la page contrôlée, et une observation absente ou invalide reste une tâche en échec.
Utilisez des répertoires de données neufs et indépendants pour une comparaison portant uniquement sur le rendu. Partager un même répertoire de navigateur accessible en écriture entre des processus simultanés introduit des verrouillages et des interférences d'état. Si la question visée est la continuité de session, utilisez un contrat de test distinct, fondé sur des instantanés contrôlés pris navigateur fermé ; n'ajoutez pas discrètement des changements d'état stocké à une comparaison de rendu. De même, gardez constants le mode de lancement et la zone d'affichage, au lieu de changer à la fois la bibliothèque et le mode avec ou sans interface graphique.
Conservez les sorties non prises en charge. Une police candidate absente des deux groupes Chrome standard, une extension graphique indisponible ou un résultat audio inchangé peuvent être plus utiles qu'un tableau bien ordonné où tout diffère. Ces relevés expliquent quelle partie d'une hypothèse a échoué. Il n'est pas nécessaire d'en tirer une recommandation de produit. Pour une explication plus large des responsabilités des bibliothèques et des navigateurs, la comparaison générale du périmètre des correctifs apporte cette distinction ; cette expérience liée à des versions précises apporte l'observation spécifique.
Choisir la vérification suivante selon l'opération en échec
Lorsqu'une application continue de se comporter de façon inattendue après l'installation de Rebrowser, conservez la première opération en échec. L'action suivante utile dépend du moment de l'échec : importation du paquet, lancement de Chrome, navigation via un proxy, exécution du code applicatif ou réception de la réponse du site cible. Modifier les réglages du navigateur avant d'identifier cette couche rend plus difficile de savoir quel changement a compté.
| Symptôme | Première preuve | Action contrôlée suivante |
|---|---|---|
| Le correctif semble sans effet | Nom, version et emplacement résolu du paquet chargé | Confirmer que l'application importe le noyau corrigé, pas une autre copie installée |
| Un navigateur ne se lance pas | Version de l'exécutable, erreur de lancement et bibliothèque choisie | Vérifier la compatibilité sur une page connue sous votre contrôle |
| Les requêtes empruntent un itinéraire inattendu | Résultat de l'observateur contrôlé et configuration d'itinéraire | Corriger le routage séparément des réglages graphiques |
| Une valeur de rendu reste inchangée | Mêmes entrées de page, exécutable et méthode d'observation | Lire si ce correctif figé modifie réellement cette entrée |
| Le code applicatif diffère entre les mondes | Choix du contexte et accès aux liaisons du document | Vérifier les exigences du monde d'exécution avant de modifier les valeurs |
| Un site cible rejette une action | Réponse réelle et politique documentée de l'opérateur | S'arrêter à la limite du diagnostic autorisé ; ne pas déduire une règle de notation cachée |
Pour les importations, vérifier uniquement package.json ne suffit pas lorsqu'un espace de travail contient plusieurs arbres de dépendances ou alias. Consignez la version résolue depuis l'emplacement de l'application en cours d'exécution. Le README figé de Rebrowser documente un ancien problème de dépendance entre le paquet de remplacement direct et son noyau ; c'est une raison de vérifier le paquet réel, pas une affirmation selon laquelle toutes les installations en souffrent. Réinstaller un paquet de premier niveau sans rapport n'établit pas quel noyau l'application a chargé.
Pour les besoins de rendu, définissez la sortie requise avant de choisir un contrôle. Une charge de travail qui exige seulement qu'une page s'affiche correctement n'a pas le même critère d'acceptation qu'une charge qui doit conserver des réglages graphiques déclarés entre les sessions. La référence de cohérence de l'automatisation de BotBrowser documente le comportement du produit à cette limite, mais ni un profil configuré ni un correctif de bibliothèque ne peuvent certifier la classification d'identité d'un site cible.
Questions fréquentes
Rebrowser remplace-t-il Chrome ?
Les bibliothèques open source de remplacement direct inspectées ici corrigent le code des bibliothèques d'automatisation et utilisent un navigateur fourni ou installé séparément. Un service hébergé relève d'un autre périmètre de produit.
Un client CDP peut-il affecter les valeurs du canvas ?
CDP peut exécuter des scripts de page. L'affirmation étayée porte sur ce qu'une implémentation précise modifie réellement, pas sur une incapacité absolue du protocole à influencer un résultat visible depuis JavaScript.
Des valeurs identiques signifient-elles que le correctif n'a rien fait ?
Non. Cette page de test mesure quatre observations de rendu. Des modifications de la bibliothèque concernant la préparation des contextes ou les arguments de lancement peuvent être pertinentes sans modifier ces quatre sorties.
Un proxy donne-t-il un profil différent au navigateur ?
Une configuration proxy sélectionne le routage du trafic dans son périmètre. Elle ne définit pas, à elle seule, les polices, une entrée du canvas ou un graphe audio hors ligne.
Sources
- README de Rebrowser patches au commit inspecté
- Correctif source Rebrowser pour Playwright 1.64.1
- CDP Runtime.evaluate
- CDP Page.addScriptToEvaluateOnNewDocument
- Note de compatibilité executablePath de Playwright
- Présentation des surfaces du navigateur de BotBrowser
- Cohérence de l'automatisation BotBrowser
Conclusion pratique
Commencez par le paquet, l'exécutable et l'opération exacts qui ont échoué. Dans cette expérience fixe, le correctif de bibliothèque Rebrowser a laissé quatre observations de rendu identiques à celles de Playwright original, tandis que la configuration à profil déclaré a modifié les observations de canvas, de renderer et de polices candidates, mais a conservé un audio identique. Ces résultats répondent à une question de configuration locale. Ils ne classent pas les produits, ne caractérisent pas un service cloud et ne prédisent pas la décision d'un site cible. Conservez le routage, le comportement de la bibliothèque d'automatisation et les réglages déclarés du navigateur comme des entrées vérifiables séparément.
Cet article fait partie du guide : Qu'est-ce qu'une empreinte de navigateur ?
Articles Connexes
Plugins de correctifs navigateur : ce qu’ils changent
DémarrageBotBrowser Launcher : profils, proxy et démarrage
EmpreinteEmpreinte Canvas : fonctionnement et solutions
EmpreinteLire les signaux d’empreinte du navigateur
EmpreinteEmpreinte audio expliquée : comment AudioContext vous piste
DémarrageProxy Playwright : routes, authentification et signaux
Exécutez la même vérification dans BotBrowser
Chargez un profil, gardez dans le navigateur les signaux que vous venez de lire, puis confirmez le résultat sur votre propre machine avant le déploiement.