J'ai récemment remarqué que quelques entreprises ont commencé à offrir des services de protection contre les robots et les grattages basés sur l'idée de prendre les empreintes digitales du navigateur pour les détecter, puis de bloquer l'empreinte spécifique d'accéder au site (plutôt que de bloquer l'IP).
Voici quelques exemples:
Il y a des différences entre elles, mais apparemment toutes ces entreprises utilisent Javascript pour obtenir des champs spécifiques au navigateur détaillés comme les plugins, les polices et la taille de l'écran, et la résolution, les combiner avec ce qui peut être obtenu à partir des en-têtes HTTP et utiliser ces données pour classer le client comme bot/humain.
Ma question est alors: cette approche est-elle suffisamment robuste? À quel point serait-il difficile pour un attaquant d'usurper tous les champs de données que le client Javascript flaire (plugins, polices, OS, etc.)? Quelle mesure de protection cette approche fournit-elle uniquement contre les robots peu sophistiqués, ou est-ce vraiment si difficile à surmonter?
J'ai vu des services similaires qui fonctionnent comme un proxy et encodent toutes vos pages Web dans du Javascript vraiment obscurci, de sorte qu'un vrai navigateur n'aurait aucun problème à naviguer sur ce site alors qu'il serait vraiment difficile, voire impossible (et si le JS était aléatoire et différent à chaque demande) pour un grattoir conventionnel de faire de même.
Le problème est qu'il est vraiment facile de vaincre toutes ces approches simplement en exécutant un vrai navigateur et en ne perdant pas votre temps à créer un grattoir.
Jetez un oeil à Selenium WebDriver , qui vous permet de vous attacher à un vrai navigateur et de le contrôler par programme - aucune de ces solutions ne le détectera car il apparaît comme un Firefox propre (ou Chrome, ou l'un des navigateurs pris en charge) installation dans le monde extérieur.
Plutôt que de perdre votre temps à essayer de bloquer les bots, demandez-vous pourquoi voulez-vous les bloquer - s'ils surchargent votre serveur Web, implémentez des limites de débit basées sur IP, s'ils font du spam, implémentez des captchas, sinon laissez-les être , ils ne vous font aucun mal.
Cette procédure est probablement utile pour identifier et bloquer un grand nombre de robots, mais les personnes qui souhaitent voler vos données personnaliseront et randomiseront autant que possible afin d'éviter la détection. Alors non. Cette approche n'est pas la plus efficace contre les grattoirs plus sophistiqués.
J'ai vu des grattoirs modifier entièrement leurs demandes HTTP plusieurs fois par jour. Ces entreprises investissent de l'argent pour mener leur activité et elles essaieront de trouver un moyen d'éviter ces détections statiques.
La seule façon de bloquer ce trafic est d'ajouter des règles de blocage manuellement ou de développer un gros algorithme qui élabore d'autres comportements, tels que: les différences de temps entre les demandes, les ordres des paramètres, les identifiants de session partagés, etc.
En lisant la copie marketing à partir des liens, le type de "bot" dont vous parlez n'est pas du tout un "navigateur" typique, mais souvent juste un simple script ou même le vénérable wget
.
Si tel est le cas, il est alors trivial de déterminer si un script navigue ou si un navigateur à part entière l'est. Mais, comme vous le soupçonnez, si quelqu'un est intéressé à vaincre ces bot-bloqueurs, il est également trivial de fournir de fausses données au serveur pour apparaître comme si un navigateur valide.
Par exemple, j'ai créé un grattoir Web basé sur Python qui fournit un UA préconfiguré au serveur (s'annonçant comme un script, dans mon cas). En ce qui concerne les autres données (polices installées), même si je ne l'ai pas fait moi-même, je suis convaincu que si un navigateur peut être configuré pour répondre avec les données, un `` bot '' peut également.
Comme tout le monde a déjà répondu, il n'est pas possible de détecter les bots uniquement via les empreintes digitales du navigateur.
ShieldSquare, étant une société de détection de bots que nous passons la plupart du temps avec des bots, je dirais que la détection de bots est possible, avec l'empreinte digitale de l'appareil JS, peu de choses seraient envisagées:
Comportement de l'utilisateur [Vous pouvez analyser ce que l'utilisateur fait sur le site Web, que l'utilisateur fasse un modèle en largeur ou en profondeur. Combien de minutes l'utilisateur passe-t-il sur le site Web, combien de pages l'utilisateur a-t-il visité]
Réputation IP [En examinant l'historique IP, le nombre de visites de l'IP ou il a des modèles et également la criminalistique du réseau peuvent être effectués sur la demande reçue et identifie si la demande provient des adresses IP Tor/Proxy.]
En fait, tous ces calculs peuvent être effectués en 7 ms.