Delphi – Indy (видеоурок). Авторизация на одноклассниках

21 января 2010    

Первый видеоурок по Delphi посвящен авторизации на сайте средствами Indy. В качестве примера я взял сайт “Одноклассники.ру“. Для авторизации на нем, как это бывает довольно-таки часто, нужно сделать два запроса: первый на главную страницу, спарсить адрес для авторизации и уже по нему сделать второй запрос с посылкой всех параметров (логин и пароль).

Смотрим и скачиваем:

http://avtuh.ru/wp-content/uploads/autorization-odnoklassniki.flv

Также Mak7v любезно переписал код авторизации для Одноклассники на язык С++ :)
Скачать исходник на С++

А вот примеры авторизации на сайте Вконтакте

Кстати, статьи и обзоры, непосредственно касающиеся delphi, есть на delphi блоге Димаса


Похожие записи из категории Видеоуроки Delphi

  • Delphi (видеоурок). Многопоточность и синхронизация
  • Delphi (видеоурок). Дополнительный поток в программе
  • Delphi – Indy (видеоурок). Регистрация на Rambler’е
  • Нравится


    Метки: , , , , Рубрика: Видеоуроки Delphi


    обсуждение

    1. crystalbit пишет:

      Это какая версия delphi?

      По поводу функции Pars, видел её на граббе, если использовать PosEx, то количество copy уменьшится до одного раза :)

      [Ответить]

      Zdez Bil Ya Reply:

      Delphi 2010 (подойдет любая)))
      Да, можно использовать PosEx :) Но я не стал, ибо это надо еще одну библиотеку подключать))

      [Ответить]

    2. HenzO пишет:

      Очень круто) спасиб большое, на днях попробую повторить, раньше пробовал хелловорд на дельфи писать, вроде что-то получалось) объясняешь хорошо, микрофон тоже норм, ты ведь тут не реп поешь) еще раз большое спасибо за урок!

      [Ответить]

    3. HenzO пишет:

      такс 2 вопроса очень нубских) я решил попробовать сделать тоже самое но для вконтакте) естественно ничего не получилось) по первых, дельфи не дает запустить мой чудо код выделяя красным “StrPage:=idhttp1.Get(‘http://vkontakte.ru/login.php‘);”
      Ну и вопрос : если у меня в http аналайзере во вкладке “Post data” в графе “Parameter name” стоит параметр типа “expire”, а в “Value” пусто. Я написал просто Data.Add(‘expire=’); но по ходу это не правильно)

      [Ответить]

      Zdez Bil Ya Reply:

      1) я не взял ВКонтакте в качестве примера, потому что там не столь простая авторизация)) К тому же часто меняется
      2) в строке “StrPage:=idhttp1.Get(’http://vkontakte.ru/login.php’);” как таковой ошибки нет. Надо смотреть, что пишет компилятор.
      3) чаще всего, если параметр пустой, то его писать не обязательно (хотя попадался мне случай и обязательного пустого параметра).
      Про авторизацию ВКонтакте можно почитать здесь: http://avtuh.ru/2010/05/12/delphi-indy-avtorizaciya-vkontakte.html

      [Ответить]

    4. crystalbit пишет:

      HenzO, могу предположить, что у тебя переменная неправильно объявлена, или не объявлена вовсе. Или же idhhtp1 не создан (idhttp1:=TIdHTTP.Create;)
      в любом случае, когда дельфи что-то выделяет красным, надо прислушиваться и к тому, что он пишет про ошибку

      [Ответить]

    5. AK пишет:

      Не легче снифером смотреть запрос, чем в исходном коде смотреть?

      [Ответить]

      Zdez Bil Ya Reply:

      Запрос я и смотрю снифером. А в исходном коде я смотрю, где располагается ссылка для авторизации

      [Ответить]

    6. .b0b3Rk0 пишет:

      Спасибо! Замечательный урок!

      [Ответить]

    7. buket пишет:

      подскажи пример как выпарсить не одну а н количество ссылок этой функцией, спс

      [Ответить]

      Zdez Bil Ya Reply:

      Точно также, как и одну) Указать, что идет до ссылки и чем заканчивается.
      Если префикс у ссылок одинаковый, то нужно удалять уже пропарсенную часть процедурой Delete

      [Ответить]

    8. bro пишет:

      Как бысть если мне нужно авторизироватся на DLE?

      [Ответить]

      Zdez Bil Ya Reply:

      Так же, как в уроке. Берёте снифер и смотрите запросы, а потом пишете

      [Ответить]

    9. bro пишет:

      и еще… скачал исходник запустил без изменений ошибка
      в строке
      Application.MainFormOnTaskbar := True;

      [Error] Project1.dpr(11): Undeclared identifier: ‘MainFormOnTaskbar’

      [Ответить]

      Zdez Bil Ya Reply:

      Закомментируйте

      [Ответить]

    10. GhostOnline пишет:

      Незря набрел на страницу..
      Хотя все это я давно знал, но вот что в этом сниффере можно один процесс выбирать пропустил как-то, хотя использую его уже год…
      А так раздражает когда во время отладки всякая ненужная хрень лезет в инет
      Кстати, эти ненужность параметров можно было показать наглядно, отключив javascript в браузере.
      И параметры проще брать в Raw Stream одной строкой и присваивать Data.Text := …; Ну это уже дело привычки

      [Ответить]

      Zdez Bil Ya Reply:

      Да, можно и скрипты и картинки отключать, но иногда лень это делать)
      Параметры да, можно и одной строкой, то так лично мне нагляднее, когда приходится много параметров заполнять

      [Ответить]

    11. 132231 пишет:

      Перепиши, плиз, пример. Авторизация сменилась, пример не рабочий

      [Ответить]

      Zdez Bil Ya Reply:

      Исходный код открыт, видео лишь объясняет последовательность действий. Не вижу проблем самому проделать действия, и изменить код

      [Ответить]

    12. 132231 пишет:

      Ссылка логина в исходнике страницы отсутствует, потому и прошу переписать исходник))

      [Ответить]

      Zdez Bil Ya Reply:

      Ничего подобного, всё там есть

      [Ответить]

    13. пишет:

      Мне интересно чё ето видео в сети везде стоит Автор: sXciNe.
      Так или нет ?

      [Ответить]

      Zdez Bil Ya Reply:

      Что так или нет?
      Видео записывал я, голос мой, копирайт внизу слева тоже вроде мой

      [Ответить]

    14. пишет:

      Гугл , запрос :sXciNe (с) Авторизация на одноклассниках

      [Ответить]

      Zdez Bil Ya Reply:

      Я не понимаю, что вас смущает. Я еще раз говорю, что видео моё, копирайты в нем мои. Никакого sXciNe я знать не знаю. Задавайте ему вопросы

      [Ответить]

    15. Zohan пишет:

      Спасибо большое!!! Давно искал что-то подобное

      [Ответить]

    16. Marsik пишет:

      Добрый день.
      отличный урок. пытаюсь авторизоваться в админку джумлы на локальной машине и ничего не получается.. =)) постоянно Invalid Token..

      [Ответить]

    17. Shoot пишет:

      Zdez Bil Ya, Прошу скажите что не так
      Build
      [Warning] Unit1.pas(86): For loop control variable must be simple local variable
      [Error] Unit1.pas(109): Undeclared identifier: ‘idhttp1′
      [Error] Unit1.pas(110): Undeclared identifier: ‘Pars’
      [Error] Unit1.pas(120): Missing operator or semicolon
      [Fatal Error] Project1.dpr(5): Could not compile used unit ‘Unit1.pas’
      Пожалуйста…

      [Ответить]

      Zdez Bil Ya Reply:

      Вы как-то бездумно копируйте код. Ваша программа не знает, что такое “idhttp1″ и “Pars”

      [Ответить]

    18. Joker пишет:

      А можно восстановить ссылку на c++ код?:)

      [Ответить]

      Zdez Bil Ya Reply:

      Восстановлена

      [Ответить]

    19. Павел пишет:

      Я пытался по этому примеру сделать автроризацию Вконтакте, но проблема! Пишет вот:
      Application.MainFormOnTaskbar := True;
      ^
      |
      Вот гдето сдесь :(

      [Ответить]

    20. Taurusex пишет:

      Очень полезный урок. Благодарен!!!

      [Ответить]

    21. Taurusex пишет:

      Павел шлепните вообще эту строку)))
      Application.MainFormOnTaskbar := True;

      [Ответить]

    22. Twent пишет:

      Огромное спасибо! Всё предельно понятно :)

      [Ответить]

    23. Alex пишет:

      Спасибо, все работает. Кстати, кто любит сжатый код – вот алтернативная замена функции поиска адреса для отправки POST запроса:
      Str:= Copy(Page, Pos(‘<form action="', Page) + 14,
      Pos('method="post"', Page) – Pos('<form action="', Page) – 16);

      [Ответить]

    24. Alex пишет:

      Коряво, зато работает :D

      [Ответить]


    оставить комментарий или два