Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.09.2010, 18:57   #1
kardinal94
Форумчанин
 
Аватар для kardinal94
 
Регистрация: 26.04.2010
Сообщений: 105
По умолчанию Опять про каптчу

Возникла небольшая проблема с парсингом страницы http://budget.webeffector.ru/index.html. Мне надо посылать туда POST запрос, в нем естественно должна быть каптча. Теперь суть вопроса:
Адрес картинки в коды выглядит просто /captcha, при обновлении страницы http://budget.webeffector.ru/captcha появляется новая картинка. Исходя из этого отдельно брать картинку по URL не представляется возможным. Ни в Cookie ни где бы то ни было не заметил признаков ID каптчи. Помогите пожалуйста разобраться.
kardinal94 вне форума Ответить с цитированием
Старый 12.09.2010, 20:07   #2
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Всё верно. Делайте запрос на страницу, берите капчу с адреса http://budget.webeffector.ru/captcha (при сохранении куков).
Цитата:
Сообщение от kardinal94 Посмотреть сообщение
Адрес картинки в коды выглядит просто /captcha, при обновлении страницы http://budget.webeffector.ru/captcha появляется новая картинка. Исходя из этого отдельно брать картинку по URL не представляется возможным.
Вы не поверите, но браузер работает именно так: запрос на страницу, запрос картинок, запрос скриптов, css и т.д.
Voody вне форума Ответить с цитированием
Старый 12.09.2010, 21:59   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

GET запрос на страницу с формой.(там в коде JSID+куки с ним)
потом запрос на капчу, потом пост с вашими данными.

JSID достаточно для всего этого(скрипт просто генерирует для JSID капчу и запоминает её значение, потом проверяется)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.09.2010, 16:16   #4
kardinal94
Форумчанин
 
Аватар для kardinal94
 
Регистрация: 26.04.2010
Сообщений: 105
По умолчанию

Проблема все еще актуальна. Как сказал Voody не получается, каптча выдается другая. По крайней мере просто тупо обновляет эту страницу. Никаких зацепок в Cookie или где то еще не нашел. Может есть у кого то идеи? как вариант предложили делать через браузер. Вставлять данные в браузере а каптчу вырезать, надо только узнавать координаты. Если так делать, то получается через одно место. Не хотелось бы.
kardinal94 вне форума Ответить с цитированием
Старый 15.09.2010, 16:38   #5
alexprey
Форумчанин
 
Регистрация: 25.05.2010
Сообщений: 169
По умолчанию

Ну как вариант идти через обычный сокет. Он то уж наверняка будет работать.
Посылаешь 2 запроса get на нужный сервер по 80 порту.
Запрос в IE выглядит так
Код:
GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-ms-application, application/vnd.ms-xpsdocument, 
application/xaml+xml, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Language: ru
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2)
Host: здесь имя сервера или его ip например 127.0.0.1
Connection: Keep-Alive
В ответ получаешь ответ сервера
версия http затем 3х значный код, затем до-информация и наконец то то что нужно. На разных серверах ответ бывает разный, потому стоит проверять то что присылает сервер.
Пример ответа
Код:
HTTP/1.1 200 ok

<html></body>...</body></html>

Последний раз редактировалось mihali4; 26.11.2010 в 18:59.
alexprey вне форума Ответить с цитированием
Старый 15.09.2010, 17:07   #6
kardinal94
Форумчанин
 
Аватар для kardinal94
 
Регистрация: 26.04.2010
Сообщений: 105
По умолчанию

Я и так пробовал. Смотрел в сниффере. Например в Мозилле:

Код:
(Request-Line):GET /captcha HTTP/1.1
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:windows-1251,utf-8;q=0.7,*;q=0.7
Accept-Encoding:gzip,deflate
Accept-Language:ru,en-us;q=0.7,en;q=0.3
Cache-Control:max-age=0
Connection:keep-alive
Cookie:ref_domains=1282552920+webeffector.ru
Host:budget.webeffector.ru
Keep-Alive:115
User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.8) Gecko/20100722 MRA 5.6 (build 03402) Firefox/3.6.8 GTB7.1 sputnik 2.1.0.18 WebMoney Advisor
Ответ:
Код:
(Status-Line):HTTP/1.1 200 OK
Server:nginx/0.8.49
Date:Wed, 15 Sep 2010 13:06:51 GMT
Content-Type:image/png;charset=UTF-8
Transfer-Encoding:chunked
Connection:keep-alive
Cache-Control:private,no-cache,no-store
При обновлении страницы запрос тот же, а ответ такой:
Код:
(Status-Line):HTTP/1.1 200 OK
Server:nginx/0.8.49
Date:Wed, 15 Sep 2010 13:09:42 GMT
Content-Type:image/png;charset=UTF-8
Transfer-Encoding:chunked
Connection:keep-alive
Cache-Control:private,no-cache,no-store
ТО есть меняется только время

Последний раз редактировалось kardinal94; 15.09.2010 в 17:09.
kardinal94 вне форума Ответить с цитированием
Старый 15.09.2010, 17:53   #7
alexprey
Форумчанин
 
Регистрация: 25.05.2010
Сообщений: 169
По умолчанию

Если бы был такой ответ, то у тебя бы страница не грузилась. Лучше попробуй получать ответ через обычный TSocketClient.
alexprey вне форума Ответить с цитированием
Старый 15.09.2010, 20:35   #8
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Цитата:
Сообщение от kardinal94 Посмотреть сообщение
Проблема все еще актуальна. Как сказал Voody не получается, каптча выдается другая. По крайней мере просто тупо обновляет эту страницу. Никаких зацепок в Cookie или где то еще не нашел. Может есть у кого то идеи? как вариант предложили делать через браузер. Вставлять данные в браузере а каптчу вырезать, надо только узнавать координаты. Если так делать, то получается через одно место. Не хотелось бы.
Вот скажите мне, как вы определяете, что капча выдается другая? Это можно определить, сравнивая две капчи. А программа ведь запрашивает страницу, затем запрашивает капчу, никакую капчу для того, чтобы вы сравнили, она не запрашивает.

Я не знаю, как вы работаете с сетью, но почему-то на Indy у меня всё получается, и капчу получать и запрос отправлять.

Код кнопки получения капчи и вывод ее на форму:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var MS:TMemoryStream;
pic: TPNGImage;
begin
 IdHTTP1.Get('http://budget.webeffector.ru/index.html');
 MS:=TMemoryStream.Create;
 IdHTTP1.Get('http://budget.webeffector.ru/captcha',MS);
 MS.Position:=0;
 pic:= TPNGImage.Create;
 pic.LoadFromStream(MS);
 Image1.Picture.Assign(pic);
 pic.Free;
 ms.Free;
end;
Код кнопки посылки запроса. Текст для капчи берем из Edit. Ответ в Memo

Код:
procedure TForm1.Button2Click(Sender: TObject);
var data:tstringlist;
begin
 data:=tstringlist.create;
 data.Add('geo=Москва');
 data.Add('domain=avtuh.ru');
 data.Add('text=пароль qip');
 data.Add('captcha='+Edit1.text);
 memo1.Text:=IdHTTP1.Post('http://budget.webeffector.ru/index.html',data);
 data.Free;
end;
Voody вне форума Ответить с цитированием
Старый 15.09.2010, 22:05   #9
kardinal94
Форумчанин
 
Аватар для kardinal94
 
Регистрация: 26.04.2010
Сообщений: 105
По умолчанию

Я тоже примерно таким образом делал это. Однако у меня тупо обновляло страницу. Еще раз попробую PNGImage сторонний компонент?

Последний раз редактировалось mihali4; 26.11.2010 в 18:59.
kardinal94 вне форума Ответить с цитированием
Старый 15.09.2010, 22:25   #10
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Цитата:
Сообщение от kardinal94 Посмотреть сообщение
PNGImage сторонний компонент?
в 2010 стандартная библиотека pngimage
в ранних версиях наверное надо скачивать дополнительно
Voody вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
И опять про вставку картинок Even Microsoft Office Excel 8 27.10.2010 11:47
опять про мониторинг txt файлов... zander Microsoft Office Excel 0 05.08.2009 09:08
Опять про кризис vasek123 Свободное общение 32 13.03.2009 16:56
Опять про гистограммму artemavd Общие вопросы Delphi 10 15.07.2008 11:44
опять про формы в html... Kitt Работа с сетью в Delphi 3 13.05.2008 09:05