from - python: urllib2 cómo enviar cookies con solicitud de urlopen
urllib.request.request python 3 example (4)
Cookie es solo otro encabezado HTTP.
import urllib2
opener = urllib2.build_opener()
opener.addheaders.append((''Cookie'', ''cookiename=cookievalue''))
f = opener.open("http://example.com/")
Consulte ejemplos de urllib2 para conocer otras formas de agregar encabezados HTTP a su solicitud.
Hay más formas de manejar las cookies. Algunos módulos como cookielib intentan comportarse como un navegador web: recuerde qué cookies recibió previamente y vuelva a enviarlos automáticamente en las siguientes solicitudes.
Estoy tratando de usar urllib2 para abrir la url y enviar texto de cookie específico al servidor. Por ejemplo, quiero abrir el sitio Resuelva problemas de ajedrez , con una cookie específica, por ejemplo, búsqueda = 1. ¿Cómo lo hago?
Estoy tratando de hacer lo siguiente:
import urllib2
(need to add cookie to the request somehow)
urllib2.urlopen("http://chess-problems.prg")
Gracias por adelantado
Es posible que desee echar un vistazo a la excelente biblioteca HTTP Python llamada Requests . Hace que cada tarea que involucre HTTP sea un poco más fácil que urllib2. De la sección Cookies de la guía de inicio rápido:
Para enviar sus propias cookies al servidor, puede usar el parámetro cookies:
>>> cookies = dict(cookies_are=''working'')
>>> r = requests.get(''http://httpbin.org/cookies'', cookies=cookies)
>>> r.text
''{"cookies": {"cookies_are": "working"}}''
Tal vez usar cookielib.CookieJar puede ayudarte. Por ejemplo, al publicar en una página que contiene un formulario:
import urllib2
import urllib
from cookielib import CookieJar
cj = CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
# input-type values from the html form
formdata = { "username" : username, "password": password, "form-id" : "1234" }
data_encoded = urllib.urlencode(formdata)
response = opener.open("https://page.com/login.php", data_encoded)
content = response.read()
EDITAR:
Después del comentario de Piotr, elaboraré un poco. De los documentos:
La clase CookieJar almacena cookies HTTP. Extrae las cookies de las solicitudes HTTP y las devuelve en respuestas HTTP. Las instancias de CookieJar caducan automáticamente y contienen cookies cuando es necesario. Las subclases también son responsables de almacenar y recuperar las cookies de un archivo o base de datos.
Entonces, cualquiera sea la solicitud que haga con su instancia de CookieJar
, todas las cookies se manejarán de forma automática. Un poco como tu navegador :)
Solo puedo hablar por mi propia experiencia y mi 99% de casos de uso para cookies es para recibir una cookie y luego enviarla con todas las solicitudes posteriores en esa sesión. El código anterior maneja solo eso, y lo hace de manera transparente.