Tôi đang cố gắng viết một kịch bản đơn giản để đăng nhập vào Wikipedia và thực hiện một số hành động trên trang người dùng của tôi, bằng cách sử dụng api Mediawiki. Tuy nhiên, tôi dường như không bao giờ vượt qua yêu cầu đăng nhập đầu tiên (từ trang này: https://en.wikipedia.org/wiki/Wikipedia:Creating_a_bot#Logging_in). Tôi không nghĩ rằng cookie phiên mà tôi đặt đang được gửi. Đây là mã của tôi cho đến thời điểm này:cookie phiên vượt qua trong tiêu đề http với pyll 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()
Tôi nghĩ rằng sự cố ở đâu đó trong dòng request.add_header('Set-Cookie', session_cookie_header)
, nhưng tôi không biết chắc chắn. Làm cách nào để sử dụng các thư viện python này để gửi cookie trong tiêu đề với mọi yêu cầu (cần thiết cho nhiều hàm API).
Tôi sẽ đi với điều đó. Nó dễ dàng hơn nhiều. Cảm ơn bạn! –