Pag-log In sa Mga Website Sa Python

Logging Into Websites With Python



Ang tampok sa pag-login ay isang mahalagang pagpapaandar sa mga web application ngayon. Tinutulungan ng tampok na ito na mapanatili ang mga espesyal na nilalaman mula sa mga hindi gumagamit ng site at ginagamit din upang makilala ang mga premium na gumagamit din. Samakatuwid kung balak mong mag-scrap ng web ng isang website, maaari mong makita ang tampok na pag-login kung ang nilalaman ay magagamit lamang sa mga rehistradong gumagamit.

Ang mga tutorial sa pag-scrap ng web ay sakop sa nakaraan, samakatuwid ang tutorial na ito ay sumasaklaw lamang sa aspeto ng pagkakaroon ng pag-access sa mga website sa pamamagitan ng pag-log in gamit ang code sa halip na gawin ito nang manu-mano sa pamamagitan ng paggamit ng browser.







Upang maunawaan ang tutorial na ito at makapagsulat ng mga script para sa pag-log in sa mga website, kakailanganin mo ng kaunting pag-unawa sa HTML. Marahil ay hindi sapat upang makabuo ng mga kahanga-hangang website, ngunit sapat upang maunawaan ang istraktura ng isang pangunahing web page.



Gagawin ito sa mga library ng Mga Kahilingan at BeautifulSoup Python. Bukod sa mga library ng Python, kakailanganin mo ng isang mahusay na browser tulad ng Google Chrome o Mozilla Firefox dahil magiging mahalaga sila para sa paunang pagtatasa bago magsulat ng code.



Ang mga Kahilingan at mga aklatan ng BeautifulSoup ay maaaring mai-install gamit ang pip command mula sa terminal tulad ng nakikita sa ibaba:





pip mga kahilingan sa pag-install
pip install ng BeautifulSoup4

Upang kumpirmahin ang tagumpay ng pag-install, buhayin ang interactive shell ng Python na ginagawa sa pamamagitan ng pagta-type sawa papasok sa terminal.

Pagkatapos ay i-import ang parehong mga aklatan:



angkatmga hiling
mula sabs4angkatBeautifulSoup

Matagumpay ang pag-import kung walang mga error.

Ang proseso

Ang pag-log in sa isang website na may mga script ay nangangailangan ng kaalaman sa HTML at isang ideya kung paano gumagana ang web. Tingnan natin sandali kung paano gumagana ang web.

Ang mga website ay gawa sa dalawang pangunahing bahagi, sa panig ng client at sa panig ng server. Ang panig ng kliyente ay bahagi ng isang website na nakikipag-ugnay ang gumagamit, habang ang panig ng server ay bahagi ng website kung saan ang lohika ng negosyo at iba pang mga pagpapatakbo ng server tulad ng pag-access sa database ay naisagawa.

Kapag sinubukan mong buksan ang isang website sa pamamagitan ng link nito, humihiling ka sa server-side na kunin ka ng mga HTML file at iba pang mga static na file tulad ng CSS at JavaScript. Ang kahilingang ito ay kilala bilang kahilingan sa GET. Gayunpaman kapag pinupuno mo ang isang form, nag-a-upload ng isang file ng media o isang dokumento, lumilikha ng isang post at pag-click sa sabihin nating isang magsumite na pindutan, nagpapadala ka ng impormasyon sa panig ng server. Ang kahilingang ito ay kilala bilang kahilingan sa POST.

Ang pag-unawa sa dalawang konsepto na iyon ay magiging mahalaga sa pagsulat ng aming iskrip.

Sinisiyasat ang website

Upang sanayin ang mga konsepto ng artikulong ito, gagamitin namin ang Mga Quote To Scrape website.

Ang pag-log in sa mga website ay nangangailangan ng impormasyon tulad ng username at isang password.

Gayunpaman dahil ang website na ito ay ginagamit lamang bilang isang patunay ng konsepto, anupaman ay pupunta. Samakatuwid gagamitin namin admin bilang username at 12345 bilang password

Una, mahalaga na tingnan ang mapagkukunan ng pahina dahil magbibigay ito ng isang pangkalahatang ideya ng istraktura ng web page. Magagawa ito sa pamamagitan ng pag-right click sa web page at pag-click sa Tingnan ang mapagkukunan ng pahina. Susunod, siyasatin mo ang form sa pag-login. Ginagawa mo ito sa pamamagitan ng pag-right click sa isa sa mga kahon sa pag-login at pag-click siyasatin ang elemento . Sa elemento ng pagsisiyasat, dapat mong makita input mga tag at pagkatapos ay isang magulang form tag saanman sa itaas nito. Ipinapakita nito na ang mga pag-login ay karaniwang form form POST sa server-side ng website.

Ngayon, tandaan ang pangalan katangian ng mga input tag para sa mga kahon ng username at password, kakailanganin sila kapag nagsusulat ng code. Para sa website na ito, ang pangalan katangian para sa username at password ay username at password ayon sa pagkakabanggit.

Susunod, kailangan nating malaman kung may iba pang mga parameter na magiging mahalaga para sa pag-login. Mabilis nating ipaliwanag ito. Upang madagdagan ang seguridad ng mga website, ang mga token ay karaniwang nabubuo upang maiwasan ang mga pag-atake ng Cross Site Forgery.

Samakatuwid, kung ang mga token na iyon ay hindi naidagdag sa kahilingan sa POST pagkatapos ay mabibigo ang pag-login. Kaya paano natin malalaman ang tungkol sa mga naturang parameter?

Kakailanganin naming gamitin ang tab na Network. Upang makuha ang tab na ito sa Google Chrome o Mozilla Firefox, buksan ang Mga Tool ng Developer at mag-click sa tab na Network.

Sa sandaling nasa tab ka na ng network, subukang i-refresh ang kasalukuyang pahina at mapapansin mong papasok ang mga kahilingan. Dapat mong subukang bantayan ang pagpapadala ng mga kahilingan sa POST kapag sinubukan naming mag-log in.

Narito kung ano ang susunod naming gagawin, habang binubuksan ang tab na Network. Ilagay ang mga detalye sa pag-login at subukang mag-log in, ang unang kahilingan na makikita mo ay dapat ang kahilingan sa POST.

Mag-click sa kahilingan sa POST at tingnan ang mga parameter ng form. Mapapansin mo ang website ay mayroong csrf_token parameter na may halaga. Ang halagang iyon ay isang pabago-bagong halaga, samakatuwid kakailanganin naming makuha ang mga nasabing halaga gamit ang GET hiling muna bago gamitin ang POST hiling.

Para sa iba pang mga website na iyong pinagtatrabahuhan, maaaring hindi mo makita ang csrf_token ngunit maaaring may iba pang mga token na pabagu-bago nabuo. Sa paglipas ng panahon, makakakuha ka ng mas mahusay sa pag-alam ng mga parameter na tunay na mahalaga sa paggawa ng isang pagtatangka sa pag-login.

Ang Code

Una, kailangan naming gumamit ng Mga Kahilingan at BeautifulSoup upang makakuha ng access sa nilalaman ng pahina ng pahina sa pag-login.

mula samga hilingangkatSession
mula sabs4angkatBeautifulSoupbilangbs

kasama siSession() bilangs:
lugar =s.kumuha ka('http://quotes.toscrape.com/login')
mag-print(lugar.nilalaman)

Ipo-print nito ang nilalaman ng pahina ng pag-login bago kami mag-log in at kung maghanap ka para sa keyword sa Pag-login. Matatagpuan ang keyword sa nilalaman ng pahina na ipinapakita na hindi pa kami mag-log in.

Susunod, hahanapin namin ang csrf_token keyword na kung saan ay natagpuan bilang isa sa mga parameter kapag ginagamit ang tab ng network nang mas maaga. Kung ang keyword ay nagpapakita ng isang tugma sa isang input ang tag, pagkatapos ay maaaring makuha ang halaga sa tuwing tatakbo ang script gamit ang BeautifulSoup.

mula samga hilingangkatSession
mula sabs4angkatBeautifulSoupbilangbs

kasama siSession() bilangs:
lugar =s.kumuha ka('http://quotes.toscrape.com/login')
bs_content=bs(lugar.nilalaman, 'html.parser')
token =bs_content.hanapin('input', {'pangalan':'csrf_token'})['halaga']
login_data= {'username':'admin','password':'12345', 'csrf_token':token}
s.post('http://quotes.toscrape.com/login',login_data)
home_page=s.kumuha ka('http://quotes.toscrape.com')
mag-print(home_page.nilalaman)

Ipi-print nito ang nilalaman ng pahina pagkatapos mag-log in, at kung hahanapin mo ang keyword na Mag-logout. Ang keyword ay matatagpuan sa nilalaman ng pahina na nagpapakita na nagawa naming matagumpay na mag-log in.

Tingnan natin ang bawat linya ng code.

mula samga hilingangkatSession
mula sabs4angkatBeautifulSoupbilangbs

Ginagamit ang mga linya ng code sa itaas upang mai-import ang bagay ng Session mula sa library ng mga kahilingan at sa bagay na BeautifulSoup mula sa bs4 library gamit ang isang alias ng bs .

kasama siSession() bilangs:

Ginagamit ang sesyon ng mga kahilingan kapag balak mong panatilihin ang konteksto ng isang kahilingan, upang ang cookies at lahat ng impormasyon ng session ng paghiling na iyon ay maaaring maiimbak.

bs_content=bs(lugar.nilalaman, 'html.parser')
token =bs_content.hanapin('input', {'pangalan':'csrf_token'})['halaga']

Ang code na ito dito ay gumagamit ng library ng BeautifulSoup kaya ang csrf_token maaaring makuha mula sa web page at pagkatapos ay italaga sa variable ng token. Maaari mong malaman ang tungkol sa pagkuha ng data mula sa mga node gamit ang BeautifulSoup.

login_data= {'username':'admin','password':'12345', 'csrf_token':token}
s.post('http://quotes.toscrape.com/login',login_data)

Lumilikha ang code dito ng isang diksyunaryo ng mga parameter na gagamitin para sa pag-log in. Ang mga susi ng mga dictionary ay ang pangalan mga katangian ng mga input tag at ang mga halaga ay ang halaga mga katangian ng mga input tag.

Ang post ginagamit ang pamamaraan upang magpadala ng isang kahilingan sa post na may mga parameter at mag-log in sa amin.

home_page=s.kumuha ka('http://quotes.toscrape.com')
mag-print(home_page.nilalaman)

Pagkatapos ng isang pag-login, ang mga linya ng code na ito sa itaas ay kinuha lamang ang impormasyon mula sa pahina upang maipakita na matagumpay ang pag-login.

Konklusyon

Ang proseso ng pag-log in sa mga website gamit ang Python ay medyo madali, subalit ang pag-set up ng mga website ay hindi pareho samakatuwid ang ilang mga site ay patunayan na mas mahirap mag-log in kaysa sa iba. Marami pang magagawa upang mapagtagumpayan ang anumang mga hamon sa pag-login na mayroon ka.

Ang pinakamahalagang bagay sa lahat ng ito ay ang kaalaman sa HTML, Mga Kahilingan, BeautifulSoup at ang kakayahang maunawaan ang impormasyong nakuha mula sa tab na Network ng mga tool ng Developer ng iyong web browser.