Logowanie na stronach internetowych z Python

Logowanie na stronach internetowych z Python
Funkcja logowania jest ważną funkcją w dzisiejszych aplikacjach internetowych. Ta funkcja pomaga zachować specjalną treść przed użytkownikami witryny, a także jest używana do identyfikacji użytkowników premium. Dlatego jeśli zamierzasz skrobać stronę internetową, możesz natknąć się na funkcję logowania, jeśli treść jest dostępna tylko dla zarejestrowanych użytkowników.

Samouczki ze skrobaniem internetowym zostały omówione w przeszłości, dlatego ten samouczek obejmuje jedynie aspekt uzyskania dostępu do stron internetowych, logując się z kodem zamiast robić to ręcznie za pomocą przeglądarki.

Aby zrozumieć ten samouczek i być w stanie pisać skrypty do logowania na stronach internetowych, potrzebujesz zrozumienia HTML. Może nie wystarczy zbudować niesamowite strony internetowe, ale wystarczające, aby zrozumieć strukturę podstawowej strony internetowej.

Instalacja

Zostanie to zrobione z bibliotekami prośbami i pięknymi Python. Posiadając te biblioteki Python, potrzebujesz dobrej przeglądarki, takiej jak Google Chrome lub Mozilla Firefox, ponieważ byłyby ważne do wstępnej analizy przed napisaniem kodu.

Żądania i biblioteki w pięknej grupie można zainstalować za pomocą polecenia PIP z terminala, jak pokazano poniżej:

żądania instalacji PIP
PIP Zainstaluj BeautifulSoup4

Aby potwierdzić powodzenie instalacji, aktywuj interaktywną powłokę Pythona, która odbywa się poprzez pisanie pyton do terminala.

Następnie zaimportuj obie biblioteki:

żądania importu
z BS4 Import Beautifulsoup

Import jest skuteczny, jeśli nie ma błędów.

Proces

Logowanie na stronie internetowej ze skryptami wymaga znajomości HTML i wyobrażenia o tym, jak działa sieć. Spójrzmy krótko, jak działa sieć.

Strony internetowe są wykonane z dwóch głównych części, po stronie klienta i po stronie serwera. Po stronie klienta jest częścią strony internetowej, z którą użytkownik wchodzi w interakcje, podczas gdy serwer jest częścią strony internetowej, w której logika biznesowa i inne operacje serwerowe, takie jak dostęp do bazy danych.

Kiedy próbujesz otworzyć witrynę za pośrednictwem jej linku, prośbasz o stronę serwera, aby pobrać pliki HTML i inne pliki statyczne, takie jak CSS i JavaScript. To żądanie jest znane jako żądanie GET. Jednak podczas wypełniania formularza, przesyłania pliku multimediowego lub dokumentu, tworzenie postu i klikanie przycisk Zgłoś się, wysyłasz informacje na stronie serwera. To żądanie jest znane jako żądanie pocztów.

Zrozumienie tych dwóch koncepcji byłoby ważne przy pisaniu naszego skryptu.

Sprawdzanie strony internetowej

Aby ćwiczyć pojęcia tego artykułu, używalibyśmy cytatów do zeskrobania strony internetowej.

Logowanie na stronach internetowych wymaga takich informacji, jak nazwa użytkownika i hasło.

Ponieważ jednak ta strona jest po prostu używana jako dowód koncepcji, wszystko idzie. Dlatego używalibyśmy Admin jako nazwa użytkownika i 12345 jako hasło.

Po pierwsze, ważne jest, aby wyświetlić źródło strony, ponieważ dałoby to przegląd struktury strony internetowej. Można to zrobić, klikając prawym przyciskiem myszy stronę internetową i klikając „Wyświetl źródło strony”. Następnie sprawdza formularz logowania. Robisz to, klikając jedno z jedno z pola logowania i klikając Sprawdź element. Po sprawdzeniu elementu należy zobaczyć wejście tagi, a następnie rodzic formularz tag gdzieś nad tym. To pokazuje, że loginy są w zasadzie formy POSTna serwerze strony internetowej.

Teraz zwróć uwagę nazwa atrybut tagów wejściowych dla nazwy użytkownika i skrzynek haseł, będą one potrzebne podczas pisania kodu. Dla tej strony internetowej nazwa atrybut dla nazwy użytkownika i hasła są nazwa użytkownika I hasło odpowiednio.

Następnie musimy wiedzieć, czy istnieją inne parametry, które byłyby ważne dla logowania. Szybko to wyjaśnijmy. Aby zwiększyć bezpieczeństwo stron internetowych, tokeny są zwykle generowane, aby zapobiec atakom fałszowania krzyżowego.

Dlatego jeśli tokeny te nie zostaną dodane do żądania pocztowego, login awansowałby. Skąd więc wiemy o takich parametrach?

Musielibyśmy użyć karty sieciowej. Aby uzyskać tę kartę w Google Chrome lub Mozilla Firefox, otwórz narzędzia programistów i kliknij kartę Network.

Gdy znajdziesz się na karcie Network, spróbuj odświeżyć bieżącą stronę i zauważysz, że prośby nadchodzą. Powinieneś spróbować uważać na wysyłanie żądań postu, gdy spróbujemy się zalogować.

Oto, co zrobilibyśmy dalej, jednocześnie otwartą kartę sieciową. Umieść szczegóły logowania i spróbuj zalogować się, pierwszym żądaniem, które można zobaczyć, powinno być żądanie postu.

Kliknij żądanie Post i wyświetl parametry formularza. Zauważysz, że strona ma Csrf_Token parametr o wartości. Ta wartość jest wartością dynamiczną, dlatego musielibyśmy uchwycić takie wartości za pomocą DOSTAWAĆ poprosić najpierw przed użyciem POST wniosek.

W przypadku innych stron internetowych, nad którymi będziesz pracował, prawdopodobnie nie możesz zobaczyć Csrf_Token Ale mogą istnieć inne tokeny, które są dynamicznie generowane. Z czasem lepiej byłoby znać parametry, które naprawdę mają znaczenie przy podejmowaniu próby logowania.

Kod

Po pierwsze, musimy użyć żądań i pięknej grupy, aby uzyskać dostęp do treści strony strony logowania.

z sesji importu żądań
z BS4 importuj Beautifulsoup jako BS
z session () jako s:
strona = s.Get ("http: // cytaty.zeskrobać.com/login ”)
Drukuj (strona.treść)

To wydrukowałoby zawartość strony logowania, zanim zalogujemy się i jeśli szukasz słowa kluczowego „logowania”. Słowo kluczowe można znaleźć w treści strony pokazującej, że jeszcze nie zalogowaliśmy się.

Następnie szukalibyśmy Csrf_Token Słowo kluczowe, które zostało znalezione jako jeden z parametrów podczas wcześniejszego korzystania z karty sieciowej. Jeśli słowo kluczowe pokazuje dopasowanie do wejście tag, a następnie wartość można wyodrębnić za każdym razem, gdy uruchamiasz skrypt za pomocą pięknej grupy.

z sesji importu żądań
z BS4 importuj Beautifulsoup jako BS
z session () jako s:
strona = s.Get ("http: // cytaty.zeskrobać.com/login ”)
BS_CONTENT = BS (strona.treść ”, html.Parser ”)
token = bs_content.Znajdź („input”, „name”: „csrf_token”) [„wartość”]
login_data = „nazwa użytkownika”: „admin”, „hasło”: „12345”, „csrf_token”: token
S.Post („http: // cytaty.zeskrobać.com/login ", login_data)
home_page = s.Get ("http: // cytaty.zeskrobać.com ”)
Drukuj (strona home_page.treść)

To wydrukowałoby zawartość strony po zalogowaniu się, a jeśli szukasz słowa kluczowego „wyloguj się”. Słowo kluczowe można znaleźć w treści strony pokazującej, że mogliśmy pomyślnie się zalogować.

Rzućmy okiem na każdą wiersz kodu.

z sesji importu żądań
z BS4 importuj Beautifulsoup jako BS

Powyższe wiersze kodu są używane do importowania obiektu sesji z biblioteki żądań i obiektu BeautifulSoup z biblioteki BS4 za pomocą aliasu BS.

z session () jako s:

Sesja żądań jest używana, gdy zamierzasz zachować kontekst żądania, aby pliki cookie i wszystkie informacje z tej sesji żądania można przechowywać.

BS_CONTENT = BS (strona.treść ”, html.Parser ”)
token = bs_content.Znajdź („input”, „name”: „csrf_token”) [„wartość”]

Ten kod tutaj wykorzystuje bibliotekę pięknych grup, więc Csrf_Token można wyodrębnić ze strony internetowej, a następnie przypisać do zmiennej tokena. Możesz dowiedzieć się o wyodrębnianiu danych z węzłów za pomocą BeautifulSoup.

login_data = „nazwa użytkownika”: „admin”, „hasło”: „12345”, „csrf_token”: token
S.Post („http: // cytaty.zeskrobać.com/login ", login_data)

Kod tutaj tworzy słownik parametrów, które należy użyć do logowania. Klucze słowników to nazwa atrybuty tagów wejściowych i wartości to wartość atrybuty tagów wejściowych.

post Metoda służy do wysyłania żądania POST z parametrami i zalogowania.

home_page = s.Get ("http: // cytaty.zeskrobać.com ”)
Drukuj (strona home_page.treść)

Po zalogowaniu te linie kodu powyżej po prostu wyodrębniają informacje ze strony, aby pokazać, że login się powiódł.

Wniosek

Proces logowania się na stronach internetowych za pomocą Pythona jest dość łatwy, jednak konfiguracja stron internetowych nie jest taka sama, dlatego niektóre witryny okazałyby się trudniejsze. Można zrobić więcej, aby przezwyciężyć wszelkie masz wyzwania logowania.

Najważniejszą rzeczą w tym wszystkim jest znajomość HTML, żądań, pięknej grupy i możliwości zrozumienia informacji uzyskanych z karty sieciowej narzędzi programistycznej przeglądarki internetowej.