2009-02-08 15 views

Odpowiedz

1

Wierzę, że masz na myśli skrypt Python, który próbuje mówić HTTP. Sugeruję użycie biblioteki wysokiego poziomu, która automatycznie obsługuje pliki cookie. pycurl, mechanize, twill - wybierasz.

Dla Nikhil Chelliah:

nie widzę, co nie jest jasne tutaj.

Przyjmowanie cookie dzieje się po stronie klienta. Serwer może ustawić plik cookie o wartości.

+1

Serwer może również pobrać pliki cookie od klienta. Z drugiej strony, "zaakceptuj" może być tylko ważnym terminem dla klienta. –

+0

+ za wzmiankę o mechanize – Alex

0

Jest biblioteka cookielib. Możesz także zaimplementować własne przechowywanie plików cookie i zasady, pliki cookie znajdują się w nagłówku set-cookie odpowiedzi (Set-Cookie: name = value), a następnie odsyłasz z powrotem do serwera w jednym lub kilku nagłówkach Cookie w request (Cookie: name = value).

1

Nie jest jasne, czy potrzebujesz rozwiązania po stronie klienta czy po stronie serwera.

Po stronie klienta zadziała dobrze cookielib. This answer oraz kilka samouczków internetowych oferuje bardziej szczegółowe wyjaśnienia.

Jeśli jest to problem po stronie serwera, powinieneś używać architektury, która zajmuje się wszystkimi standardami. Bardzo podoba mi się to, jak radzą sobie z nimi CherryPy i web.py, ale interfejs API jest całkiem prosty w każdej bibliotece.

18

Spróbuj tego:

import urllib2 
import cookielib 

jar = cookielib.FileCookieJar("cookies") 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar)) 

print "Currently have %d cookies" % len(jar) 
print "Getting page" 
response = opener.open("http://google.com") 
print response.headers 
print "Got page" 
print "Currently have %d cookies" % len(jar) 
print jar 

Należy wydrukować

Currently have 0 cookies 
... 
Currently have 2 cookies 

(Google zawsze ustawia cookie). Tak naprawdę nie potrzebujesz tak dużo, chyba że chcesz zapisać pliki cookie na dysku i użyć ich później. Powinieneś się przekonać, że większość zadań jest wykonywana.

Więcej informacji tutaj:

4

Najprostszym sposobem jest użycie requests bibliotekę.

import requests 
url = 'http://www.google.com/doodles/' 
r = requests.get(url) 
print r.cookies