![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Имеем сайт http://www.nemexia.ru после ввода рег данных, (для теста логин testos пароль testos) редиректит на страничку с капчей. Так вот суть в следующем, не могу физически поймать картинку капчи. IE если делать сохранение странички полностью с картинками не может сохранить. а только сохраняет в веб архив. снифером облазил все, не вижу куда подкидывается капча. Хотел ее решить методом исключения не нужных цветов, но для начала мне нужен алгоритм как поймать сам GIF.
|
|
#2
|
||||
|
||||
|
да все просто:
Код HTML:
на картинке всегда будет текущее время Последний раз редактировалось NumLock, 27.07.2012 в 10:51. |
|
#3
|
|||
|
|||
|
при создании проекта исползовал:
Цитата:
![]() код писан под загрузку png, Но в мозиле, при подгруженной страничке, капча предлагается сохранить в gif. Так что я не знаю в каком формате вобще картинка приходит. Код:
procedure TForm1.Button1Click(Sender: TObject);
var
html:WideString;
Stream:TStream;
png:TPNGObject;
begin
try
png:=TPNGObject.Create;
html:=IdHTTP1.Get('http://game.nemexia.ru/bot_check.php?redir=%2Fplanet.php');
Delete(html,1,pos('name="submit" src="',html)+length('name="submit" src="'));
Delete(html,pos('" style="display',html),length(html));
Stream:=TStringStream.Create(IdHTTP1.Get('http://game.nemexia.ru/'+html));
png.LoadFromStream(Stream);
Image1.Picture.Assign(png); // тут непонятно какой тип картинки придет, если пробовать сохранить в мозила, то там gif
Stream.Free;
png.Free;
except
on e:Exception do
begin
png.Free;
Stream.Free;
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
webBrowser1.Navigate('http://www.nemexia.ru')
end;
end.требуется помощь, в идентификации ошибки и советы по правильному до писанию кода программы. Прикрепляю сам проект. Последний раз редактировалось BLAGA, 28.07.2012 в 07:41. |
|
#4
|
|||
|
|||
|
Тип картинки можно определить по заголовку файла (т.е. по нескольким первым байтам).
GIF-картинки начинаются с символов 'GIF89'; PNG-картинки начинаются с символов #$89'PNG'; P.S. Вместо Код:
Delete(html,pos('" style="display',html),length(html));Код:
Delete(html,pos('" style="display',html),MaxInt);Код:
SetLength(html,pos('" style="display',html)-1);Последний раз редактировалось MiraLaklamon, 28.07.2012 в 10:19. |
|
#5
|
|||
|
|||
|
Цитата:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
html:WideString;
Stream:TStream;
Gif: TGIFImage;
begin
try
GIF:=TGIFImage.Create;
html:=IdHTTP1.Get('http://game.nemexia.ru/bot_check.php?redir=%2Fplanet.php');
Delete(html,1,pos('name="submit" src="',html)+length('name="submit" src="'));
SetLength(html,pos('" style="display',html)-1);
Stream:=TStringStream.Create(IdHTTP1.Get('http://game.nemexia.ru/'+html));
Gif.LoadFromStream(Stream);
Image1.Picture.Assign(Gif);
Stream.Free;
Gif.Free;
except
on e:Exception do
begin
Gif.Free;
Stream.Free;
end;
end;
end;Код:
Delete(html,1,pos('name="submit" src="',html)+length('name="submit" src="'));Последний раз редактировалось BLAGA, 28.07.2012 в 17:39. |
|
#6
|
|||
|
|||
|
Цитата:
|
|
#7
|
||||
|
||||
|
нужно смотреть Content-Type в ответе:
Код:
type
TForm1 = class(TForm)
IdHTTP1: TIdHTTP;
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
...
procedure TForm1.FormCreate(Sender: TObject);
var
AFileStream: TFileStream;
begin
AFileStream:=TFileStream.Create('temp.png', fmCreate);
try
IdHTTP1.Get('http://j2me.webservis.ru/notedelphi.php', AFileStream);
Edit1.Text:=IdHTTP1.Response.ContentType;
finally
AFileStream.Free;
end;
end;для PNG картинки будет image/png |
|
#8
|
||||
|
||||
|
По сигнатуре, наверное, проще.
|
|
#9
|
||||
|
||||
|
а для GdipLoadImageFromStream вообще все-равно какой формат картинки) + GdipGetImageRawFormat и с сигнатурой заморачиваться не нужно
![]() |