Важно понимать что все сайты работают средствами HTTP протокола. В большинстве случаев используются GET, POST, PUT, DELETE запросы. В зависимости от адреса, тела запроса, куков и заголовков сервер по разному обрабатывает их. Сегодня на примере vk.com будем проводить анализ перед написанием программы, которая будет пытаться войти вк под личным аккаунтом пользователя. Для начала попробуем проанализировать сайт, делается это просто и нам нужен лишь браузер с инструментами для отладки/разработки. В моем арсенале есть: Chrome, Visual Studio, 1 месяц курсов от Гоши Дударя (лучше не смотреть). Сначала откроем консоль в Chrome это делается на кнопочку F12. Затем нужно перейти во вкладочку Network Что это за вкладка? Тут будут отображены все HTTP запросы, которые отправляются нам или от нас. Давайте перейдем на сайт vk.com. Видим кучу всяких запросов, нажав на запрос мы можем детальнее увидеть параметры, заголовки, ответ от сервера и куки, которые были отправлены или получены. А - адрес куда шлется запрос Б - тип запроса В - заголовки присланные сервером Г - заголовки отправленные Д - посмотреть ответ сервера Х - куки А вот так выглядит ответ от сервера Давайте по порядку: Адрес запроса - это туда куда мы шлем запрос, тут все понятно Тип запроса, есть два основных типа GET, POST, реже можно встретить PUT, DELETE. Поясню за первые два. GET - получение информации, к примеру введя в адресную строку vk.com и нажав enter, я отправил GET запрос на адрес https://vk.com/. В свою очередь сервер мне отправил файл html со встроенными js скриптами. Браузер отрисовал этот файл, затем пошли другие запросы. POST запрос, тоже может отправляется прямо из браузера, но он отправляется с помощью специальных форм или AJAX (технология отправки асинхронных запросов в JS). В GET запросах, параметры обычно пишутся в адресной строке, к примеру vk.com?parameter=value. В POST запросах параметры шлются в теле запроса, чуть ниже покажу. Заголовки - это какая либо информация, лучше всего ее полностью копировать, чтобы эмулировать работу браузера. Важно обратить внимание на accept - MIME типы, которые мы можем принять, accept-encoding - кодировки, которые мы понимаем, accept-language - язык, который мы понимаем, user-agent - что у нас за система и браузер. Заголовки нужны для того чтобы браузер мог понять вас и чтобы вы могли понять ответ от сервера. Ответ от сервера - может быть что угодно. Как в данном случае HTML, так и JS, CSS, JSON, XML и другое. Хоть просто нолик. Куки - важная вещь. Обычно с помощью куков сайт понимает кто вы. К примеру авторизация обычно реализуется через сессию, которая хранится на сервере, но чтобы сервер мог понять, что это ваша сессия, используется кука, которая хранит идентификатор сессии. В теории зная идентификатор можно с отправить с ним куку на сервер, тот будет думать что вы вошли. Куки хранятся у вас на компьютере. Круто, ну и что дальше? А дальше вот что, попробуем с эмулировать вход на сайт, для этого введем заведомо неверные данные в форму и тыкнем кнопочку отправить. Вылезла капча, но это нас мало волнует. Нас волнует вот этот запрос, со словом login в названии. Что мы тут видим? Во первых видим адрес, на который был отправлен запрос, заголовки, а также параметры. Помимо логина и пароля, отправляются еще какие-то ip_h, lg_h, role, act. Если с act (сокр. от слова action) все понятно. То вот role, ip_h, lg_h это что-то непонятное. Путем нескольких отправки запросов с разного IP, устройство, можем выяснить, что role - это константа, в данном запросе отправляется одно и тоже. А вот ip_h, lg_h, to - меняются. Давайте их найдем в HTML коде. Переходим во вкладку Elements, где показан HTML код. Как сверстана страница нас мало волнует, нам нужно найти откуда эти значения. Тыкаем ctrl+f и ищем значение к примеру ip_h. О чудо! Мы нашли их, то есть, теперь чтобы войти на страницу пользователя, нам надо сделать два запроса. Для получения этого HTML кода и для отправки запроса на вход. Внимание! В данном случае нам повезло. Бывает когда какие-то параметры генерируются в JS скриптах. Хоть и посмотреть их можно, так как JS исполняется у нас в браузере, но поиск, а так же понимание как эти параметры генерируются занимает более продолжительное время. Вроде с параметрами разобрались, нам нужно стягивать ip_h. lg_h, to и ставить свои email, password. Остальные просто копируем и все. Надо бы еще узнать что браузер отвечает Проблемка, но к счастью нам может помочь программка Postman, которая умеет отправлять HTTP запросы. Ставим тип запроса, адрес, ****аем параметры и получаем в ответе JS. И что мне с ним делать? Не очень информативно. Давайте-ка попробуем отправить запрос в мобильной версии. Обычно сайты по разному обрабатывают устройства. Чтобы на мобилках все летало, обычно упрощают работу JS скриптов. Пробуем залогиниться. О, запрос выглядит по другому. Более того параметры ip_h, lg_h и прочие передаются в адресе. Попробуем опять найти параметр ip_h найти в HTML Вк о нас позаботились и оставили готовый адрес прямо в параметры формы. Нам просто остается забрать этот параметр в программе и отправить на этот адрес данные. Пробуем снова в Postman'е отправить запрос. Не забываем указать юзер агент. Пусть сервер думает что мы и правда с мобилки сидим. А это по нашему. Сервер ответил HTML кодом, который мы можем распарсить. Дело осталось за малым, написать код программы и радоваться. В данной статье я этого показывать не буду. Возможно сделаю вторую часть с разбором моего кода. Кстати во ссылочка на гитхабе Суть данной статьи, показать вам, как я анализирую сайты. Это важно, прежде чем писать ваши чекеры и прочее. Отправляйте разные запросы с разными данными и смотрите как ведет себя сайт. Вторая часть зависит от активности и востребованности статьи.
Вообще конечно гет пост и тд принято называть методами а не типами, они по сути ни на что не влияют, это так, чисто конвенция.
Ребят, эта статья нужна для описания принципа моей работы. Вместо ВК может быть другой сайт. Показал на примере ВК, так как с ним работал.
А вот есть сайты с которых не летит ничего. Таже веб телега на этапе входа, еще приложуха bigo live. Как там их ловить