Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Сети > [for newbie] Проходим авторизацию "Вконтакте" |
Автор: Jakeroid 10.1.2011, 15:16 | ||||||||
Предыстория: Недавно мне понадобилось авторизоваться вконтакте программно. Я попробовал, но потом началась сессия... И так не закончил. Но вот теперь я закрыл сессию на стипендию. Да, поздравьте меня ![]() Цель: Получить доступ к персональной части страницы vkontakte.ru. То есть заиметь злой rmixsid! Кто пробовал, тот поймет. Примечание: Статья объясняет принцип авторизации, я не выкладываю готовый код, или программу, в этом нет смысла. Кто понимает в программировании, тот сможет это сделать и на Delphi и на C++. Тем кому не понятны слова, прошу на этот замечательный СЕКРЕТНЫЙ сайт, о котором не знают новички! Я вам раскрываю секрет откуда черпают знания трУхАцкЕры. _http://google.com/ Что использовал я? Среда разработки:----------------------Delphi 7 Язык программирования:----------------Object Pascal Библиотека для протокола HTTP:------Indy 10 Библиотека для парсинга текста:-----TRegExpr Сниффер:--------------------------------HTTP Analyzer V5 И так приступим! Let's go! Let's Rock! Разобрав что и как, я выяснил. Браузер отправляет 2 пост запроса. При этом данные передаваемые серверу одинаковые всегда для одного и того же пользователя. Копнув глубже я увидел, что в куках сидит remixsid. Он же ведь где то генерируется? Да. Это происходит после первого пост запроса. Сервер редиректид браузер на другую страницу, пустую, но в коде java скрипт. В скрипте генерятся куки. Поскольку Indy не захотела скачать этот скрипт. Я решил не заморачиваться. Ведь есть простой путь. Пройти авторизацию на мобильной версии вконтакте. А потом добавить куки, и получить доступ к полноценной. Авторизация мобильной версии проходит тоже в два пост запроса. Первый очень простой, нам следует передать только два параметра:
Где email - мыло пользователя, pass - пароль(и дураку понятно). В ответе приходит "мНогАбУкФ". Например:
Как мы сдесь видим, нас интересуют несколько параметров. Каждый из них имеет свой "name" и "value". Что бы спарсить их я использовал следующую функцию:
Зачем же я добавил в CustomHeaders remixsid? А что бы мы смогли после авторизации на m.vkontakte.ru, зайти на любую страницу полной версии. А вот как примерно должна выглядеть функция авторизации:
Вот собственно и все. Для особо продвиннутых, пищущих на сокетах, не обязательно авторизоваться сначала на мобильной версии. Вы можете сразу в ответе первого пост запроса распарсить значения и передавать их потом как кукисы. УДАЧИ! ;) P.S. Тему создал для уменьшения количества вопросов по поводу авторизации вконтакте. Я думаю новичкам теперь не создаст трудностей разобраться что и как. |
Автор: Mifody 11.1.2011, 10:13 |
Доброго времени суток. Глупый вопрос можно? А зачем такие танцы с бубном??? И зачем "танцы" с мобильным контактом ??? По моему намного проще авторизоваться сразу на нормальном контакте, на не искать заднюю дверь ![]() |
Автор: Jakeroid 11.1.2011, 14:50 |
Потому что статья только для новичков в программировании. А моя indy не захотела качать скрипт ПК версии. НО! Как я отписался в статье, там главное понять откуда берется remixsid. Если вы умеете работать с сокетами в С++, никто вам не мешает сделать это через ПК версию, по своему. Елегантно и красиво. Ну а если вы школьник, и вчера установили делфи. То статья максимально ориентированна на вас ;). |
Автор: Mifody 11.1.2011, 17:15 |
Тогда сори, не знал что Инди такое не умеет, сам синапсом пользуюсь ![]() А так, неплохая статейка ;). |
Автор: bagos 2.2.2011, 11:09 |
Да, молодец парень что написал, но имхо много лишнего, rmixsid так и не понял зачем он нужен для получения доступа к странице, я не профи в этом вопросе, но когда то делал прогу визуально работающую как icq, только для вконтакте, и никакой rmixsid мне не понадобился;) хотя может там многое поменялось, но не думаю))) |