
Quand les crawlers rencontrent l'obstacle de l'empreinte TLS
Ceux d'entre vous qui font de l'exploration de données ont dû remarquer récemment que de nombreux sites web ont commencé à s'engager dans la voie de l'innovation.Identification des empreintes digitales TLSCette nouvelle routine. En termes simples, le serveur vérifiera les caractéristiques de la poignée de main du client, telles que la version du navigateur, le kit de cryptage et d'autres paramètres. Si nous envoyons une requête avec une bibliothèque curl ou requests normale, nous serons reconnus comme un robot et notre IP sera bloquée.
Si vous utilisez simplement un proxy IP pour changer l'adresse, c'est comme si vous mettiez une perruque à un robot - cela ne guérit pas les symptômes, l'IP est changée mais les caractéristiques de la poignée de main ne changent pas, les gens vous reconnaîtront toujours comme la même "personne". Il faut donclit. peindre en tenant deux pinceaux (idiome) ; fig. travailler sur deux tâches en même tempsLes deux changent l'adresse IP et la signature de l'empreinte TLS.
Comment jouer l'artefact curl_cffi
Et voici le personnage principal.curl_cffi. Elle est basée sur curl. Elle est basée sur curl mais a été profondément modifiée pour émuler les empreintes TLS des différents navigateurs. Jetons un coup d'œil à un tableau comparatif pour nous faire une idée plus précise :
| artefact | Protocoles pris en charge | Simulation d'empreintes digitales | performance simultanée |
|---|---|---|---|
| demandes | HTTP/1.1 | × | milieu |
| Boucle commune | HTTP/2 | × | votre (honorifique) |
| curl_cffi | HTTP/3 | √ | très élevé |
L'installation est simple et directepip install curl_cffiIl suffit de le faire. Le but est de spécifier l'empreinte du navigateur lorsque vous l'utilisez, comme ceci :
from curl_cffi import requests
resp = requests.get("https://目标网站",
impersonate="chrome110",
proxies={"https" : "http://user:pass@ipipgo proxy address:port"}
)
VoiciLe paramètre impersonateC'est la clé, il supporte toutes les versions de chrome99 à chrome120. Il est recommandé de choisir la version la plus courante dans les trois mois, car les versions trop récentes ou trop anciennes sont faciles à révéler.
Comment choisir un proxy IP fiable ?
Puisque nous changeons d'IP, il est temps de parler de notreService proxy ipipgoVoici un exemple de la manière de procéder. De nombreux agents sur le marché ne s'intéressent qu'à la fourniture d'IP et ne se soucient pas des scénarios d'application. Mais nous devons prendre en compte trois indicateurs difficiles pour effectuer un crawling anti-retour :
- Le type d'IP doit être spécifié avec l'optionAgent résidentielL'adresse IP du centre de données est sur liste noire depuis longtemps.
- La durée de survie de chaque IP doit être contrôlée entre 5 et 15 minutes, et ne doit pas être réutilisée à long terme.
- L'emplacement de sortie doit correspondre à la géolocalisation de la version du navigateur dont l'empreinte a été relevée.
Par exemple, si vous émulez un navigateur Chrome américain, l'adresse IP du proxy doit également être une adresse résidentielle américaine.Pool dynamique d'agents résidentielsC'est exactement ce qu'il faut pour répondre à ces besoins, avec l'attribution automatique de l'IP la plus récente pour chaque demande, et avec la sélection de la géolocalisation.
Guide pratique pour éviter la fosse
Grâce à notre expérience de la résolution de problèmes pour des clients, nous résumons quelques champs de mines courants :
- N'essayez pas d'économiser de l'argent en utilisant des proxys gratuits, ces IP ont déjà été repérées par les principaux sites web.
- Il est préférable d'hiberner de manière aléatoire pendant 0,5 à 3 secondes par demande, sans perturber les rythmes mécaniques.
- N'oubliez pas de mettre à jour la version de curl_cffi régulièrement, la bibliothèque d'empreintes de navigateurs est mise à jour tous les mois !
Voici un modèle de configuration auquel vous pouvez vous référer :
import random
import time
from curl_cffi import requests
def safe_request(url) : time.sleep(random.uniform(1, 3))
time.sleep(random.uniform(1, 3))
return requests.get(url, impersonate=random.choice["chrome119", random.uniform(1, 3))
impersonate=random.choice(["chrome119", "chrome120"]), proxies={"https
proxies={"https" : f "http://{ipipgo auto-assign proxy}"}
)
Foire aux questions QA
Q : J'ai déjà utilisé une adresse IP proxy, pourquoi est-elle toujours bloquée ?
R : Changer simplement d'adresse IP sans modifier les empreintes TLS, c'est comme changer de vêtements sans changer de visage, les gens le reconnaîtront toujours. Vous devez travailler avec curl_cffi, qui est un outil de dissimulation des empreintes digitales.
Q : Comment puis-je obtenir le code pour l'agent ipipgo ?
R : Obtenez l'adresse d'accès à l'API dans le centre personnel, il est recommandé d'utiliser la fonctionNom d'utilisateur + mot de passece qui est plus pratique que de se lier à une liste blanche d'adresses IP.
Q : Que dois-je faire pour déboguer la détection TLS ?
R : Tout d'abord avecopenssl s_client -connect target site:443Examinez le processus de prise de contact d'un navigateur normal et comparez-le à l'ajustement des paramètres de votre propre programme.
Enfin, les outils techniques doivent être associés à un service d'agence fiable pour être efficaces. Il s'agit deipipgoAssistance technique 24 heures sur 24, les problèmes spécifiques peuvent être résolus directement par l'ingénieur, ce qui est plus fiable que les tutoriels en ligne.

