Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Вывод капчи и отправка формы


Автор: serezhka1986 11.5.2012, 16:05
Добрый день!
Есть несколько сайтов, где часто забираю wmr-бонус. Вот и решил написать маленькую программку для быстрого получения, чтобы не открывать каждый сайт отдельно.
Но здесь есть проблема с капчей. Два сайта без капчи, так с них нормально получаю. Подскажите, пожалуйста, как правильно получить капчу и отправить обратно данные с введенной капчей?
Вот нашел такой пример, но он у меня не работает: http://www.webdelphi.ru/2009/10/dva-sposoba-zagruzki-captcha-dlya-poluavtomaticheskix-registracij/
Потому как ссылка на изображение такая: 
Код

<img src="captcha.php"/>

Это с сайта: http://gold-market.com.ua/
Как быть с такой капчей?

Автор: XperT 11.5.2012, 17:42
А чем вас смущает ссылка? Она же не обязательно должна заканчивать на gif/jpg, чтобы возвращать контент в виде рисунка.

На сколько я понимаю каптча генерирует скрипт исходя из кукисов браузера, потому алгоритм примерно такой:
1. Скачиваете содержимое главной страницы (подключив к компоненту который отвечает за это куки менеджер, чтобы он запоминал установленные куки)
2. Скачиваете страницу http://gold-market.com.ua/captcha.php, сохраняете её в файл
3. Загружаете этот файл в TImage
4. Ждёт пока пользователь разгадает каптчу
5. Отправляете форму

Шаги 1-5 должны использовать один и тот же куки менеджер, иначе каптча не подойдёт.

Добавлено через 3 минуты и 5 секунд
Возможно я ошибаюсь в том, на основании чего генерируется каптча, потому, стоило бы проверить весь трафик с помощью снифера

Автор: MetalFan 12.5.2012, 12:01
Цитата(XperT @  11.5.2012,  17:42 Найти цитируемый пост)
стоило бы проверить весь трафик с помощью снифера

С этого, имхо, стоило бы и начинать)

Автор: serezhka1986 13.5.2012, 14:21
Помогите в данном вопросе, вообще не могу понять как работает формирование данной капчи. Может у кого есть готовый пример по такому же вопросу - буду премного благодарен!  smile 
Обьясните, как же ее все таки вывести?

Автор: serezhka1986 16.5.2012, 08:59
Спасибо всем! Проблема решена.
Не работал просто никогда с png изображениями в Delphi, поэтому не знал как его отобразить в TImage  smile 
Кому интересно, ответ http://www.cyberforum.ru/delphi-beginners/thread355787.html.

Автор: serezhka1986 17.5.2012, 09:53
Возможно, вопрос уже не по теме, но все же касается разработки данной программы.
Отправляю post-запрос:
Код

procedure TForm1.Button1Click(Sender: TObject);
var
 PostData:TStringList;
 m:string;
begin
    PostData:= TStringList.Create;
    PostData.Add('wmr=R********');
    PostData.Add('captcha=123');
    m:=IdHTTP1.Post('http://gold-market.com.ua/bonus/',PostData);
    RichEdit1.Text:=m;
end;

В результате получаю в ответ: <b>Îøèáêà</b> ïðîâåðî÷íûé êîä íå âåðåí!
А должно было бы быть: <b>Ошибка</b> проверочный код не верен!
Кодировка сайта 
Код

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"/>

Как быть с кодировкой?
P.S. Пишу в Delphi XE2

Пробовал декодировать данную строчку на сайте http://www.artlebedev.ru/tools/decoder/ так написано было, что декодировась с cp1252 в cp1251

Автор: mistrmax 18.5.2012, 15:59
serezhka1986, попробуйте UTF8Decode()

Добавлено через 10 минут и 36 секунд
А ещё лучше, если не поможет, загрузите всё в стрим, а потом из стрима загружайте в RichEdit.
Код

procedure TForm1.Button1Click(Sender: TObject);
var
 PostData:TStringList;
 Strm:TMemoryStream;
begin
    Strm:=TMemoryStream.Create;
    PostData:= TStringList.Create;
    PostData.Add('wmr=R********');
    PostData.Add('captcha=123');
    try
       IdHTTP1.Post('http://gold-market.com.ua/bonus/',PostData, Strm); 
       Strm.Position:=0;
       RichEdit1.Lines.LoadFromStream(Strm);
    finally
    PostData.Free;
    Strm.Free;
    end;
end;

Где-то читал, что не в ладах инди выше 9 версии с русским текстом, и выход только такой.

Автор: yuriy2012 21.5.2012, 22:22
serezhka1986,  Здравствуйте! Я являюсь администратором сайта http://gold-market.com.ua с которого вы получаете десятикопеечный бонус, который я планирую постепенно увеличивать, а если Вы будете  химичить с каптчей, то я отключу Вам нахрен выдачу бонусов вообще. smile 

Автор: serezhka1986 22.5.2012, 09:58
yuriy2012, хорошо. Обязуюсь, как законопослушный пользователь интернета, заходить на Ваш сайт и забирать бонус вручную!  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)