• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak wykryć czy podczas logowania na stronie pojawia się wiadomość o niepoprawnym zalogowaniu?

Cloud VPS
0 głosów
776 wizyt
pytanie zadane 19 maja 2020 w Python przez tonn204 Mądrala (7,470 p.)
edycja 19 maja 2020 przez tonn204

Cześć. Mam pytanie jak mogę wykryć, że podczas logowanie hasło jest poprawne lub nie. Próbowałem takiej, że jeżeli tekst X jest w content adresu URL to wtedy napisz MSG ale to nie działa. Co zrobić, żeby działało?

import requests

URL = "https://store.steampowered.com/login"
r = requests.post(URL,data={"username":"usr","password":"X","Zaloguj się":"submit"})
content = r.content

if "Wykryto zbyt wiele nieudanych prób logowania z twojej sieci w krótkim czasie. Poczekaj i spróbuj ponownie później.".encode() in content:
    pass
else:
    print("Zalogowano")

 

komentarz 19 maja 2020 przez VBService Ekspert (256,600 p.)

Wstaw (pokaż) w treść pytania kod, który napisałeś (jeśli to nie tajemnica wink ).
Będzie prościej udzielić Tobie pomocy.

komentarz 19 maja 2020 przez tonn204 Mądrala (7,470 p.)
import requests

URL = "https://store.steampowered.com/login"
r = requests.post(URL,data={"username":"usr","password":"X","Zaloguj się":"submit"})
content = r.content

if "Wykryto zbyt wiele nieudanych prób logowania. Poczekaj i spróbuj ponownie później.".encode() in content:
    pass
else:
    print("Zalogowano")

 

komentarz 19 maja 2020 przez tonn204 Mądrala (7,470 p.)

@VBService, Wiesz jak to naprawić?

komentarz 19 maja 2020 przez VBService Ekspert (256,600 p.)
edycja 19 maja 2020 przez VBService

Chodzi Tobie o tę konkretną stronę (czyli logowanie do "stima" wink ) 
https://store.steampowered.com/login , czy tylko podałeś ją jako przykład dla ogólnego sprawdzenia czy skrypt zadziała.

Sprawdziłem dla tego konkretnego adresu: https://store.steampowered.com/login
Założyłem nawet sobie konto na nim do celów testowych. Oto co już ustaliłem.

  1. " ... if Wykryto zbyt wiele nieudanych prób logowania. Poczekaj ... ", nie zadział w tej formie bo po 6 nieudanych próbach zalogowania pojawia się kod captcha 



    ewentualnie w grę wchodzi sprawdzenie content = r.content czy pojawił się w zwracanym kodzie html zapis w stylu:
    if r.content.endswith("store.steampowered.com/login/rendercaptcha/?gid="):
        print("Błąd logowania")
    else:
        print("Zalogowano")
  2. Pisząc taki skrypt trzeba indywidualnie podchodzi do zagadnienia i sprawdzić jaki jest "wygląd" formularza logowania, chodzi mi o html, w tym przypadku wygląda to tak
    <form name="logon" action="" method="POST" id="login_form" style="display: block;">
        <div class="login_row">
            <div class="input_title">Nazwa konta Steam</div>
            <input class="text_input" type="text" name="username" id="input_username" value="">
        </div>
        <div class="login_row">
            <div class="input_title">Hasło</div>
            <input class="text_input" type="password" name="password" id="input_password" autocomplete="off">
        </div>
        <div class="login_row" id="captcha_entry" style="">
            <div id="captcha_image_row">
                <img style="float: left;" id="captchaImg" src="https://store.steampowered.com/login/rendercaptcha/?gid=3668690305744772963" border="0" width="206" height="40">
                <div id="captchaRefresh">
                    <span class="linkspan" id="captchaRefreshLink">Odśwież</span>
                </div>
                <div style="clear: left;"></div>
            </div>
            <br>
            <div class="input_title">Wprowadź powyższe znaki</div>
                <input class="text_input" id="input_captcha" type="text" name="captcha_text">
            </div>
            <div style="display: none;"><input type="submit"></div>
    </form>
  3. Od razu zauważamy, że atrybut action jest "pusty"
    <form name="logon" action="" 
  4. Czyli za wysłanie formularza odpowiada w tym przypadku kod javascript a dokładnie posłużono się tu jqery.1.8.3

  5. Sprawdziłem i kod javascript używa takiego adresu do wysłania danych z formularza logowania (atrybut action)

    
    # Uzywany do tej pory
    URL = "https://store.steampowered.com/login"
    
    # Nowy
    URL = "https://store.steampowered.com/login/dologin"
  6. W tedy w response pojawia się taki tekst wink

  7. Po prawidłowym zalogowaniu z adres się zmienia (coś jakby przekierowanie)
    Przed: https://store.steampowered.com/login
    Po prawidłowym zalogowaniu: https://store.steampowered.com/

  8. Dalej sam ugrzęzłem wink. Na razie douczam się jak poprawnie korzystać z requests library in Python np.: tutaj.

komentarz 19 maja 2020 przez tonn204 Mądrala (7,470 p.)

@VBService, Jeżeli chodzi o stronę to wybrałem pierwszą lepszą do testów. :D, a jak mówmy o tym komunikacie to, kiedy pisało mi, że po prostu nie poprawny login lub hasło to też nie działało. Czym to może być spowodowane?

PS. Mi się nie wyświetla kod captach nawet jak wpisuje poprawne hasło. Może spróbuje na innej stronie.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
0 odpowiedzi 334 wizyt
0 głosów
0 odpowiedzi 166 wizyt
pytanie zadane 28 stycznia 2019 w Inne języki przez Pikalak Początkujący (250 p.)
0 głosów
1 odpowiedź 267 wizyt
pytanie zadane 5 kwietnia 2019 w JavaScript przez Kacperhehe Bywalec (2,930 p.)

93,459 zapytań

142,454 odpowiedzi

322,724 komentarzy

62,837 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...