Estoy tratando de escribir un script simple para iniciar sesión en Wikipedia y realizar algunas acciones en mi página de usuario, utilizando la API de Mediawiki. Sin embargo, nunca parezco pasar la primera solicitud de inicio de sesión (de esta página: https://en.wikipedia.org/wiki/Wikipedia:Creating_a_bot#Logging_in). No creo que se envíe la cookie de sesión que configuré. Este es mi código hasta ahora:pasar las cookies de sesión en el encabezado http con python urllib2?
import Cookie, urllib, urllib2, xml.etree.ElementTree
url = 'https://en.wikipedia.org/w/api.php?action=login&format=xml'
username = 'user'
password = 'password'
user_data = [('lgname', username), ('lgpassword', password)]
#Login step 1
#Make the POST request
request = urllib2.Request(url)
data = urllib.urlencode(user_data)
login_raw_data1 = urllib2.urlopen(request, data).read()
#Parse the XML for the login information
login_data1 = xml.etree.ElementTree.fromstring(login_raw_data1)
login_tag = login_data1.find('login')
token = login_tag.attrib['token']
cookieprefix = login_tag.attrib['cookieprefix']
sessionid = login_tag.attrib['sessionid']
#Set the cookies
cookie = Cookie.SimpleCookie()
cookie[cookieprefix + '_session'] = sessionid
#Login step 2
request = urllib2.Request(url)
session_cookie_header = cookieprefix+'_session='+sessionid+'; path=/; domain=.wikipedia.org; HttpOnly'
request.add_header('Set-Cookie', session_cookie_header)
user_data.append(('lgtoken', token))
data = urllib.urlencode(user_data)
login_raw_data2 = urllib2.urlopen(request, data).read()
Creo que el problema está en algún lugar en la línea de request.add_header('Set-Cookie', session_cookie_header)
, pero no sé a ciencia cierta. ¿Cómo utilizo estas bibliotecas de Python para enviar cookies en el encabezado con cada solicitud (que es necesaria para muchas funciones de API).
voy a ir con eso. Es mucho mas facil ¡Gracias! –