/ / Iterando a través del diccionario de Python de proxies - python, python-pedidos

Iterando a través del diccionario de Python de proxies - python, python-pedidos

Así que estoy usando el módulo de solicitudes, pero estoytratando de cambiar el proxy cada vez que se realiza una solicitud (Ex, GET y POST). Tengo un diccionario con todos los servidores proxy que quiero usar, pero tengo problemas para conseguir que la solicitud realmente funcione mediante la iteración a través del diccionario. Entiendo cómo enviar una solicitud con un solo proxy, pero nuevamente, no estoy seguro de cómo cambiar cada proxy después de cada solicitud. Este no es el programa actual que estoy tratando de escribir, pero de manera similar, la tarea que estoy tratando de realizar:

BASE_URL = "Some url"
USER_AGENT = "Some user agent"
POST_URL = "Some url"

proxies = {
"https" : "proxy1",
"https" : "proxy2",
"https" : "proxy..."
}


def req():

session = requests.Session()
session.headers = {"user-agent": USER_AGENT}
session.headers.update({"Referer": BASE_URL})
req = session.get(BASE_URL, proxies=curProxy)

session.headers.update({"x-csrftoken": req.cookies["csrftoken"]})
login_data = {"DATA HERE"}
login = session.post(POST_URL, data=login_data, allow_redirects=True, proxies=curProxy)
session.headers.update({"x-csrftoken": login.cookies["csrftoken"]})
cookies = login.cookies



# For each proxy in proxies
for proxy in proxies:
# Updating the proxy to use
curProxy = proxy
req()

Gracias a todos los que responden con antelación. Toda ayuda / aporte es muy apreciada!

Respuestas

1 para la respuesta № 1

No necesita un diccionario para sus proxies. Use una lista simple:

proxies = ["proxy1", "proxy2", ...]

Cambia tu funcion req para aceptar el proxy como un parámetro. Las variables globales son malas :)

def req(curProxy):
...
req = session.get(BASE_URL, proxies={"http": curProxy, "https": curProxy})

Entonces iterar

for proxy in proxies:
req(proxy)