Loowanie do strony wymagającej cookies, bez selenium.

0

Hej.Trochę ostatnio bawię się z automatyzacją i scrapowaniem ale nadziałem się na cookies, mianowicie umiem zrobić np w selenium skrypt który odpali przeglądarke i się zaloguje ale to wolne jak ślimak w smole, a mi chodzi tylko by utworzył sesje i np sprawdził czy nie mam nowych wiadomości na danej stronie więc powinno dać się to zrobić jakimś byle urlibem czy robobrowserem ale mi nie wychodzi więc sam już nie wiem czy dobrze myślę.
Pytanie brzmi co jest najszybsze/najwygodniejsze do zalogowania się z obsługą cookies? No i co jeśli moduł logowania jest w JS, bo w selenium można np wait.until(warunek czyli np wykonanie czegoś dopiero jak coś tam jest w polu widzenia) i niezbyt wiem jak to zrobić bez tego.
Pozdrawiam.

1

RoboBrowser

jak to modul logowania jest w js? Jakis POST request na koncu jest wykonywany i to on Cie przede wszystkim interesuje

2

Nie ma znaczenia "w czym" jest moduł logowania. Finalnie leci do serwera jakiś request. Otwórz sobie zakładkę "network" w przeglądarkowych devtoolsach i zobacz co jest wysyłane jak się logujesz. Następnie taki sam request możesz wysłać za pomocą requests w pythonie. Z response możesz też odczytać session cookies jeśli zostaną zwrócone i możesz je dalej przesyłać w kolejnych reuqestach.

r = requests.get("http://wp.pl")
print(r.cookies)
r = requests.get("http://wp.pl", cookies={"x":"y"})
0

No tak, jak już was czytam to wydaje się to całkiem oczywiste, dziękuje za odp.Mimo to nadal mam problemy z niektórymi stronami, np:

>>> import requests
>>> r = requests.get("http://poczta.o2.pl/zaloguj")
>>> print (r.cookies)
<RequestsCookieJar[]>

Czemu tutaj CookieJar jest pusty i jak to naprawić? Jak dobrze pamiętam, to przecież protokół http wysyła w nagłówku cookies po prostu "set-cookie" i powinno to wystarczyć do ich namierzenia przez cokolwiek.

1
  1. Ustaw jakiś legitny user agent, mogą blacklistować ci pythona jako bota
  2. Mogą cookies robić JSem, wtedy nie zadziała ;)
  3. Czemu myślisz że taki GET miałby ci dać jakieś cookie? To raczej POST z logowaniem jeśli już.
0

1.Faktycznie nie pomyślałem o tym UA, ale to chyba rzadkość na popularnych portalach żeby banować byle crawlery, nie jestem pewien ale założyłbym się o piwo że na portalach typu wp.pl, o2.pl, gazeta.pl, to możesz nawet wysłać jakieś mega przypałowe UA typu hydra itp i też przyjmie, nie założyłbym nawet o jedno piwo w wypadku google bo to inna skala spółki i inny poziom zabezpieczeń.

2.Chwilka, czyli mówisz że jak jest cookie robione JSem to nic nie zadziała? Nie wiele znalazłem w google o tym niestety.

3.Hmm.Myślę że taki get miałby dać cookies, bo nawet strony sfocusowane na prywatność i anonimowość jak protonmail.ch wysyłają cookies już na dzień dobry, więcej lub mniej ale nie spotkałem się żebym nie miał nic w zakładce cookies w devtoolsach przy otworzeniu jakiejś dużej strony.

A ostatecznie to jestem jeszcze głupszy niż myślałem, bo wystarczyło:

>>> s = requests.Session()
>>> get_=s.get('http://poczta.wp.pl')
>>> print(s.cookies.get_dict())
{'reksticket': '1537981028', 'wpsticket': '55436312257139572CY5JI6aAMB9txajFPVOgYll3MVYvpJu3Dh5iBY05Uhx7r9I%2Bl52WzylT%2BXPgjHSroItvlUqZtxzwAwk5iP4XeZyMiZUUkkoLKA9SYbkDE7Yo67n7a4KmnTCNI6a%2Baa7', 'rekticket': '1537981028', 'statid': '758106b9e110232fe23ca295007deb73:38a25b:1537981028:v3', 'wpdticket': '5117904511404984CA4Efz94GwUrBTp9vdWiLDiSJ8VK1JrCnODoGd%2B1oIq6xQBj9OVC%2BaEIdkPOL%2FAxLPm%2B0xIB4axcVp%2FNxEJyce4ccQjjrYUlVzaX4Q20Yn%2FkAS08AJ3HUtEf%2B5gMa61g'}

Wracam do pracy nad swoim botem i dzięki za pomoc raz jeszcze.Pozdrawiam :)

1
  1. Nie wiem jak tam akurat jest, sugerowałem tylko że ktoś może filtrowac boty ;)
  2. No request tylko pobiera htmla, jakby tam był jakis JS który się musi wykonać żeby poszedł request o ciastko, to się oczywiście nie wykona :)
  3. Tu też różnie bywa, czasem dostaniesz jakieś session cookie dopiero po zalogowaniu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1