Влизане в уебсайтове с Python

Logging Into Websites With Python



Функцията за вход е важна функционалност в днешните уеб приложения. Тази функция помага да се запази специално съдържание от непотребители на сайта и също така се използва за идентифициране на премиум потребители. Следователно, ако възнамерявате уеб изстъргване на уебсайт, можете да попаднете на функцията за вход, ако съдържанието е достъпно само за регистрирани потребители.

Уроците за изстъргване на уеб са били обхванати в миналото, затова този урок обхваща само аспекта на получаване на достъп до уебсайтове чрез влизане с код, вместо да го правите ръчно с помощта на браузъра.







За да разберете този урок и да можете да пишете скриптове за влизане в уебсайтове, ще ви трябва известно разбиране за HTML. Може би не е достатъчно за създаването на страхотни уебсайтове, но достатъчно, за да се разбере структурата на основна уеб страница.



Това би било направено с библиотеките Requests и BeautifulSoup Python. Освен тези библиотеки на Python, ще ви е необходим добър браузър като Google Chrome или Mozilla Firefox, тъй като те биха били важни за първоначалния анализ преди писането на код.



Библиотеките Requests и BeautifulSoup могат да бъдат инсталирани с командата pip от терминала, както е показано по -долу:





заявки за инсталиране на pip
pip install BeautifulSoup4

За да потвърдите успеха на инсталацията, активирайте интерактивната обвивка на Python, което става чрез въвеждане python в терминала.

След това импортирайте и двете библиотеки:



вносзаявки
отbs4вносBeautifulSoup

Импортирането е успешно, ако няма грешки.

Процеса

Влизането в уебсайт със скриптове изисква познаване на HTML и представа за това как работи мрежата. Нека разгледаме накратко как работи мрежата.

Уебсайтовете се състоят от две основни части, от страна на клиента и от страна на сървъра. Клиентската страна е частта от уебсайт, с която потребителят взаимодейства, докато сървърната част е частта от уебсайта, където се изпълняват бизнес логика и други сървърни операции, като например достъп до базата данни.

Когато се опитвате да отворите уебсайт чрез неговата връзка, отправяте заявка до страна на сървъра да ви извлече HTML файловете и други статични файлове като CSS и JavaScript. Това искане е известно като GET заявка. Въпреки това, когато попълвате формуляр, качвате мултимедиен файл или документ, създавате публикация и щраквате, да речем, бутон за изпращане, изпращате информация до страната на сървъра. Тази заявка е известна като POST заявка.

Разбирането на тези две концепции би било важно при писането на нашия сценарий.

Проверка на уебсайта

За да практикуваме концепциите на тази статия, ще използваме Цитати за изстъргване уебсайт.

Влизането в уебсайтове изисква информация като потребителско име и парола.

Въпреки това, тъй като този уебсайт се използва само като доказателство за концепция, всичко върви. Затова ще използваме администратор като потребителско име и 12345 като парола.

Първо, важно е да видите източника на страницата, тъй като това ще даде преглед на структурата на уеб страницата. Това може да стане, като щракнете с десния бутон върху уеб страницата и щракнете върху Преглед на източника на страница. След това проверявате формуляра за вход. Можете да направите това, като щракнете с десния бутон върху едно от полетата за вход и щракнете върху инспектирай елемента . Когато проверявате елемент, трябва да видите вход тагове и след това родител форма маркирайте някъде над него. Това показва, че влизанията са по същество форми POST редактирано от страна на сървъра на уебсайта.

Сега, обърнете внимание на име атрибут на входните тагове за полетата за потребителско име и парола, те ще са необходими при писане на кода. За този уебсайт, име атрибут за потребителското име и паролата са потребителско име и парола съответно.

След това трябва да знаем дали има други параметри, които биха били важни за влизане. Нека обясним това бързо. За да се повиши сигурността на уебсайтовете, обикновено се генерират жетони за предотвратяване на атаки за фалшифициране между сайтове.

Следователно, ако тези символи не са добавени към POST заявката, влизането ще се провали. И така, как да знаем за такива параметри?

Ще трябва да използваме раздела Мрежа. За да получите този раздел в Google Chrome или Mozilla Firefox, отворете Инструменти за програмисти и щракнете върху раздела Мрежа.

След като сте в раздела мрежа, опитайте да опресните текущата страница и ще забележите, че идват заявки. Трябва да се опитате да внимавате за изпращането на POST заявки, когато се опитаме да влезем.

Ето какво бихме направили по -нататък, докато отворите раздела Мрежа. Поставете данните за вход и опитайте да влезете, първата заявка, която ще видите, трябва да бъде POST заявката.

Щракнете върху POST заявката и прегледайте параметрите на формуляра. Ще забележите, че уебсайтът има csrf_token параметър със стойност. Тази стойност е динамична стойност, затова ще трябва да уловим такива стойности, използвайки ПОЛУЧАВАЙТЕ поискайте първо, преди да използвате POST заявка.

За други уебсайтове, върху които бихте работили, вероятно няма да видите csrf_token но може да има и други жетони, които се генерират динамично. С течение на времето ще станете все по -добри в познаването на параметрите, които наистина имат значение при опита за влизане.

Кодът

Първо, трябва да използваме Requests и BeautifulSoup, за да получим достъп до съдържанието на страницата на страницата за вход.

отзаявкивносСесия
отbs4вносBeautifulSoupкатоbs

сСесия() катос:
сайт =с.вземете('http://quotes.toscrape.com/login')
печат(сайт.съдържание)

Това ще отпечата съдържанието на страницата за вход, преди да влезем и ако търсите ключовата дума Login. Ключовата дума ще бъде намерена в съдържанието на страницата, показваща, че тепърва ще влизаме.

След това бихме потърсили csrf_token ключова дума, която беше намерена като един от параметрите при използване на раздела мрежа по -рано. Ако ключовата дума показва съвпадение с вход tag, тогава стойността може да бъде извлечена всеки път, когато стартирате скрипта с помощта на BeautifulSoup.

отзаявкивносСесия
отbs4вносBeautifulSoupкатоbs

сСесия() катос:
сайт =с.вземете('http://quotes.toscrape.com/login')
bs_content=bs(сайт.съдържание, 'html.parser')
жетон =bs_content.намирам('вход', {'име':'csrf_token'})['стойност']
login_data= {„потребителско име“:'администратор','парола':'12345', 'csrf_token':жетон}
с.пост('http://quotes.toscrape.com/login',login_data)
начална_страница=с.вземете('http://quotes.toscrape.com')
печат(начална_страница.съдържание)

Това ще отпечата съдържанието на страницата след влизане и ако търсите ключовата дума Logout. Ключовата дума ще бъде намерена в съдържанието на страницата, показваща, че сме успели да влезем.

Нека да разгледаме всеки ред код.

отзаявкивносСесия
отbs4вносBeautifulSoupкатоbs

Редовете от код по -горе се използват за импортиране на обекта Session от библиотеката на заявките и обекта BeautifulSoup от библиотеката bs4, използвайки псевдоним на bs .

сСесия() катос:

Заявка сесия се използва, когато възнамерявате да запазите контекста на дадена заявка, така че бисквитките и цялата информация от тази сесия на заявката могат да се съхраняват.

bs_content=bs(сайт.съдържание, 'html.parser')
жетон =bs_content.намирам('вход', {'име':'csrf_token'})['стойност']

Този код тук използва библиотеката BeautifulSoup, така че csrf_token могат да бъдат извлечени от уеб страницата и след това присвоени на променливата на символа. Можете да научите за извличането на данни от възли с помощта на BeautifulSoup.

login_data= {„потребителско име“:'администратор','парола':'12345', 'csrf_token':жетон}
с.пост('http://quotes.toscrape.com/login',login_data)

Кодът тук създава речник на параметрите, които да се използват за влизане. Ключовете на речниците са име атрибутите на входните тагове и стойностите са стойност атрибути на входните тагове.

The пост метод се използва за изпращане на заявка за публикуване с параметрите и влизане в системата ни.

начална_страница=с.вземете('http://quotes.toscrape.com')
печат(начална_страница.съдържание)

След влизане тези редове от код по -горе просто извличат информацията от страницата, за да покажат, че влизането е успешно.

Заключение

Процесът на влизане в уебсайтове с помощта на Python е доста лесен, но настройката на уебсайтовете не е същата, поради което някои сайтове ще се окажат по -трудни за влизане от други. Има още неща, които могат да бъдат направени, за да се преодолеят всички предизвикателства при влизане.

Най -важното във всичко това е познаването на HTML, заявки, BeautifulSoup и способността да се разбере информацията, получена от раздела Мрежа на инструментите за разработчици на вашия уеб браузър.