Accedi a siti Web con Python

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

I tutorial di raschiatura Web sono stati trattati in passato, quindi questo tutorial copre solo l'aspetto di ottenere l'accesso ai siti Web accedendo al 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, avresti bisogno di una certa comprensione di HTML. Forse non abbastanza per creare siti Web fantastici, ma abbastanza per capire la struttura di una pagina web di base.

Installazione

Questo sarebbe fatto con le richieste e le biblioteche Python di Beautifulsoup. Attene quelle biblioteche 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 richieste e le librerie di bellissimo panorama possono essere installate con il comando PIP dal terminale come mostrato di seguito:

Richieste di installazione di PIP
PIP Installa Beautifulsoup4

Per confermare il successo dell'installazione, attiva la shell interattiva di Python che viene eseguita dalla digitazione pitone nel terminale.

Quindi importa entrambe le librerie:

richieste di importazione
Da BS4 Import Beautifulsoup

L'importazione ha esito positivo se non ci sono errori.

Il processo

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

I siti Web sono realizzati con due parti principali, sul lato client e sul 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 le operazioni di Business Logic e altre operazioni di server come l'accesso al database.

Quando si prova ad aprire un sito Web tramite il suo link, stai facendo 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 riempie un modulo, caricando un file multimediale o un documento, creando un post e facendo clic su diciamo un pulsante di invio, si inviano informazioni sul lato server. Questa richiesta è nota come richiesta post.

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

Ispezionando il sito Web

Per praticare i concetti di questo articolo, useremmo le citazioni per raschiare il sito Web.

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

Tuttavia, poiché questo sito Web è appena usato come prova del concetto, tutto va bene. Quindi useremmo amministratore come nome utente e 12345 come password.

In primo luogo, è importante visualizzare la fonte di 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 la pagina della pagina". Successivamente, ispeziona il modulo di accesso. Lo fai facendo clic con il pulsante destro del mouse su una delle caselle di accesso e facendo clic Ispeziona elemento. Sull'ispezione dell'elemento, dovresti vedere ingresso tag e poi un genitore modulo tagga da qualche parte sopra di esso. Ciò dimostra che gli accessi sono fondamentalmente forme INVIAREed al lato server del sito Web.

Ora, nota il nome Attributo dei tag di input per le caselle del nome utente e della password, sarebbero necessari quando si scrive il codice. Per questo sito Web, il nome attributo per il nome utente e la password nome utente E parola d'ordine rispettivamente.

Successivamente, dobbiamo sapere se ci sono altri parametri che sarebbero importanti per l'accesso. Spieghiamo rapidamente questo. Per aumentare la sicurezza dei siti Web, i token sono generalmente generati per prevenire gli attacchi di falsificazione del sito trasversale.

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

Dovremmo utilizzare la scheda Network. Per ottenere questa scheda su Google Chrome o Mozilla Firefox, apri gli strumenti per sviluppatori e fai clic sulla scheda Network.

Una volta che sei nella scheda Network, prova ad aggiornare la pagina corrente e noteresti le richieste in arrivo. Dovresti provare a fare attenzione alle richieste di post inviate quando proviamo ad accedere.

Ecco cosa faremmo dopo, mentre fa aprire la scheda della rete. Inserisci i dettagli di accesso e prova ad accedere, la prima richiesta che vorresti vedere dovrebbe essere la richiesta di post.

Fare clic sulla richiesta POST e visualizzare i parametri del modulo. Noteresti che il sito Web ha un csrf_token parametro con un valore. Tale valore è un valore dinamico, quindi dovremmo catturare tali valori usando il OTTENERE richiedere prima di utilizzare il file INVIARE richiesta.

Per altri siti Web su cui lavoreresti, probabilmente potresti non vedere il csrf_token Ma potrebbero esserci altri token che vengono generati dinamicamente. Nel tempo, miglioreresti di conoscere i parametri che contano davvero nel fare un tentativo di accesso.

Il codice

In primo luogo, dobbiamo utilizzare le richieste e la bellasup per ottenere l'accesso al contenuto della pagina della pagina di accesso.

Dalla sessione di importazione delle richieste
da BS4 Import Beautifulsoup come BS
con session () come s:
sito = s.get ("http: // citazioni.grattare, raschiare.com/login ")
Stampa (sito.contenuto)

Ciò stamperebbe il contenuto della pagina di accesso prima di accedere e se si cerca la parola chiave "di accesso". La parola chiave verrebbe trovata nel contenuto della pagina che mostra che dobbiamo ancora accedere.

Successivamente, cercheremmo il csrf_token parola chiave che è stata trovata come uno dei parametri quando si utilizza la scheda di rete in precedenza. Se la parola chiave mostra una corrispondenza con un ingresso tagga, quindi il valore può essere estratto ogni volta che si esegue lo script usando bellissimi.

Dalla sessione di importazione delle richieste
da BS4 Import Beautifulsoup come BS
con session () come s:
sito = s.get ("http: // citazioni.grattare, raschiare.com/login ")
bs_content = bs (sito.Contenuto, "HTML.parser ")
token = bs_content.find ("input", "nome": "csrf_token") ["valore"]
login_data = "nome utente": "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 ")
Stampa (home_page.contenuto)

Ciò stamperebbe il contenuto della pagina dopo l'accesso e se si cerca la parola chiave "logout". La parola chiave sarebbe trovata nel contenuto della pagina che mostra che siamo stati in grado di accedere correttamente.

Diamo un'occhiata a ogni riga di codice.

Dalla sessione di importazione delle richieste
da BS4 Import Beautifulsoup come BS

Le righe di codice sopra vengono utilizzate per importare l'oggetto sessione dalla libreria delle richieste e l'oggetto bellissimo dalla libreria BS4 utilizzando un alias di Bs.

con session () come s:

La sessione delle richieste viene utilizzata quando si intende mantenere il contesto di una richiesta, quindi possono essere archiviati i cookie e tutte le informazioni di tale richiesta.

bs_content = bs (sito.Contenuto, "HTML.parser ")
token = bs_content.find ("input", "nome": "csrf_token") ["valore"]

Questo codice qui utilizza la libreria di BeautifulSoup in modo che il csrf_token può essere estratto dalla pagina web e quindi assegnato alla variabile token. Puoi conoscere l'estrazione di dati dai nodi usando BeautifulSoup.

login_data = "nome utente": "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 l'accesso. Le chiavi dei dizionari sono i nome attributi dei tag di input e i valori sono i valore attributi dei tag di input.

IL inviare Il metodo viene utilizzato per inviare una richiesta post con i parametri e accedici.

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

Dopo un accesso, queste righe di codice sopra estraggono semplicemente le informazioni dalla pagina per mostrare che l'accesso ha avuto successo.

Conclusione

Il processo di accesso ai siti Web utilizzando Python è abbastanza semplice, tuttavia la configurazione di siti Web non è la stessa. C'è di più che si può fare per superare qualsiasi sfida di accesso che hai.

La cosa più importante in tutto ciò è la conoscenza di HTML, richieste, bellissimi e capacità di comprendere le informazioni ottenute dalla scheda Network degli strumenti per sviluppatori del browser web.