
Poses de base pour l'installation du proxy Scrapy
Les frères crawleurs savent que le mécanisme anti-escalade des sites web est de plus en plus perverti. Aujourd'hui, nous allons vous expliquer comment utiliser Scrapy avec la fonction proxy pour sauver des vies. Directement sur les produits secs, les paramètres proxy de Scrapy en fait, deux coups :Il faut soit modifier le fichier de configuration des paramètres, soit bricoler avec l'intergiciel..
Commençons par le salut, en ajoutant ces deux lignes à settings.py :
DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware' : 400,
}
HTTPPROXY_ENABLED = True
Cela équivaut à mettre un commutateur proxy sur le crawler, mais ce n'est pas suffisant. Il faut en effet insérer l'adresse du proxy dans la requête. Par exemple, avec le proxy résidentiel dynamique d'ipipgo, le format ressemble à ceci :
yield scrapy.Request(
url, meta={'proxy' : ''}
meta={'proxy' : 'http://用户名:密码@gateway.ipipgo.com:9020'}
)
Une façon élégante de jouer à l'intergiciel
La méthode ci-dessus convient pour un petit jeu, mais nous voulons vraiment jouer un grand jeu sur le middleware. Ecrivons notre propre ProxyMiddleware, voici un piège auquel il faut faire attention---Stratégie de rotation pour les pools d'adresses IP de proxy. Lorsque vous utilisez l'API d'ipipgo pour obtenir des proxies, il est recommandé de changer l'IP pour chaque demande afin d'obtenir un taux de survie plus élevé.
Exemple de code du monde réel :
import random
from ipipgo_api import get_proxies Ceci est le SDK officiel hypothétique pour ipipgo_.
classe RandomProxyMiddleware.
def process_request(self, request, spider) : proxy_list = get_proxies('web_scroll_list')
proxy_list = get_proxies('web_scraping') appel de l'interface ipipgo
proxy = random.choice(proxy_list)
request.meta['proxy'] = f "http://{proxy['auth']}@{proxy['ip_port']}"
N'oubliez pas d'activer cet intergiciel dans les paramètres et de fixer la priorité à environ 500 pour une meilleure adaptation. De cette façon, chaque requête sera automatiquement connectée à un proxy différent, et le système anti-escalade sera pratiquement aveugle.
Un guide pour éviter le gouffre (Leçons de larmes)
Voici quelques exemples de terrains minés dans lesquels les débutants s'aventurent :
| nid-de-poule | une posture correcte |
|---|---|
| Échec de l'authentification du proxy | Gestion des symboles spéciaux avec guillemets dans urllib.parse |
| Le site web HTTPS ne se connecte pas | L'adresse du proxy doit être la suivante : https://开头 |
| temps de réponse lent | Allez-y avec ipipgo.Utilisation exclusive des lignes à grande vitesse |
Session pratique d'assurance qualité
Q : Que dois-je faire si l'agent tombe souvent en panne soudainement ?
R : C'est pourquoi vous devez utiliser le Dynamic IP Pool d'ipipgo, dont la détection de survie est actualisée toutes les 5 secondes et qui filtre automatiquement les nœuds défaillants.
Q : Ai-je besoin de plusieurs threads avec différents proxys en même temps ?
R : Il suffit de donner à chaque requête un proxy séparé dans l'intergiciel, Scrapy gérera lui-même la concurrence.
Q : Que dois-je faire si un site web me demande un code de vérification ?
R : Cette situation n'est pas suffisante pour changer l'IP, il est recommandé de coopérer avec ipipgo.Proxy résidentiel + masquage de l'en-tête de la requêtequi a été personnellement testé pour réduire le taux de déclenchement des CAPTCHA de 90%.
Pourquoi recommander ipipgo
Honnêtement, il existe une pléthore de fournisseurs de services proxy sur le marché. Mais tous ceux qui font du crawling savent queAgence résidentielle High StashC'est le roi. Le top 3 des tueurs d'ipipgo :
- IP résidentielle dynamique dans plus de 200 villes du pays
- Commutation IP à un seul niveau de demande (les autres sont au niveau de la minute)
- Mécanisme de réessai en cas de défaillance et d'auto-fusible.
En particulier, leurSystème de routage intelligentLe meilleur nœud d'exportation peut être automatiquement associé au site web cible. La dernière fois qu'il y a eu un projet de commerce électronique, le taux de réussite de l'utilisation d'agents ordinaires était inférieur à 30%, alors que le taux de réussite de l'utilisation directe d'ipipgo a grimpé à 85%, le chef de projet m'a presque donné une bannière.
Enfin, un conseil : ne perdez pas de temps avec l'agent libre, le blocage de l'IP est une petite affaire, ou bien vous devez manger la lettre d'un avocat. Les choses professionnelles doivent être faites par des professionnels, les honoraires de l'agent ne sont rien par rapport au risque du projet.

