Вход на веб-сайты с помощью Python

Logging Into Websites With Python



Функция входа в систему - важная функция в современных веб-приложениях. Эта функция помогает скрыть специальный контент от непользователей сайта, а также используется для идентификации премиум-пользователей. Поэтому, если вы собираетесь сканировать веб-сайт, вы можете столкнуться с функцией входа в систему, если контент доступен только зарегистрированным пользователям.

Учебники по парсингу веб-страниц уже рассматривались в прошлом, поэтому в этом руководстве рассматривается только аспект получения доступа к веб-сайтам путем входа в систему с помощью кода вместо того, чтобы делать это вручную с помощью браузера.







Чтобы понять это руководство и уметь писать сценарии для входа на веб-сайты, вам потребуется некоторое понимание HTML. Может быть, этого недостаточно для создания классных веб-сайтов, но достаточно, чтобы понять структуру базовой веб-страницы.



Это будет сделано с помощью библиотек Python Requests и BeautifulSoup. Помимо этих библиотек Python, вам понадобится хороший браузер, такой как Google Chrome или Mozilla Firefox, поскольку они будут важны для первоначального анализа перед написанием кода.



Библиотеки Requests и BeautifulSoup можно установить с помощью команды pip из терминала, как показано ниже:





запросы на установку pip
pip установить BeautifulSoup4

Чтобы подтвердить успешность установки, активируйте интерактивную оболочку Python, для чего введите питон в терминал.

Затем импортируйте обе библиотеки:



ИмпортироватьЗапросы
изBS4ИмпортироватьBeautifulSoup

Импорт успешен, если ошибок нет.

Процесс

Для входа на веб-сайт с помощью скриптов требуется знание HTML и представление о том, как работает Интернет. Давайте кратко рассмотрим, как работает Интернет.

Веб-сайты состоят из двух основных частей: клиентской и серверной. Клиентская сторона - это часть веб-сайта, с которой взаимодействует пользователь, а серверная - это часть веб-сайта, где выполняется бизнес-логика и другие серверные операции, такие как доступ к базе данных.

Когда вы пытаетесь открыть веб-сайт по его ссылке, вы делаете запрос на сервер, чтобы получить файлы HTML и другие статические файлы, такие как CSS и JavaScript. Этот запрос известен как запрос GET. Однако когда вы заполняете форму, загружаете медиафайл или документ, создаете сообщение и нажимаете, скажем, кнопку отправки, вы отправляете информацию на сервер. Этот запрос известен как запрос POST.

Понимание этих двух концепций будет важно при написании нашего сценария.

Осмотр веб-сайта

Чтобы попрактиковаться в концепциях этой статьи, мы будем использовать Цитаты, которые нужно очистить Веб-сайт.

Для входа на веб-сайты требуется такая информация, как имя пользователя и пароль.

Однако, поскольку этот веб-сайт используется только в качестве доказательства концепции, все подходит. Поэтому мы будем использовать админ как имя пользователя и 12345 как пароль.

Во-первых, важно просмотреть исходный код страницы, так как это даст общее представление о структуре веб-страницы. Это можно сделать, щелкнув правой кнопкой мыши веб-страницу и выбрав «Просмотр источника страницы». Затем вы проверяете форму входа. Вы делаете это, щелкнув правой кнопкой мыши одно из полей входа и нажав проверить элемент . Осмотрев элемент, вы должны увидеть Вход теги, а затем родительский форма тег где-нибудь над ним. Это показывает, что логины в основном представляют собой формы, ПОЧТА ed на серверную часть сайта.

Теперь обратите внимание на имя атрибут входных тегов для полей имени пользователя и пароля, они понадобятся при написании кода. Для этого веб-сайта имя атрибут для имени пользователя и пароля имя пользователя а также пароль соответственно.

Затем мы должны узнать, есть ли другие параметры, которые будут важны для входа в систему. Давайте быстро это объясним. Чтобы повысить безопасность веб-сайтов, обычно создаются токены для предотвращения атак межсайтовой подделки.

Следовательно, если эти токены не добавлены в запрос POST, вход в систему завершится ошибкой. Итак, как мы узнаем о таких параметрах?

Нам нужно будет использовать вкладку «Сеть». Чтобы получить эту вкладку в Google Chrome или Mozilla Firefox, откройте Инструменты разработчика и щелкните вкладку Сеть.

Как только вы перейдете на вкладку сети, попробуйте обновить текущую страницу, и вы заметите поступающие запросы. Вам следует следить за отправкой запросов POST, когда мы пытаемся войти в систему.

Вот что мы будем делать дальше, открыв вкладку «Сеть». Введите данные для входа и попробуйте войти в систему. Первый запрос, который вы увидите, должен быть запросом POST.

Щелкните запрос POST и просмотрите параметры формы. Вы заметите, что на сайте есть csrf_token параметр со значением. Это значение является динамическим, поэтому нам нужно будет фиксировать такие значения с помощью ПОЛУЧАТЬ запрос перед использованием ПОЧТА запрос.

Для других веб-сайтов, над которыми вы будете работать, вы, вероятно, не увидите csrf_token но могут быть и другие токены, которые генерируются динамически. Со временем вы научитесь лучше понимать параметры, которые действительно имеют значение при попытке входа в систему.

Код

Во-первых, нам нужно использовать запросы и BeautifulSoup, чтобы получить доступ к содержимому страницы на странице входа.

изЗапросыИмпортироватьСессия
изBS4ИмпортироватьBeautifulSoupв качествеbs

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

Это распечатает содержимое страницы входа в систему до того, как мы войдем в систему, и если вы будете искать ключевое слово входа. Ключевое слово будет найдено в содержании страницы, показывая, что мы еще не вошли в систему.

Затем мы будем искать csrf_token ключевое слово, которое ранее было найдено как один из параметров при использовании вкладки сети. Если ключевое слово соответствует Вход , то значение можно будет извлекать каждый раз, когда вы запускаете скрипт с помощью BeautifulSoup.

изЗапросыИмпортироватьСессия
изBS4ИмпортироватьBeautifulSoupв качествеbs

с участиемСессия() в качествеs:
сайт знак равнос.получать('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)
home_pageзнак равнос.получать('http://quotes.toscrape.com')
Распечатать(домашняя_страница.содержание)

При этом будет напечатано содержимое страницы после входа в систему и при поиске ключевого слова «Выход из системы». Ключевое слово будет найдено в содержании страницы, показывая, что мы смогли успешно войти в систему.

Давайте посмотрим на каждую строчку кода.

изЗапросыИмпортироватьСессия
изBS4ИмпортироватьBeautifulSoupв качествеbs

Приведенные выше строки кода используются для импорта объекта Session из библиотеки запросов и объекта BeautifulSoup из библиотеки bs4 с использованием псевдонима bs .

с участиемСессия() в качествеs:

Сеанс запросов используется, когда вы намереваетесь сохранить контекст запроса, поэтому файлы cookie и вся информация этого сеанса запроса могут быть сохранены.

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)

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

В Почта используется для отправки почтового запроса с параметрами и авторизации.

home_pageзнак равнос.получать('http://quotes.toscrape.com')
Распечатать(домашняя_страница.содержание)

После входа в систему эти строки кода выше просто извлекают информацию со страницы, чтобы показать, что вход был успешным.

Заключение

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

Самым важным во всем этом является знание HTML, запросов, BeautifulSoup и способность понимать информацию, полученную на вкладке «Сеть» в инструментах разработчика вашего веб-браузера.