Próbuję użyć biblioteki Żądania, aby wysłać pliki cookie z żądaniem publikacji, ale nie jestem pewien, jak właściwie skonfigurować pliki cookie na podstawie jej dokumentacji. Skrypt jest przeznaczony do użytku w Wikipedii, a pliki cookie, które należy przesłać, mają następującą formę:
enwiki_session=17ab96bd8ffbe8ca58a78657a918558e; path=/; domain=.wikipedia.com; HttpOnly
Jednak przewodnik requests
Szybki start podaje to jako jedyny przykład:
cookies = dict(cookies_are='working')
Jak mogę zakodować plik cookie taki jak powyżej, korzystając z tej biblioteki? Czy muszę to zrobić za pomocą standardowej biblioteki plików cookie Pythona, a następnie wysłać wraz z żądaniem POST?
python
cookies
http-request
python-requests
Ricardo Altamirano
źródło
źródło
a=b;
par. Domyślnie użyja
jako klucza ib
jako wartości w słowniku.Odpowiedzi:
Najnowsza wersja Requests utworzy dla Ciebie CookieJars z prostych słowników.
import requests cookies = {'enwiki_session': '17ab96bd8ffbe8ca58a78657a918558'} r = requests.post('http://wikipedia.org', cookies=cookies)
Cieszyć się :)
źródło
Aby rozszerzyć poprzednią odpowiedź, jeśli łączysz ze sobą dwa żądania i chcesz wysłać pliki cookie zwrócone z pierwszego do drugiego (na przykład utrzymywanie aktywnej sesji między żądaniami), możesz wykonać:
import requests r1 = requests.post('http://www.yourapp.com/login') r2 = requests.post('http://www.yourapp.com/somepage',cookies=r1.cookies)
źródło
requests.session
do tego dokładnie, przechowywania plików cookie w wielu sesjach,session
zamiast tego wykonując wywołania z zwróconego obiektu.request.session
Jeśli chcesz przekazać plik cookie do przeglądarki, musisz dołączyć do nagłówków, które mają zostać odesłane. Jeśli używasz wsgi:
import requests ... def application(environ, start_response): cookie = {'enwiki_session': '17ab96bd8ffbe8ca58a78657a918558'} response_headers = [('Content-type', 'text/plain')] response_headers.append(('Set-Cookie',cookie)) ... return [bytes(post_env),response_headers]
Mogę pomyślnie uwierzytelnić się za pomocą Bugzilli i TWiki hostowanych w tej samej domenie, w której działa mój skrypt Python wsgi, przekazując użytkownika uwierzytelniania / hasło do mojego skryptu Python i przekazując pliki cookie do przeglądarki. Dzięki temu mogę otwierać strony Bugzilla i TWiki w tej samej przeglądarce i być uwierzytelnianym. Próbuję zrobić to samo z SuiteCRM, ale mam problem z akceptacją przez SuiteCRM plików cookie sesji uzyskanych ze skryptu Pythona, mimo że został pomyślnie uwierzytelniony.
źródło