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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2009, 16:10   #1
Vlad_55
Пользователь
 
Регистрация: 03.11.2007
Сообщений: 22
По умолчанию Как получить URL загружаемой картинки (используя Indy)

Суть вопроса: есть файлик на файлообменнике, например
http://narod.ru/disk/14395347000/Chart.p1.html
на странице есть каптча. при просмотре тем же FireFox картинка имеет источник
http://u.captcha.yandex.net/image?ke...iCgSRArK8OFkJx
key соответственно генерируется при каждом обращении к странице
в исходнике странички, который получаю через
Код:
idHTTP.Get(адрес)
эта же картинка имеет вид:
http://img.yandex.net/i/z.gif
z.gif - прозрачная картинка без цифр, соответственно парсить HTML-код нет смысла.
Мне необходимо получить именно то изображение, которое передается в
http://u.captcha.yandex.net/image?ke...iCgSRArK8OFkJx (при открытии этого адреса картинка нормальная)
показать пользователю - пусть вводит каптчу, и т.д. и т.п.
Вопрос: как мне получить этот адрес при загрузке страницы, используя Indy?
З.Ы. При использовании WebBrowser адрес получается без проблем через сообщения в событии OnStatusChange...Но мне надо получить именно с помощью Indy
WebDelphi.ru - блог о программировании на Delphi
Vlad_55 вне форума Ответить с цитированием
Старый 23.10.2009, 16:56   #2
Usov
Форумчанин
 
Аватар для Usov
 
Регистрация: 29.09.2009
Сообщений: 228
По умолчанию

-------------

Последний раз редактировалось Usov; 23.10.2009 в 17:00.
Usov вне форума Ответить с цитированием
Старый 23.10.2009, 17:05   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

парсинг обсуждался миллиарды раз
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.10.2009, 17:12   #4
Vlad_55
Пользователь
 
Регистрация: 03.11.2007
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
парсинг обсуждался миллиарды раз
Какой именно парсинг? Если парсинг страницы, то тут он ни причём - нету на странице того, что надо мне. Понимаете? Про парсинг я не спрашиваю. Могу конкретизировать:
Как во время выполнения idHttp.Get получить адреса к которым обращается компонент? Парсинг HTML-кода не предлагать Было бы все дело в пасинге - давно бы разобрался
WebDelphi.ru - блог о программировании на Delphi
Vlad_55 вне форума Ответить с цитированием
Старый 23.10.2009, 17:25   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Как во время выполнения idHttp.Get получить адреса к которым обращается компонент?
он обращается к тому адресу который вы указываете ему, или на тот на который переадресовывает.

там идет АЯКС запрос.
сниффер поможет.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.10.2009, 17:29   #6
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Там каптча жабаскриптом дорисовывается уже после загрузки страницы, function rotate() и ниже /disk/getcapchaxml/?rnd=....

запрос к нему возвращает xml такого вида
Цитата:
<?xml version="1.0" encoding="utf-8" ?>
<number url="http://u.captcha.yandex.net/image?key=40vLkg0Y181ZB80OXz5Jp9XV8 3KIkzf2">40vLkg0Y181ZB80OXz5Jp9XV83 KIkzf2</number>
А чтоб скачать файл, нужно попросить картинку с произвольным параметром rnd, отпарсить из xml key, потом отправить на disk/14395347000/Chart.p1.html POST c ответом
Цитата:
key=40vLkg0Y181ZB80OXz5Jp9XV83KIkzf 2
action=sendcapcha
rep=ЦИФРЫ
и оттуда уже вытащить ссылку типа /disk/start/06.dl6d-narod.yandex.ru/14395347000/h5e8100c61400f0ff949c246172bc93ee/Chart.p1

--

Да, кстати, можно поступить НАМНОГО проще - прикинуться яндекс-баром
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 YB/4.1.0
и сразу получать ссылку на скачку
пыщь

Последний раз редактировалось JTG; 23.10.2009 в 18:00.
JTG вне форума Ответить с цитированием
Старый 23.10.2009, 18:17   #7
Vlad_55
Пользователь
 
Регистрация: 03.11.2007
Сообщений: 22
По умолчанию

ВОТ! То, что мне и надо было. Спасибо огромное за дельный совет
Яндекс я просто для примера привел..хотя идея с Яндекс.Бар интересная
WebDelphi.ru - блог о программировании на Delphi

Последний раз редактировалось Vlad_55; 23.10.2009 в 18:30.
Vlad_55 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как написать сервис-клиент используя Indy 3vg3n Работа с сетью в Delphi 0 14.03.2009 11:04
twebbrowser Как получить ссылки на которые ведут картинки? darkcoder Работа с сетью в Delphi 1 07.03.2008 14:10
как получить аттач из письма используя NMPOP3 KORN Работа с сетью в Delphi 0 02.11.2007 07:04