
Les demandes d'agents de bibliothèque vont de pair
Lorsque nous utilisons Python pour collecter des données, nous sommes souvent confrontés à une situation d'anti-crawl du site web. À ce moment-là, l'IP proxy est une bouée de sauvetage. Prenons un scénario réel : vous voulez capturer le prix d'une plate-forme de commerce électronique, des dizaines de visites consécutives après l'IP est bloqué. À ce moment-là, dans les requêtes plus les paramètres de proxy, immédiatement peut être ressuscité.
demandes d'importation
proxies = {
'http' : 'http://用户名:密码@proxy.ipipgo.com:端口',
'https' : 'http://用户名:密码@proxy.ipipgo.com:端口'
}
resp = requests.get('https://目标网站.com', proxies=proxies)
rappel des clésLes nouveaux arrivants ne s'y retrouveront pas : faites particulièrement attention au nom d'utilisateur et au mot de passe dans le format proxy !http://Préfixe. Si vous utilisez le proxy privé d'ipipgo, n'oubliez pas de générer des informations d'authentification exclusives en arrière-plan, leur temps de survie IP dynamique que les autres parents, mesuré pour être en mesure d'utiliser plus de 2-3 heures.
Conseils et astuces concernant le pool de proxy dynamique
Une seule IP proxy est facile à identifier, nous devons obtenir un pool de proxy à faire tourner. Voici une astuce : utiliser l'objet Session pour conserver la session, tout en changeant de proxy de manière aléatoire. Regardez ce code :
from requests.sessions import Session
import random
classe SmartSession(Session).
def __init__(self, proxy_list) : super().
__init__(self, proxy_list) : super(). __init__()
self.proxy_pool = proxy_list C'est là que vous mettez les multiples proxies fournis par ipipgo.
def request(self, method, url, kwargs) : super(. __init__().
kwargs['proxies'] = {'http' : random.choice(self.proxy_pool)}
return super().request(method, url, kwargs)
Exemple d'utilisation
proxy_list = [
'http://ipipgo_user1:pass123@111.222.33.44:8000',
'http://ipipgo_user1:pass123@112.113.114.115:8000'
]
smart = SmartSession(proxy_list)
response = smart.get('https://需要采集的网站')
De cette manière, chaque demande sélectionnera un proxy de manière aléatoire, et le système de contrôle des vents du site sera difficile à identifier. Il est recommandé d'utiliser le proxy résidentiel dynamique d'ipipgo, dont le pool d'adresses IP est mis à jour chaque jour avec plus de 200 000 adresses, et dont le taux de blocage, testé personnellement, est inférieur de 60 % à celui des IP ordinaires de la salle des serveurs.
Gestion des exceptions des agents selon trois axes
La plupart des maux de tête avec le proxy sont une variété d'erreurs de connexion, ici pour vous enseigner trois moyens sûrs :
1) Mécanisme de rappel en cas de dépassement de délai
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
retry_strategy = Retry(
retry_strategy = Retry(
backoff_factor=1, status_forcelist=[500, 502
status_forcelist=[500, 502, 503]
)
adapter = HTTPAdapter(max_retries=retry_strategy)
session = requests.Session()
session.mount('https://', adaptateur)
2. la validation du proxy
L'API d'ipipgo peut vérifier directement le trafic restant et l'état de l'IP, ce qui est beaucoup plus rapide que les méthodes traditionnelles.
3. enregistrement des exceptions
Il est recommandé d'envelopper le code de la requête avec un bloc try-except et de noter les IP proxy qui sont hors service. ipipgo dispose d'un panneau de surveillance en temps réel en arrière-plan pour voir directement quels nœuds proxy sont lents à répondre, de sorte qu'il est pratique de les remplacer en temps opportun.
Réponses pratiques à l'AQ
Q:La configuration du proxy est réussie mais la requête est toujours bloquée par le site web ?
A : 80% utilise un proxy transparent de basse qualité, changez pour un proxy de haute qualité d'ipipgo, n'oubliez pas de vérifier si le champ X-Forwarded-For dans l'en-tête de la requête expose l'IP réelle.
Q : Que dois-je faire si l'agent est particulièrement lent ?
R : Testez d'abord la vitesse pour sélectionner les nœuds, le client ipipgo est doté d'une fonction de test de délai. Si vous optez pour un proxy HTTP, vous pouvez activer le streaming des requêtes :stream=Trueaugmente la vitesse de téléchargement de fichiers volumineux.
Q : Que se passe-t-il si je dois faire appel à la fois à des agents nationaux et à des agents étrangers ?
R : Spécifiez les protocoles dans le dictionnaire des proxies, par exemple, les proxies http en Chine et les proxies https à l'étranger. ipipgo prend en charge le filtrage des nœuds par zone géographique, qui est directement ajouté aux paramètres de l'API.country=usIl sera en mesure de trouver des adresses IP américaines.
Jeu avancé : Optimisation des performances des agents
Partagez une astuce pour les pilotes chevronnés : augmentez le débit avec le pooling de connexion. Combiné avec le package Enterprise Proxy d'ipipgo, la performance simultanée mesurée est multipliée par 4 :
from requests.packages.urllib3.util.ssl_ import create_urllib3_context
Contexte SSL personnalisé
ctx = create_urllib3_context()
ctx.load_default_certs()
Création d'une session avec mise en commun des connexions
session = requests.Session()
adapter = requests.adapters.HTTPAdapter(
adaptateur = requests.adapters.HTTPAdapter( pool_connections=50, pool_maxsize=100
pool_maxsize=100, max_retries=3
max_retries=3
)
session.mount('https://', adaptateur)
Après ce réglage, les demandes réutiliseront la connexion TCP, ce qui est particulièrement adapté aux scénarios qui requièrent une fréquence élevée de demandes. N'oubliez pas d'activer le "Long Connection Mode" dans l'arrière-plan d'ipipgo, leur serveur proxy prend en charge le keep-alive, ce qui permet d'économiser le temps de handshake 30% par rapport à un proxy normal.
Enfin, ne vous contentez pas de regarder le prix lorsque vous choisissez un service proxy. Comme ipipgo, la technologie de routage intelligent permet de sélectionner automatiquement la ligne optimale. La dernière fois que j'ai effectué une analyse de la concurrence, la vitesse de réponse de leur nœud asiatique peut être stable dans les 80 ms, soit plus de deux fois plus rapide que les marques de second rang.

