Mam problem z prostym autoryzowaniem i przesyłaniem skryptu API.Żądania Pythona nie obsługują plików cookie poprawnie?
Po autoryzacji klient otrzymuje kilka plików cookie, w tym plik cookie PHPSESSID (w przeglądarce).
używam requests.post
metodę z danych formularzy na dopuszczenie do obrotu:
r = requests.post(url, headers = self.headers, data = formData)
self.cookies = requests.utils.dict_from_cookieja(r.cookies)
Nagłówki są wykorzystywane wyłącznie do zwyczaju User-Agent
.
Autoryzacja jest w 100% w porządku (na stronie znajduje się link wylogowania). później spróbować przesłać dane za pomocą autoryzowanych ciasteczek sesyjnych:
r = requests.post(url, files = files, data = formData, headers = self.headers, cookies = self.cookies)
Ale strona odrzuca żądanie. Jeśli porównamy żądania skryptu i google chrome (używając Wireshark), nie ma różnic w treści żądania.
Jedyną różnicą jest to, że ciasteczka wysyłane przez klasy żądania, podczas gdy Google Chrome wysyła .
Aktualizacja: Podwójne sprawdzenie, pierwsze żądanie otrzymuje 7 plików cookie. metoda postu po prostu ignoruje połowę ...
Nie jestem świadomy żadnych problemów z plikami cookie z 'request', no. Za pomocą karty Incognito w Chrome, ile plików cookie ustawiono * przy pierwszym żądaniu witryny *? Witryna może bardzo dobrze zmienić zachowanie na podstawie agenta użytkownika lub innych nagłówków żądań. Następnie, czy na pewno strona nie używa tokena CSRF osadzonego w formularzu logowania? –
Następnie, jaka jest data wygaśnięcia plików cookie? Czy na tych ciasteczkach są ustawione określone flagi? Co się stanie, gdy użyjesz obiektu 'requests.Session()' do zarządzania plikami cookie? –
@MartijnPieters my bad, rozwiązałem błędy. Nie mam doświadczenia z korzystaniem z klasy 'session', dobra rada na przyszłość! – Croll