Używam modułu żądań (wersja 0.10.0 z Pythonem 2.5). Dowiedziałem się, jak przesłać dane do formularza logowania na stronie internetowej i odzyskać klucz sesji, ale nie widzę oczywistego sposobu wykorzystania tego klucza sesji w kolejnych żądaniach. Czy ktoś może wypełnić wielokropek w poniższym kodzie lub zaproponować inne podejście?
>>> import requests
>>> login_data = {'formPosted':'1', 'login_email':'[email protected]', 'password':'pw'}
>>> r = requests.post('https://localhost/login.py', login_data)
>>>
>>> r.text
u'You are being redirected <a href="profilePage?_ck=1349394964">here</a>'
>>> r.cookies
{'session_id_myapp': '127-0-0-1-825ff22a-6ed1-453b-aebc-5d3cf2987065'}
>>>
>>> r2 = requests.get('https://localhost/profile_data.json', ...)
python
python-requests
ChrisGuest
źródło
źródło
localhost
adres mogą wystąpić problemy z logowaniem i innymi plikami cookie zwracanymi przez serwer WWW, jeśli zawierają one nieprawidłową wartość właściwości domeny. W przypadkulocalhost
serwera WWW powinien zwrócić pliki cookie z właściwością domeny ustawioną nalocalhost.local
, w przeciwnym razie plik cookie nie zostanie zastosowany do sesji. W takim przypadku użyj127.0.0.1
zamiastlocalhost
inne odpowiedzi pomagają zrozumieć, jak prowadzić taką sesję. Dodatkowo chcę zapewnić klasę, która utrzymuje sesję w różnych uruchomieniach skryptu (z plikiem pamięci podręcznej). Oznacza to, że prawidłowe „logowanie” jest wykonywane tylko wtedy, gdy jest to wymagane (przekroczenie limitu czasu lub brak sesji w pamięci podręcznej). Obsługuje również ustawienia proxy dla kolejnych wywołań „get” lub „post”.
Jest testowany z Python3.
Użyj go jako podstawy dla własnego kodu. Następujące fragmenty są wydane z GPL v3
Fragment kodu do użycia powyższej klasy może wyglądać następująco:
źródło
requests
modułu. Jak zabrałbyś się za wdrożenie go jako części modułu? lub jak masz na myśli @ user1602?Sprawdź moją odpowiedź na to podobne pytanie:
python: urllib2 jak wysłać ciasteczko z prośbą o urlopen
EDYTOWAĆ:
Widzę, że otrzymałem kilka głosów przeciw mojej odpowiedzi, ale żadnych komentarzy wyjaśniających. Domyślam się, że to dlatego, że mam na myśli
urllib
biblioteki, a nierequests
. Robię to, ponieważ PO prosi o pomocrequests
lub kogoś, kto zasugeruje inne podejście.źródło
requests
oferuje to proste i wysokopoziomowe rozwiązanie problemu, który w innym przypadku wymagałby wdrożenia 3 bibliotek.Dokumentacja mówi, że
get
przyjmuje opcjonalnycookies
argument umożliwiający określenie plików cookie do użycia:z dokumentów:
http://docs.python-requests.org/en/latest/user/quickstart/#cookies
źródło
Po wypróbowaniu wszystkich powyższych odpowiedzi stwierdziłem, że użycie „RequestsCookieJar” zamiast zwykłego pliku CookieJar do kolejnych żądań rozwiązało mój problem.
źródło
fragment do pobierania danych JSON, chroniony hasłem
źródło
Zapisz tylko wymagane pliki cookie i używaj ich ponownie.
źródło
To zadziała w Pythonie;
źródło