![]() |
.:INTRO:. У новичков часто возникают вопросы относительно написания всяких мелких регеров, чекеров, гулялок и тд. Собственно решил поделиться опытом и осветить моменты, которые, на мой взгляд, вызывают больше всего трудностей. Статейка будет полезна только новичкам, изучающим работу с инетом средствами Делфи. Шарящим можно идти мимо, критиковать, троллить и делать все, что в голову взбредет . Взаимодействовать с окаянным будем используя библиотеку indy. Итак, начинаем! .:Организация работы:. Есть один интересный сайт http://sprashivay.ru. Сайтег довольно быстро набирает обороты и представляет собой задавалку анонимных вопросов. Одна знакомая барышня ныла по поводу того, что как бы было классно, если бы сайт выдавал оповещение, когда тебе задают новый вопрос... Ну корочь решил я помочь бабенке воплотить ее грязную фантазию в жизнь . Решил накатать софтину, которая сидела бы на страничке, выжидала, когда зададут вопрос и информировала бы нас об этом. Вот собственно фотка этой красотки: Глаголить она будет через сообщения в System_Tray, вот как-то так: http://s017.radikal.ru/i436/1201/32/733c67d2e9bf.jpg Чтобы начать колдовать, нам необходимы следующие ингредиенты: - Delphi 7 - HttpAnalyzer (или другой сниффер) - Минимальные знания строения http запросов В процессе колдовства будут затронуты следующие аспекты проведения черной мессы: - Работа со снифером - Отправка данных методами GET и POST. - Парсинг страницы - Работа с куками Нужна новая учетка для экспериментов. Идем на сайт, регимся. Я создал учетную запись, с такими авторизационными данными: логин - owning@insorg-mail.info, пароль - antichat. Наша прога должна также уметь проходить регистрацию. Сейчас попытаемся научить ее это делать. .:Кодинг:. Включаем снифер, проходим авторизацию на сайте. Видим, что авторизационные данные отправляются скрипту http://sprashivay.ru/login методом POST. http://s61.radikal.ru/i173/1201/be/aaed9f9b0253.jpg Нужно, чтобы прога делала все в точности также. Создаём новый проект... Добавим на форму Два поля ввода Edit1 и Edit2 (для ввода логина и пароля соответственно), Одну кнопку, которая будет отвечать за регистрацию. Объявляем глобальные переменные: Цитата:
http://s018.radikal.ru/i516/1201/5b/3468d36da1f5.jpg В обработчик TForm1.Button1Click добавим следующий код: Цитата:
http://s51.radikal.ru/i133/1201/4a/1e77138fae6c.jpg Мыло передается в нормальном человеческом виде, а вот с паролем явно что-то не то. Вместо слова antichat мы видим какуе-то х??ню. Я предположил, что цыферки эти не что иное как наш antichat, только в зашифрованном виде. Шифрование происходит по алгоритму MD5. Полностью я в этом убедился, когда сходил на http://www.c0llision.net/ и расшифровал хэш. Из этого исходит, что наш софт также должен уметь шифровать данные для отправки. Пишем код: Цитата:
Цитата:
Цитата:
http://s018.radikal.ru/i508/1201/62/057717f10a25.jpg По скрину видим, что браузер пихнул нам кук с именем usersession и значением состоящим из 28 букв и цифр. Делфи имеет некоторые стандартные компоненты для работы с кукисами, но мне по нраву выставлять их вручную... В приведенном ниже коде, я спаршу значение кукисов из ответа сервера используя регулярные выражения. Об этом я рассказывать не буду (мб когда нить допишу), просто приведу код. Добавим на форму таймер. он нужен, чтобы прога периодически парсила наш страницу на наличие новых вопросов. Цитата:
Цитата:
.:ЭПИЛОГ:. Весь подобный софт пишется по данной схеме: Авторизация Прием/передача кукисов Парсинг страниц Используя мой пример вам не составит труда разобраться в написании подобного рода программ. Я постарался максимально комментировать код и рассказать более подробно о ключевых ситуациях . Если что не учел, добавлю в ближайшее время. Исходники приведу в товарный вид и выложу... Линк на прогу: http://slil.ru/32550864 |
эх,бросал бы ты это делону, а так хорошо.+
|
Цитата:
|
Цитата:
или пусть читают! |
Протестил! Работает как описано!
|
жду переборщик паролей с прокси и сменным юзер агеном в каждм запросе.
|
перезалей архив
|
| Время: 22:04 |