Pitone

Accesso a siti Web con Python

Accesso a siti Web con Python
La funzione di accesso è una funzionalità importante nelle applicazioni web di oggi. Questa funzione aiuta a mantenere contenuti speciali dai non utenti del sito e viene utilizzata anche per identificare gli utenti premium. Pertanto, se intendi eseguire il web scraping di un sito Web, potresti imbatterti nella funzione di accesso se il contenuto è disponibile solo per gli utenti registrati.

I tutorial di web scraping sono stati trattati in passato, quindi questo tutorial copre solo l'aspetto dell'accesso ai siti Web accedendo con il codice invece di farlo manualmente utilizzando il browser.

Per comprendere questo tutorial ed essere in grado di scrivere script per l'accesso ai siti Web, è necessaria una certa comprensione dell'HTML. Forse non abbastanza per creare siti Web fantastici, ma abbastanza per comprendere la struttura di una pagina Web di base.

Installazione

Questo verrebbe fatto con le librerie Python Requests e BeautifulSoup. Oltre a quelle librerie Python, avresti bisogno di un buon browser come Google Chrome o Mozilla Firefox in quanto sarebbero importanti per l'analisi iniziale prima di scrivere il codice.

Le librerie Requests e BeautifulSoup possono essere installate con il comando pip da terminale come mostrato di seguito:

pip richieste di installazione
pip install BeautifulSoup4

Per confermare il successo dell'installazione, attiva la shell interattiva di Python che si fa digitando pitone nel terminale.

Quindi importa entrambe le librerie:

richieste di importazione
da bs4 import BeautifulSoup

L'importazione va a buon fine se non ci sono errori.

Il processo

L'accesso a un sito Web con script richiede la conoscenza dell'HTML e un'idea di come funziona il Web. Vediamo brevemente come funziona il web.

I siti web sono composti da due parti principali, lato client e lato server. Il lato client è la parte di un sito Web con cui l'utente interagisce, mentre il lato server è la parte del sito Web in cui vengono eseguite la logica di business e altre operazioni del server come l'accesso al database.

Quando provi ad aprire un sito Web tramite il suo collegamento, stai inviando una richiesta al lato server per recuperare i file HTML e altri file statici come CSS e JavaScript. Questa richiesta è nota come richiesta GET. Tuttavia, quando si compila un modulo, si carica un file multimediale o un documento, si crea un post e si fa clic, ad esempio, su un pulsante di invio, si inviano informazioni al lato server. Questa richiesta è nota come richiesta POST.

Una comprensione di questi due concetti sarebbe importante quando si scrive la nostra sceneggiatura.

Ispezione del sito web

Per mettere in pratica i concetti di questo articolo, utilizzeremmo il sito Web Quotes To Scrape.

L'accesso ai siti Web richiede informazioni come il nome utente e una password.

Tuttavia, poiché questo sito Web viene utilizzato solo come prova di concetto, tutto va bene. Quindi useremmo amministratore come nome utente e 12345 come password.

In primo luogo, è importante visualizzare l'origine della pagina in quanto ciò darebbe una panoramica della struttura della pagina web. Questo può essere fatto facendo clic con il pulsante destro del mouse sulla pagina Web e facendo clic su "Visualizza sorgente pagina". Successivamente, controlli il modulo di accesso. Puoi farlo facendo clic con il pulsante destro del mouse su una delle caselle di accesso e facendo clic su Ispeziona elemento. Sull'elemento di ispezione, dovresti vedere ingresso tag e poi un genitore modulo tagga da qualche parte sopra di esso. Ciò dimostra che gli accessi sono fondamentalmente dei moduli INVIAREed al lato server del sito web.

Ora, nota il nome attributo dei tag di input per le caselle nome utente e password, sarebbero necessari durante la scrittura del codice. Per questo sito web, il nome attributo per il nome utente e la password sono nome utente e parola d'ordine rispettivamente.

Successivamente, dobbiamo sapere se ci sono altri parametri che sarebbero importanti per il login. Spieghiamolo velocemente. Per aumentare la sicurezza dei siti Web, i token vengono generalmente generati per prevenire attacchi Cross Site Forgery.

Pertanto, se tali token non vengono aggiunti alla richiesta POST, l'accesso fallirebbe. Quindi, come facciamo a sapere di tali parametri??

Dovremmo usare la scheda Rete. Per ottenere questa scheda su Google Chrome o Mozilla Firefox, apri gli Strumenti per sviluppatori e fai clic sulla scheda Rete.

Una volta che sei nella scheda della rete, prova ad aggiornare la pagina corrente e noterai richieste in arrivo. Dovresti cercare di fare attenzione alle richieste POST inviate quando proviamo ad accedere.

Ecco cosa faremmo dopo, tenendo aperta la scheda Rete. Inserisci i dettagli di accesso e prova ad accedere, la prima richiesta che vedresti dovrebbe essere la richiesta POST.

 

Fare clic sulla richiesta POST e visualizzare i parametri del modulo. Noterai che il sito web ha un csrf_token parametro con un valore. Quel valore è un valore dinamico, quindi avremmo bisogno di catturare tali valori usando il OTTENERE richiesta prima di utilizzare il INVIARE richiesta.

Per altri siti Web su cui lavorerai, probabilmente potresti non vedere il csrf_token ma potrebbero esserci altri token generati dinamicamente. Nel tempo, diventerai più bravo a conoscere i parametri che contano davvero per fare un tentativo di accesso.

Il codice

Innanzitutto, dobbiamo utilizzare Requests e BeautifulSoup per accedere al contenuto della pagina della pagina di accesso.

dalle richieste di importazione Session
da bs4 import BeautifulSoup come bs
 
con Session() come s:
sito = s.get("http://citazioni.grattare, raschiare.com/accedi")
stampa (sito.soddisfare)

Questo stamperebbe il contenuto della pagina di accesso prima di accedere e se si cerca la parola chiave "Login". La parola chiave si troverebbe nel contenuto della pagina mostrando che dobbiamo ancora accedere.

Successivamente, cercheremo il csrf_token parola chiave che è stata trovata come uno dei parametri quando si utilizzava la scheda di rete in precedenza. Se la parola chiave mostra una corrispondenza con an ingresso tag, quindi il valore può essere estratto ogni volta che esegui lo script utilizzando BeautifulSoup.

dalle richieste di importazione Session
da bs4 import BeautifulSoup come bs
 
con Session() come s:
sito = s.get("http://citazioni.grattare, raschiare.com/accedi")
bs_content = bs(sito.contenuto, "html.analizzatore")
token = bs_content.find("input", "name":"csrf_token")["value"]
login_data = "username":"admin","password":"12345", "csrf_token":token
S.post("http://citazioni.grattare, raschiare.com/login",login_data)
home_page = s.get("http://citazioni.grattare, raschiare.com")
print(home_page.soddisfare)

Questo stamperebbe il contenuto della pagina dopo l'accesso e se si cerca la parola chiave "Esci". La parola chiave si troverebbe nel contenuto della pagina mostrando che siamo stati in grado di accedere con successo.

Diamo un'occhiata a ogni riga di codice.

dalle richieste di importazione Session
da bs4 import BeautifulSoup come bs

Le righe di codice sopra sono usate per importare l'oggetto Session dalla libreria delle richieste e l'oggetto BeautifulSoup dalla libreria bs4 usando un alias di bs.

con Session() come s:

La sessione delle richieste viene utilizzata quando si intende mantenere il contesto di una richiesta, in modo che i cookie e tutte le informazioni di quella sessione di richiesta possano essere archiviate.

bs_content = bs(sito.contenuto, "html.analizzatore")
token = bs_content.find("input", "name":"csrf_token")["value"]

Questo codice qui utilizza la libreria BeautifulSoup quindi il csrf_token può essere estratto dalla pagina web e quindi assegnato alla variabile token. Puoi imparare a estrarre dati dai nodi usando BeautifulSoup.

login_data = "username":"admin","password":"12345", "csrf_token":token
S.post("http://citazioni.grattare, raschiare.com/login", login_data)

Il codice qui crea un dizionario dei parametri da utilizzare per il login. Le chiavi dei dizionari sono le nome gli attributi dei tag di input e i valori sono i valore attributi dei tag di input.

Il inviare viene utilizzato per inviare una richiesta di posta con i parametri e accedere and.

home_page = s.get("http://citazioni.grattare, raschiare.com")
print(home_page.soddisfare)

Dopo un accesso, queste righe di codice sopra estraggono semplicemente le informazioni dalla pagina per mostrare che l'accesso è andato a buon fine.

Conclusione

Il processo di accesso ai siti Web utilizzando Python è abbastanza semplice, tuttavia l'impostazione dei siti Web non è la stessa, quindi alcuni siti si dimostrerebbero più difficili da accedere rispetto ad altri. C'è di più che si può fare per superare qualsiasi difficoltà di accesso tu abbia.

La cosa più importante in tutto questo è la conoscenza di HTML, Requests, BeautifulSoup e la capacità di comprendere le informazioni ottenute dalla scheda Rete degli strumenti di sviluppo del tuo browser web.

Come mostrare l'overlay OSD in app e giochi Linux a schermo intero
Giocare a giochi a schermo intero o utilizzare app in modalità a schermo intero senza distrazioni può tagliarti fuori dalle informazioni di sistema ri...
Le 5 migliori carte di acquisizione del gioco
Abbiamo tutti visto e amato i giochi in streaming su YouTube. PewDiePie, Jakesepticye e Markiplier sono solo alcuni dei migliori giocatori che hanno g...
Come sviluppare un gioco su Linux
Un decennio fa, non molti utenti Linux avrebbero previsto che il loro sistema operativo preferito un giorno sarebbe diventato una piattaforma di gioco...