Пријављивање на веб странице помоћу Питхона

Logging Into Websites With Python



Функција пријављивања је важна функција у данашњим веб апликацијама. Ова функција помаже у спречавању посебног садржаја од корисника који нису корисници веб локације, а такође се користи и за идентификацију врхунских корисника. Због тога, ако намеравате да обришете веб локацију, могли бисте наићи на функцију пријављивања ако је садржај доступан само регистрованим корисницима.

Водичи за стругање веба су већ обрађивани, па овај водич покрива само аспект приступа веб локацијама пријављивањем помоћу кода уместо ручног коришћења помоћу прегледача.







Да бисте разумели овај водич и могли да пишете скрипте за пријављивање на веб локације, потребно вам је разумевање ХТМЛ -а. Можда није довољно за израду сјајних веб страница, али довољно да се разуме структура основне веб странице.



То би се учинило помоћу библиотека Рекуестс и БеаутифулСоуп Питхон. Осим Питхон библиотека, потребан вам је и добар прегледач као што су Гоогле Цхроме или Мозилла Фирефок јер би били важни за почетну анализу пре писања кода.



Библиотеке Рекуестс анд БеаутифулСоуп могу се инсталирати помоћу команде пип са терминала као што је приказано испод:





захтеви за инсталирање пипа
пип инсталл БеаутифулСоуп4

Да бисте потврдили успех инсталације, активирајте Питхон -ову интерактивну љуску која се врши куцањем питхон у терминал.

Затим увезите обе библиотеке:



увоззахтева
фромбс4увозБеаутифулСоуп

Увоз је успешан ако нема грешака.

Процес

Пријављивање на веб локацију са скриптама захтева познавање ХТМЛ -а и идеју о томе како веб функционише. Погледајмо укратко како веб функционише.

Веб странице се састоје од два главна дела, на страни клијента и на серверу. На страни клијента је део веб локације са којим корисник ступа у интеракцију, док је на страни сервера део веб локације на коме се извршавају пословна логика и друге серверске операције, попут приступа бази података.

Када покушате да отворите веб локацију преко њене везе, упућујете захтев страни сервера да вам донесе ХТМЛ датотеке и друге статичке датотеке као што су ЦСС и ЈаваСцрипт. Овај захтев је познат као ГЕТ захтев. Међутим, када испуњавате образац, отпремате медијску датотеку или документ, креирате пост и кликнете, рецимо, дугме за слање, шаљете информације на страну сервера. Овај захтев је познат као ПОСТ захтев.

Разумевање ова два концепта било би важно при писању нашег сценарија.

Прегледајте веб локацију

Да бисмо увежбали концепте овог чланка, користили бисмо Цитати за стругање веб сајт.

За пријављивање на веб локације потребне су информације као што су корисничко име и лозинка.

Међутим, пошто се ова веб страница користи само као доказ концепта, све иде како треба. Због тога бисмо користили админ као корисничко име и 12345 као лозинку.

Прво, важно је погледати извор странице јер би то дало преглед структуре веб странице. То можете учинити тако што ћете десним тастером миша кликнути на веб страницу и кликнути на Прикажи извор странице. Затим прегледате образац за пријаву. То можете учинити тако што ћете десним тастером миша кликнути на једно од поља за пријављивање и кликнути прегледати елемент . Када прегледате елемент, требали бисте видети улазни ознаке, а затим и родитељ образац означите негде изнад њега. Ово показује да су пријаве у основи облици бића ПОШТА ед на страни сервера веб локације.

Запазите сада име атрибут улазних ознака за поља за корисничко име и лозинку, они би били потребни при писању кода. За ову веб страницу, име атрибут за корисничко име и лозинка су корисничко име и Лозинка редом.

Затим морамо знати да ли постоје други параметри који би били важни за пријаву. Објаснимо ово брзо. Да би се повећала безбедност веб локација, токени се обично генеришу како би се спречили напади кривотворења на различитим локацијама.

Стога, ако се ти токени не додају у ПОСТ захтев, пријава неће успети. Па како знамо за такве параметре?

Морали бисмо да користимо картицу Мрежа. Да бисте ову картицу поставили на Гоогле Цхроме или Мозилла Фирефок, отворите алатке за програмере и кликните на картицу Мрежа.

Када сте на картици „мрежа“, покушајте да освежите тренутну страницу и приметили бисте да стижу захтеви. Покушајте да пазите да ли се ПОСТ захтеви шаљу када се покушамо пријавити.

Ево шта бисмо следеће урадили, а да отворимо картицу Мрежа. Унесите детаље за пријаву и покушајте да се пријавите, први захтев који бисте видели требао би бити ПОСТ захтев.

Кликните на ПОСТ захтев и погледајте параметре обрасца. Приметили бисте да веб локација има цсрф_токен параметар са вредношћу. Та вредност је динамичка вредност, па бисмо морали да забележимо такве вредности помоћу ДОБИТИ затражите прво пре коришћења ПОШТА захтев.

За друге веб локације на којима бисте радили, вероватно нећете видети цсрф_токен али могу постојати и други жетони који се динамички генеришу. Временом ћете постати бољи у познавању параметара који су заиста важни при покушају пријављивања.

Код

Прво, морамо да користимо Захтеве и БеаутифулСоуп да бисмо добили приступ садржају странице на страници за пријављивање.

фромзахтеваувозСедница
фромбс4увозБеаутифулСоупкаобс

саСедница() каос:
сите =с.добити('хттп://куотес.тосцрапе.цом/логин')
принт(сите.садржај)

Ово би одштампало садржај странице за пријављивање пре него што се пријавимо и ако тражите кључну реч Пријава. Кључна реч би се нашла у садржају странице која показује да се тек требамо пријавити.

Затим бисмо тражили цсрф_токен кључна реч која је пронађена као један од параметара приликом раније употребе картице мрежа. Ако кључна реч показује подударање са улазни таг, тада се вредност може извући сваки пут када покренете скрипту помоћу БеаутифулСоуп -а.

фромзахтеваувозСедница
фромбс4увозБеаутифулСоупкаобс

саСедница() каос:
сите =с.добити('хттп://куотес.тосцрапе.цом/логин')
бс_цонтент=бс(сите.садржај, 'хтмл.парсер')
токен =бс_цонтент.пронаћи('улазни', {'име':'цсрф_токен'})['вредност']
логин_дата= {'корисничко име':'админ','Лозинка':'12345', 'цсрф_токен':токен}
с.пошта('хттп://куотес.тосцрапе.цом/логин',логин_дата)
Почетна страница=с.добити('хттп://куотес.тосцрапе.цом')
принт(Почетна страница.садржај)

Ово ће одштампати садржај странице након пријављивања и ако тражите кључну реч Одјава. Кључна реч би се нашла у садржају странице која показује да смо се успешно пријавили.

Погледајмо сваки ред кода.

фромзахтеваувозСедница
фромбс4увозБеаутифулСоупкаобс

Горе наведене линије кода користе се за увоз објекта Сессион из библиотеке захтева и објекта БеаутифулСоуп из библиотеке бс4 користећи псеудоним бс .

саСедница() каос:

Сесија захтева се користи када намеравате да задржите контекст захтева, тако да се колачићи и све информације о тој сесији захтева могу сачувати.

бс_цонтент=бс(сите.садржај, 'хтмл.парсер')
токен =бс_цонтент.пронаћи('улазни', {'име':'цсрф_токен'})['вредност']

Овај код овде користи библиотеку БеаутифулСоуп тако да цсрф_токен могу се извући са веб странице и затим доделити променљивој токена. Можете сазнати о извлачењу података из чворова користећи БеаутифулСоуп.

логин_дата= {'корисничко име':'админ','Лозинка':'12345', 'цсрф_токен':токен}
с.пошта('хттп://куотес.тосцрапе.цом/логин',логин_дата)

Овде код ствара речник параметара који ће се користити за пријављивање. Кључеви речника су име атрибути улазних ознака и вредности су вредност атрибуте улазних ознака.

Тхе пошта метода се користи за слање захтева за поштом са параметрима и пријављивање на нас.

Почетна страница=с.добити('хттп://куотес.тосцрапе.цом')
принт(Почетна страница.садржај)

Након пријаве, ове горње линије кода једноставно издвајају информације са странице како би показале да је пријава успела.

Закључак

Процес пријављивања на веб локације помоћу Питхон -а је прилично једноставан, међутим подешавање веб локација није исто, па би се неке локације показале теже пријављивати од других. Постоји још много тога што се може учинити да бисте превазишли све изазове при пријављивању.

Најважнија ствар у свему овоме је познавање ХТМЛ -а, захтева, БеаутифулСоуп -а и способност разумевања информација добијених са картице Мрежа алата за развој вашег веб прегледача.