Иногда мы сталкиваемся с тем, что нужно получать данные с сайтов, которые доступны после авторизации. Поэтому в статье рассмотрим 3 основных варианта авторизации на сайте с использованием разного функционала A-Parser. В качестве примера используем ссылку на страницу профиля поддержки на нашем сайте: https://a-parser.com/users/12/, где данные видны только авторизованным пользователям.
1. Авторизация с помощью HTTP-запроса
Для начала в обычном браузере откроем Инструменты разработчика -> вкладка Network и переходим по нашей ссылке. Нажимаем кнопку Вход и заполняем данные в форме:
Далее нажатием кнопки Вход отправляем форму и в Инструментах разработчика смотрим на запросы, которые выполняются. Нужно проверить все запросы, которые уходят после нажатия кнопки логина и выбрать тот, в котором вернулась нужная страница или редирект на нее.
В данном случае нас интересует запрос по адресут.к. по нему в ответ вернулся редирект на нужную нам страницу профиля:Код:https://a-parser.com/login/login
Видим что это POST запрос, соответственно должно быть тело запроса. Если спуститься вниз, то можно увидеть вкладку Данные форм, в ней содержится тело POST запроса:
Видим, что в теле запроса, в параметре redirect содержится url, на который в случае успешной авторизации будет перенаправлен пользователь. Соответственно нам нужно туда подставлять интересующий нас url.
В А-Парсере мы будем использовать Net::HTTP. В Query указываем найденный url запроса, выбираем метод запроса POST, а в POST body копируем строку тела запроса, но заменяем значение в redirect на $query.orig. Так же меняем cookie_check=1 на cookie_check=0, для игнорирования проверки кук. Пробуем запустить задание, указав в качестве запроса интересующий нас url:
Видим, что страница открылась, далее уже можно собирать с полученного исходника страницы нужные данные.
eJx9VFtv2jAU/i8WQptEoUzaSyQeKBraJkYYpE8IVW58EjycnNR2KCjiv/c4CUno
1r1EOffvOxcXzHJzMCsNBqxh3rZgWfnPPPbtxJNMwd00t/s1vORgLBuwjGsD2rlu
2RKs530PghXpBUQ8V+RRMHvOgOLxCFpLAWSUguRnFGf6P3KVO7PCWKaTvoZYGgt6
ct/PuDGvqMWkHyIeJDyFewgPZHg6RQEeoPQWUkNoJz3Co89D1DJml49rJmD3KDpV
V/4m+F9AmTZCnXDbidpbmxlvNOJ3Ff1hiMmoJFB92WW3GzBqHHXAzKtoj/Wy8bDu
ZmPc8CMESMZIKmjVc5KWPHG1eoJbcNZhBePT56E9uQxcCGklplxVFdwM2qqPqXwp
saZIvo6GBDPXmJDKQpmg5HZFt2VVCxmlyMvY31UM8yKuDAyYIahzTkDEe4ukeXGL
2s8cHtIXDNOpUgs4gmrdyvwPuVSCFmYaUdCPOvDfLv5fOS4NvW4pGtmrJgxNllJ6
8H+1UQIXGBNz8Uy8lUykJdnMME/dYO5JeQDImp4tXc8S1NCUqTPX1ek+MkjdfrQj
m2at6obGzVhulSGmkYz9eueunnka0BH66QzdvTleaa4UjcXAul2PqanH4IQW4Pvg
WVnCUb8eJLOIyvzcVFAzLWn9vjqACXWyW7VOGXKlHteLroW1K/XRNeTuVRiNv4yY
y2AhRtot4nfZNW9G88oUnZfDKy40rz9mVfk4cs6DdNQlQ8Ng3vjyBvMpoZY=
Плюсы:
Минусы:
- Простота
- Экономит ресурсы
- Авторизация при каждом запросе, что может негативно повлиять на аккаунт
2. Авторизация с помощью подстановки cookie
По аналогии с первым вариантом, в браузере нам нужно открыть Инструменты разработчика и авторизоваться на сайте. Далее необходимо найти Заголовки запросов.
Смотрим какие куки используются при открытии этой страницы и копируем их все в поле Cookies в парсере (также используем Net::HTTP). При необходимости также берем остальные заголовки и копируем в Additional headers. В поле запроса указываем наш url и запускаем. Убеждаемся что в ответ пришла страница с нужным контентом. Если все работает, то на этом можно и закончить, но для упрощения обслуживания пресета в будущем, лучше сократить количество кук и заголовков до минимально необходимых. Для этого пробуем убирать куки по одной и запуская каждый раз пресет, смотреть что приходит в ответ. Тем самым, методом исключения оставляем только необходимые. То же самое можно проделать и с заголовками.
В данном случае нам достаточно только куки xf_session. Запустим задание. Открыв окно дебага, можно увидеть, что данные получены:
eJx9VFtP2zAU/iuVxcPGkoaCCiUITaVatU2MMihPFE2uc5J6OLaxndKq6n/fcZo2
Kdt4is/tO7cvZ0Uctc/21oAFZ0n8uCK6fJOYfFnQXAsI+4WbDZR65kACoqmxYLzn
I7kBF8dfx+Nb1CeQ0kI4EqyIW2rAcDUHY3jig3iC8gxo4iMDMqei8B4UgZXhbhm3
aLgBbjOVT6Q2NMtp3JIqZJTNYCLLT8iUdEaJpqHQmUHckEsLrDAQGngpwDobtzoT
SRkD7eKWg4WLZi4XAdVacEYdVzJaeM2nxVttLi5eLo/a5wHPaQYRnfO0er7CVG+1
WmbBYXRYuvb2ACzPJCQhLNiMygwu5pfTkw3ixBcZZpqVxfl3Co7NQssdxC1Lcwhx
HhmXTWOuEjRKLCOjDpqWAgcWtz7vQSXYe9xKFCtykG4iDaRgvNvMOW3jKGpOOvII
NuocR9tRhQJLLrDBuGWK8O4hMMWmdLL+/2ZZSY7mZhfpLwvW4jQuoXfCzk5Pu+dn
nePkPO12E5Z2Wa/HTk7grDc9fg8Yy9NGLZY1ckqFhfXTU0CQpcg3O1Qmp56tB7rT
rqi7M97TOYwVGlMuoFYPUbrBYfuoBGfqre20BPrwse0WHoEmCffbpGKTwTO+zvog
+UvZqFToi0+D/Q+NylHluVYpl9vqHslBKROEKMrYn5uYqqOAWCx1SLGQ5K0FuWGo
U2akfT2oXxEl+0JcwxxE7VbiXxVc+J+sn2LQtyrw3y6jvzDWu/aaqXAlr/iPwg6l
lK5GP+qoRF2rDDtPpti34Dl3KNuBKqRfzBEqnwH0bmY3fma5MrBLUyFX2fEYaZB+
//XK+rpW7bWxt5Z9JV6LlGejilNbz0KO8eKN5ED54+b7koUQgefaXU2Pvq3W4IW6
wLfBgzKFb317/ohTStjv95tSteFIv64vMMdJNrNWkIwK8XB33bSQmlL+bL773xKP
4CBTyC3sb/20u9C7k75q3Ol4tcZ9/ba3Gx/fnPdAHU7J/64k7qz/AGEyIxk=
Плюсы:
Минусы:
- Простота
- Экономия ресурсов
- Не происходит авторизация при каждом запросе, что продлевает жизнь аккаунту
- Как правило, куки живут не долго
- Куки могут зависеть от IP с которого проходила авторизация
- Может потребоваться больше времени для поиска необходимых кук и заголовков
3. Авторизация с помощью Puppeteer
Puppeteer - это полноценный браузер (Chrome), A-Parser автоматизирует управление им, благодаря чему парсер сам нажмет на нужные кнопки на странице и введет логин-пароль. Такой метод может быть полезный, когда невозможно найти нужный запрос авторизации (как в способе 1) или для него требуется какой-то динамически генерируемый токен/хэш, который проблематично сгенерировать без выполнения скриптов в браузере.
Нам нужно получить селекторы для полей логина, пароля и кнопки Вход, чтобы можно было к ним обращаться из парсера. Нужно быть внимательным, т.к. на странице могут быть элементы с одинаковыми именами классов или id. Лучше всего воспользоваться Инструментами разработчика и скопировать нужный селектор:
Найдя необходимые селекторы, создаем JS парсер, в котором описываем всю необходимую логику по открытию страницы, ввода учетных данных и нажатия кнопки:
Тестируем получившийся парсер (для тестов лучше отключить headless) и видим успешную авторизацию:
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
8rU=
Плюсы:
Минусы:
- Значительно более гибкие возможности для разработки
- Если не закрывать браузер во время работы задания, то обычно достаточно авторизоваться один раз
- Требует больше ресурсов
- Сложнее в разработке
- Скорость ниже, чем в первых двух вариантах
Мы рассмотрели основные варианты авторизации на сайте с помощью А-Парсер. Каждый вариант хорош по-своему, выбор варианта зависит от сайта и задач. В следующей статье мы покажем почему может быть плохим решением авторизоваться каждый запрос и как в JS парсере можно реализовать авторизацию один раз и использовать полученную сессию в остальных потоках.
-
Вступайте в наш Telegram чат: https://t.me/a_parser Нас уже 2600+ и мы растем!Скрыть объявление
Варианты авторизации на сайте с помощью A-Parser
Варианты авторизации на сайте с помощью A-Parser
Метки: