
Python rencontre cURL : une autre façon de jouer avec les adresses IP des proxy
Les frères rampants devraient avoir rencontré un mécanisme anti-escalade, n'est-ce pas ? Le genre de données que l'on voit mais que l'on ne peut pas goûter, comme le pot au feu devant les baguettes ne donne rien. Cette fois, l'adresse IP du proxy est votre "baguette", en particulier avec cURL, ce vieil outil, vous pouvez jouer beaucoup de nouveaux tours.
Pourquoi la bibliothèque de liaison cURL ?
Nombreux sont ceux qui pensent que la bibliothèque de requêtes est suffisante, mais lorsqu'il s'agit de contrôler finement le scénario de la requête (comme la mise en place d'un protocole de transport spécifique), le contrôle sous-jacent de cURL s'avère utile. Prenons un marronnier :
import pycurl
from io import BytesIO
buffer = BytesIO()
c = pycurl.Curl()
c.setopt(c.URL, 'http://example.com')
c.setopt(c.WRITEDATA, buffer)
La clé se trouve dans cette ligne ↓↓↓↓
c.setopt(c.PROXY, 'http://username:password@proxy.ipipgo.com:8080')
c.perform()
c.close()
surveiller attentivementnom d'utilisateur:mot de passe@adresse du proxyCe format, beaucoup de débutants l'ont planté, l'authentification par proxy ipipgo doit être remplie en respectant scrupuleusement ce format.
Solutions pratiques pour les pools de mandataires dynamiques
Une seule IP peut facilement être bloquée, nous avons besoin d'un pool d'IP. Utilisez l'API d'ipipgo pour obtenir des IP, ainsi que la fonction cURLCURLOPT_PROXYDes options qui peuvent être jouées comme suit :
def get_ip().
Ici, nous appelons l'API d'ipipgo
return requests.get('https://api.ipipgo.com/getip?type=json').json()['proxy']
def curl_with_rotation(url): : for _ in range(3) : fail 3 times.
for _ in range(3) : failed to retry 3 times
try.
proxy = get_ip()
c = pycurl.
c.setopt(c.PROXY, proxy)
Autres configurations...
return True
except pycurl.error as e.
print(f "IP {proxy} bloqué, passer au suivant")
return False
Guide pour éviter les pièges (version tabulaire)
| nid-de-poule | symptomatique | prescription |
|---|---|---|
| Erreur de format d'authentification | Retourner l'erreur 407 | Vérifier si le mot de passe du compte du backend ipipgo contient des caractères spéciaux. |
| Délai de connexion | DÉLAI D'ATTENTE DE L'OPÉRATION CURLE | Placer CONNECTTIMEOUT avant le paramètre pycurl.TIMEOUT |
| Échec de l'authentification SSL | Erreur de certificat SSL | set c.setopt(pycurl.SSL_VERIFYPEER, 0) |
Temps consacré à l'assurance qualité
Q : Que dois-je faire si l'adresse IP de mon proxy est souvent invalide ?
R : Il est recommandé d'utiliser l'offre de paiement au volume d'ipipgo, dont le taux de survie peut atteindre 98% ou plus, ce qui est beaucoup plus stable que l'IP gratuite.
Q : Comment configurer un proxy à haut niveau d'anonymat si j'en ai besoin ?
R : Sélectionnez le type "Privacy Proxy" dans le backend ipipgo, aucun réglage supplémentaire n'est nécessaire dans le code, leur sortie effacera automatiquement l'en-tête X-Forwarded-For.
Q : Pourquoi la vitesse de réponse fluctue-t-elle ?
R : Vérifiez si vous mélangez des proxys de différentes régions. Il est recommandé de créer des groupes de proxys dans la même région dans la console ipipgo afin d'éviter les retards entre les salles de serveurs.
Trucs et astuces du froid
1. outil de débogage : setupc.setopt(c.VERBOSE, True)Les informations complètes de l'en-tête de la demande peuvent être consultées dans le fichier
2. multiplexage de connexion : réglagesc.setopt(c.FORBID_REUSE, False)Peut augmenter les performances de 201TP d'environ 3T
3) Délai précis : définir différents délais pour différentes opérations
c.setopt(c.CONNECTTIMEOUT, 5) Délai de connexion
c.setopt(c.TIMEOUT, 15) Délai d'attente global
Enfin, j'aimerais dire quelques mots sur les IP proxy : la stabilité est plus importante que toute autre chose. Le coût de votre propre temps passé à jeter des proxies gratuits est suffisant pour acheter un service professionnel pendant des années. Des sociétés comme ipipgo sont en mesure de fournir les services suivantsExtraction en temps réel de l'API+la criminalistique automatiqueLe service est la bonne façon d'ouvrir nos programmeurs.

