Python

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

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

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

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

Инсталация

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

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

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

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

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

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

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

Процеса

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

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

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

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

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

За да практикуваме концепциите на тази статия, бихме използвали уебсайта Quotes To Scrape.

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

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

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

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

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

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

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

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

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

 

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

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

Кодът

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

от сесии за импортиране на заявки
от bs4 импортирайте BeautifulSoup като bs
 
със Session () като s:
сайт = s.get ("http: // кавички.toscrape.com / login ")
печат (сайт.съдържание)

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

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

от сесии за импортиране на заявки
от bs4 импортирайте BeautifulSoup като bs
 
със Session () като s:
сайт = s.get ("http: // кавички.toscrape.com / login ")
bs_content = bs (site.съдържание, "html.парсер ")
жетон = bs_content.find ("input", "name": "csrf_token") ["стойност"]
login_data = "username": "admin", "password": "12345", "csrf_token": token
с.пост ("http: // quotes.toscrape.com / login ", login_data)
начална_страница = s.get ("http: // кавички.toscrape.com ")
печат (начална_страница.съдържание)

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

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

от сесии за импортиране на заявки
от bs4 импортирайте BeautifulSoup като bs

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

със Session () като s:

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

bs_content = bs (site.съдържание, "html.парсер ")
жетон = bs_content.find ("input", "name": "csrf_token") ["стойност"]

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

login_data = "username": "admin", "password": "12345", "csrf_token": token
с.пост ("http: // quotes.toscrape.com / login ", login_data)

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

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

начална_страница = s.get ("http: // кавички.toscrape.com ")
печат (начална_страница.съдържание)

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

Заключение

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

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

Добавете жестове на мишката към Windows 10, като използвате тези безплатни инструменти
През последните години компютрите и операционните системи значително се развиха. Имаше време, когато потребителите трябваше да използват команди за на...
Контролирайте и управлявайте движението на мишката между множество монитори в Windows 10
Двоен дисплей на мишката ви позволява да контролирате и конфигурирате движението на мишката между множество монитори, като забавя движенията му близо ...
WinMouse ви позволява да персонализирате и подобрите движението на показалеца на мишката на компютър с Windows
Ако искате да подобрите функциите по подразбиране на показалеца на мишката, използвайте безплатна програма WinMouse. Той добавя още функции, за да ви ...