Я использую этот код:
def req(url, postfields):
proxy_support = urllib2.ProxyHandler({"http" : "127.0.0.1:8118"})
opener = urllib2.build_opener(proxy_support)
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
return opener.open(url).read()
Чтобы сделать простой запрос http get (используя tor в качестве прокси).
Теперь я хотел бы узнать, как сделать несколько запросов, используя один и тот же файл cookie.
Например:
req('http://loginpage', 'postfields')
source = req('http://pageforloggedinonly', 0)
#do stuff with source
req('http://anotherpageforloggedinonly', 'StuffFromSource')
Я знаю, что моя функция req не поддерживает POST (пока), но я отправил пост-поля с использованием httplib, поэтому я думаю, что могу понять это самостоятельно, но я не понимаю, как использовать куки, я видел несколько примеров но все они только один запрос, я хочу повторно использовать cookie из первого запроса входа в систему в последующих запросах или сохранить / использовать cookie из файла (как делает curl), что упростит все.
Код, который я разместил, предназначен только для иллюстрации того, чего я пытаюсь достичь. Думаю, я буду использовать httplib (2) для финального приложения.
UPDATE:
cookielib.LWPCOokieJar работал нормально, вот пример, который я сделал для тестирования:
import urllib2, cookielib, os
def request(url, postfields, cookie):
urlopen = urllib2.urlopen
cj = cookielib.LWPCookieJar()
Request = urllib2.Request
if os.path.isfile(cookie):
cj.load(cookie)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)
txheaders = {'User-agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}
req = Request(url, postfields, txheaders)
handle = urlopen(req)
cj.save(cookie)
return handle.read()
print request('http://google.com', None, 'cookie.txt')