Utiliser des cookies et un proxy dans un seul opener urllib de Python
Combinez ProxyHandler et HTTPCookieProcessor dans un seul opener urllib afin que les requêtes proxifiées liées partagent le bocal à cookies prévu.
Un opener urllib peut acheminer des requêtes via un proxy et conserver les cookies du site en même temps. Donnez-lui les deux gestionnaires :
from http.cookiejar import CookieJar
from urllib.request import (
HTTPCookieProcessor, ProxyHandler, build_opener,
)
cookies = CookieJar()
opener = build_opener(
ProxyHandler({"http": "http://proxy.example:8080"}),
HTTPCookieProcessor(cookies),
)
with opener.open("http://www.example.com/", timeout=10) as response:
body = response.read()L'exemple utilise une destination HTTP simple et son itinéraire proxy explicite. Pour un contrôle autorisé d'un site public sans authentification proxy, choisissez un candidat dans la liste de proxys HTTP pour cet itinéraire tout en conservant le bocal à cookies prévu. Réutilisez l'opener pour les requêtes ultérieures appartenant à la même session du site. Le processeur de cookies extrait les cookies de réponse acceptables et ajoute ceux applicables aux requêtes suivantes.
Créer un nouveau CookieJar vide avant chaque appel abandonne cette continuité. Gardez le bocal à côté de la session qu'il représente ; utilisez des bocaux séparés pour les comptes ou les flux de travail dont les cookies doivent rester séparés.
Un CookieJar de base conserve l'état en mémoire. Pour la persistance entre les exécutions du programme, choisissez une sous-classe appropriée de FileCookieJar et enregistrez-la ou chargez-la délibérément.
Inutile d'installer un opener global pour cette disposition. Appeler la méthode open de cet objet maintient le proxy et les cookies attachés à la même opération.