Pieteikšanās vietnēs, izmantojot Python

Logging Into Websites With Python



Pieteikšanās funkcija ir svarīga mūsdienu tīmekļa lietojumprogrammu funkcionalitāte. Šī funkcija palīdz saglabāt īpašu saturu no vietnes lietotājiem, un to izmanto arī, lai identificētu augstākās klases lietotājus. Tāpēc, ja jūs plānojat tīmeklī nokopēt vietni, jūs varat saskarties ar pieteikšanās funkciju, ja saturs ir pieejams tikai reģistrētiem lietotājiem.

Tīmekļa skrāpēšanas apmācības ir ietvertas agrāk, tāpēc šī apmācība aptver tikai piekļuves vietnēm piekļuves aspektu, piesakoties ar kodu, nevis to darot manuāli, izmantojot pārlūkprogrammu.







Lai saprastu šo apmācību un varētu rakstīt skriptus, lai pieteiktos vietnēs, jums ir nepieciešama zināma HTML izpratne. Varbūt nepietiek, lai izveidotu satriecošas vietnes, bet pietiekami, lai saprastu pamata tīmekļa lapas struktūru.



Tas tiktu darīts ar pieprasījumiem un BeautifulSoup Python bibliotēkām. Papildus šīm Python bibliotēkām jums ir nepieciešams labs pārlūks, piemēram, Google Chrome vai Mozilla Firefox, jo tie būtu svarīgi sākotnējai analīzei pirms koda rakstīšanas.



Pieprasījumu un BeautifulSoup bibliotēkas var instalēt, izmantojot termināļa komandu pip, kā redzams zemāk:





pip instalēšanas pieprasījumi
pip instalēt BeautifulSoup4

Lai apstiprinātu instalēšanas panākumus, aktivizējiet Python interaktīvo apvalku, ko veic, ierakstot pitons terminālī.

Pēc tam importējiet abas bibliotēkas:



importētpieprasījumus
nobs4importētBeautifulSup

Importēšana ir veiksmīga, ja nav kļūdu.

Process

Lai pieteiktos vietnē, izmantojot skriptus, ir nepieciešamas zināšanas par HTML un ideja par tīmekļa darbību. Īsi apskatīsim, kā darbojas tīmeklis.

Vietnes veido divas galvenās daļas-klienta un servera puses. Klienta puse ir vietnes daļa, ar kuru lietotājs mijiedarbojas, savukārt servera puse ir vietnes daļa, kurā tiek veikta biznesa loģika un citas servera darbības, piemēram, piekļuve datu bāzei.

Mēģinot atvērt vietni, izmantojot tās saiti, jūs pieprasāt servera pusei, lai jūs saņemtu HTML failus un citus statiskus failus, piemēram, CSS un JavaScript. Šis pieprasījums ir pazīstams kā GET pieprasījums. Tomēr, aizpildot veidlapu, augšupielādējot multivides failu vai dokumentu, izveidojot ziņu un noklikšķinot, teiksim, uz pogas Iesniegt, jūs sūtāt informāciju uz servera pusi. Šis pieprasījums ir pazīstams kā POST pieprasījums.

Šo divu jēdzienu izpratne būtu svarīga, rakstot mūsu scenāriju.

Vietnes pārbaude

Lai praktizētu šī raksta jēdzienus, mēs izmantosim Citāti, lai nokasītu mājas lapā.

Lai pieteiktos vietnēs, ir nepieciešama tāda informācija kā lietotājvārds un parole.

Tomēr, tā kā šī vietne tiek izmantota tikai kā koncepcijas pierādījums, viss notiek. Tāpēc mēs izmantotu admin kā lietotājvārdu un 12345 kā paroli.

Pirmkārt, ir svarīgi apskatīt lapas avotu, jo tas sniegtu pārskatu par tīmekļa lapas struktūru. To var izdarīt, ar peles labo pogu noklikšķinot uz tīmekļa lapas un noklikšķinot uz Skatīt lapas avotu. Pēc tam pārbaudiet pieteikšanās veidlapu. To var izdarīt, ar peles labo pogu noklikšķinot uz viena no pieteikšanās lodziņiem un noklikšķinot pārbaudīt elementu . Pārbaudot elementu, jums vajadzētu redzēt ievadi atzīmes un pēc tam vecāks veidlapu atzīmēt kaut kur virs tā. Tas parāda, ka pieteikšanās pamatā ir formas POST rediģēt uz vietnes servera pusi.

Tagad ņemiet vērā ,. vārds lietotājvārda un paroles lodziņu ievades tagu atribūts, tie būtu nepieciešami, rakstot kodu. Šai vietnei ,. vārds lietotājvārda un paroles atribūts ir lietotājvārds un parole attiecīgi.

Tālāk mums jāzina, vai ir citi parametri, kas būtu svarīgi pieteikšanās laikā. Ātri izskaidrosim šo. Lai palielinātu vietņu drošību, parasti tiek ģenerēti marķieri, lai novērstu uzbrukumus starp vietnēm.

Tāpēc, ja šie marķieri netiek pievienoti POST pieprasījumam, pieteikšanās neizdosies. Tātad, kā mēs zinām par šādiem parametriem?

Mums vajadzētu izmantot cilni Tīkls. Lai iegūtu šo cilni pārlūkprogrammā Google Chrome vai Mozilla Firefox, atveriet izstrādātāja rīkus un noklikšķiniet uz cilnes Tīkls.

Kad esat nokļuvis cilnē Tīkls, mēģiniet atsvaidzināt pašreizējo lapu, un jūs pamanīsit, ka tiek saņemti pieprasījumi. Mēģiniet piesargāties no POST pieprasījumu nosūtīšanas, kad mēģinām pieteikties.

Tālāk ir norādīts, ko mēs darītu, kamēr cilne Tīkls ir atvērta. Ievadiet pieteikšanās informāciju un mēģiniet pieteikties, pirmajam pieprasījumam, ko redzēsit, vajadzētu būt POST pieprasījumam.

Noklikšķiniet uz POST pieprasījuma un apskatiet veidlapas parametrus. Jūs pamanīsit, ka vietnē ir csrf_token parametrs ar vērtību. Šī vērtība ir dinamiska vērtība, tāpēc mums būtu jāfiksē šādas vērtības, izmantojot GŪT vispirms pieprasiet pirms POST pieprasījums.

Citās vietnēs, ar kurām jūs strādājat, iespējams, neredzēsit csrf_token bet var būt arī citi dinamiski ģenerēti žetoni. Laika gaitā jūs labāk zināsit parametrus, kas patiešām ir svarīgi, mēģinot pieteikties.

Kods

Pirmkārt, mums ir jāizmanto pieprasījumi un BeautifulSoup, lai piekļūtu pieteikšanās lapas lapas saturam.

nopieprasījumusimportētSesija
nobs4importētBeautifulSupbs

arSesija() s:
vietne =s.gūt('http://quotes.toscrape.com/login')
drukāt(vietne.saturu)

Tas izdrukātu pieteikšanās lapas saturu, pirms mēs piesakāmies un ja meklējat pieteikšanās atslēgvārdu. Atslēgvārds būtu atrodams lapas saturā, norādot, ka mums vēl nav jāpiesakās.

Tālāk mēs meklēsim csrf_token atslēgvārds, kas tika atrasts kā viens no parametriem, iepriekš izmantojot cilni Tīkls. Ja atslēgvārds parāda atbilstību ar ievadi tagu, tad vērtību var iegūt katru reizi, kad palaižat skriptu, izmantojot BeautifulSoup.

nopieprasījumusimportētSesija
nobs4importētBeautifulSupbs

arSesija() s:
vietne =s.gūt('http://quotes.toscrape.com/login')
bs_content=bs(vietne.saturu, 'html.parser')
žetons =bs_content.atrast('ievade', {'vārds':'csrf_token'})['vērtība']
login_data= {'lietotājvārds':'administrators','parole':'12345', 'csrf_token':žetons}
s.ziņu('http://quotes.toscrape.com/login',login_data)
mājas lapa=s.gūt('http://quotes.toscrape.com')
drukāt(mājas lapa.saturu)

Tas izdrukās lapas saturu pēc pieteikšanās un, ja meklēsit atslēgvārdu Izrakstīties. Atslēgvārds būtu atrodams lapas saturā, norādot, ka mums izdevās veiksmīgi pieteikties.

Apskatīsim katru koda rindu.

nopieprasījumusimportētSesija
nobs4importētBeautifulSupbs

Iepriekš minētās koda rindiņas tiek izmantotas, lai importētu Session objektu no pieprasījumu bibliotēkas un BeautifulSoup objektu no bs4 bibliotēkas, izmantojot aizstājvārdu bs .

arSesija() s:

Pieprasījumu sesija tiek izmantota, ja plānojat saglabāt pieprasījuma kontekstu, tāpēc sīkfailus un visu informāciju par šo pieprasījuma sesiju var saglabāt.

bs_content=bs(vietne.saturu, 'html.parser')
žetons =bs_content.atrast('ievade', {'vārds':'csrf_token'})['vērtība']

Šis kods šeit izmanto BeautifulSoup bibliotēku, tāpēc csrf_token var iegūt no tīmekļa lapas un pēc tam piešķirt marķiera mainīgajam. Jūs varat uzzināt par datu iegūšanu no mezgliem, izmantojot funkciju BeautifulSoup.

login_data= {'lietotājvārds':'administrators','parole':'12345', 'csrf_token':žetons}
s.ziņu('http://quotes.toscrape.com/login',login_data)

Kods šeit izveido pieteikšanās parametru vārdnīcu. Vārdnīcu atslēgas ir vārds ievades tagu atribūti un vērtības ir vērtību ievades tagu atribūti.

The ziņu metode tiek izmantota, lai nosūtītu pasta pieprasījumu ar parametriem un pieteiktos mūs.

mājas lapa=s.gūt('http://quotes.toscrape.com')
drukāt(mājas lapa.saturu)

Pēc pieteikšanās šīs iepriekš minētās koda rindas vienkārši iegūst informāciju no lapas, lai parādītu, ka pieteikšanās bija veiksmīga.

Secinājums

Pieteikšanās vietnēs, izmantojot Python, ir diezgan vienkārša, tomēr vietņu iestatīšana nav vienāda, tāpēc dažās vietnēs ir grūtāk pieteikties nekā citās. Ir vairāk, ko var darīt, lai pārvarētu visas pieteikšanās problēmas.

Vissvarīgākais šajā visā ir zināšanas par HTML, pieprasījumiem, BeautifulSoup un spēja izprast informāciju, kas iegūta no jūsu tīmekļa pārlūkprogrammas izstrādātāju rīku cilnes Tīkls.