Python

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

Вход на веб-сайты с помощью 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.

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

Код

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

из запросов import Session
из bs4 импортировать BeautifulSoup как bs
 
с Session () как s:
site = s.get ("http: // цитаты.соскоблить.com / login ")
печать (сайт.содержание)

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

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

из запросов import Session
из bs4 импортировать BeautifulSoup как bs
 
с Session () как s:
site = s.get ("http: // цитаты.соскоблить.com / login ")
bs_content = bs (сайт.контент, HTML.парсер ")
токен = bs_content.find ("ввод", "имя": "csrf_token") ["значение"]
login_data = "имя пользователя": "админ", "пароль": "12345", "csrf_token": токен
s.post ("http: // цитаты.соскоблить.ru / login ", login_data)
home_page = s.get ("http: // цитаты.соскоблить.com ")
печать (домашняя_страница.содержание)

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

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

из запросов import Session
из bs4 импортировать BeautifulSoup как bs

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

с Session () как s:

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

bs_content = bs (сайт.контент, HTML.парсер ")
токен = bs_content.find ("ввод", "имя": "csrf_token") ["значение"]

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

login_data = "имя пользователя": "админ", "пароль": "12345", "csrf_token": токен
s.post ("http: // цитаты.соскоблить.ru / login ", login_data)

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

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

home_page = s.get ("http: // цитаты.соскоблить.com ")
печать (домашняя_страница.содержание)

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

Заключение

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

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

Как записать и транслировать игровую сессию в Linux
В прошлом игры считались только хобби, но со временем игровая индустрия увидела огромный рост с точки зрения технологий и количества игроков. Игровая ...
Лучшие игры с отслеживанием рук
Oculus Quest недавно представил отличную идею отслеживания рук без контроллеров. С постоянно растущим числом игр и действий, которые осуществляются фо...
Как показать наложение OSD в полноэкранных приложениях и играх Linux
Игра в полноэкранные игры или использование приложений в полноэкранном режиме без отвлекающих факторов может отрезать вас от соответствующей системной...