web-dev-qa-db-fra.com

Comment définir un seul proxy pour un objet de session de requêtes?

J'utilise le paquet de requêtes Python pour envoyer des requêtes http. Je souhaite ajouter un seul proxy à l'objet de session de demandes. par exemple.

session = requests.Session()
session.proxies = {...} # Here I want to add a single proxy

Actuellement, je suis en train de parcourir plusieurs groupes de procurations et une nouvelle session est créée à chaque itération. Je veux seulement définir un seul proxy pour chaque itération.

Le seul exemple que je vois dans la documentation est:

proxies = {
    "http": "http://10.10.1.10:3128",
    "https": "http://10.10.1.10:1080",
}

requests.get("http://example.org", proxies=proxies)

J'ai essayé de suivre cela, mais en vain. Voici mon code du script:

# eg. line = 59.43.102.33:80
r = s.get('http://icanhazip.com', proxies={'http': 'http://' + line})

Mais je reçois une erreur:

requests.packages.urllib3.exceptions.LocationParseError: Failed to parse 59.43.102.33:80

Comment est-il possible de définir un seul proxy sur un objet de session?

12
Torra

En fait, vous avez raison, mais vous devez vous assurer que votre définition de «ligne», j'ai essayé cela, ça va:

>>> import requests
>>> s = requests.Session()
>>> s.get("http://www.baidu.com", proxies={'http': 'http://10.11.4.254:3128'})
<Response [200]>

Avez-vous défini la ligne comme line = ' 59.43.102.33:80', il y a un espace en début d’adresse.

8
NeoWu

En plus de @neowu 'answer, si vous souhaitez définir un proxy pour la durée de vie d'un objet de session, vous pouvez également procéder comme suit: 

import requests
proxies = {'http': 'http://10.11.4.254:3128'}
s = requests.session()
s.proxies.update(proxies)
s.get("http://www.example.com")   # Here the proxies will also be automatically used because we have attached those to the session object, so no need to pass separately in each call
52
Vikas Ojha

Espérons que cela puisse conduire à une réponse: 

urllib3.util.url.parse_url (url) Étant donné une url, renvoyer une URL analysée nommée nom. Le meilleur effort est effectué pour analyser les URL incomplètes. Les champs non fournis seront Aucun.

retiré de https://urllib3.readthedocs.org/en/latest/helpers.html

0
user4642224