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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2010, 22:44   #1
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
Печаль Капча

Знаю что тема заезжана вдоль и поперёк, но всё же не могу панять как парсить страницу на каторой находится капча если все строницы как я смотрел имеют общий тег <img src="
bulldog5293 вне форума Ответить с цитированием
Старый 20.08.2010, 10:02   #2
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Цитата:
как парсить страницу на каторой находится капча
чем парсинг html документа с капчей отличается от парсинга html документа без капчи ?
Сформулируйте нормальный вопрос
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 20.08.2010, 12:39   #3
Voland-791
Пользователь
 
Аватар для Voland-791
 
Регистрация: 07.08.2010
Сообщений: 16
По умолчанию

Вот пример на мегафон,делал сам. и в Users - jpeg
Цитата:
var
img: TMemoryStream;
jpg: TJpegImage;
captcha,s,im: string;
begin
jpg:= TJpegImage.Create;
img:= TMemoryStream.Create;
S:= idhttp1.Get('http://sibir.megafon.ru/sendsms/');
captcha:=Copy(s, pos('keystring',s),8);
IdHTTP1.Get('http://sibir.megafon.ru/antirobot/index.php?'+ captcha + '.jpg', img );
img.Position:=0;
jpg.LoadFromStream(img);
form1.image1.Picture.Assign(jpg);
jpg.Free;
img.Free;
end;
E.N.A
Voland-791 вне форума Ответить с цитированием
Старый 20.08.2010, 17:26   #4
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию

Voland-791 понимаю что сам писал, но думаю что captcha:=Copy(s, pos('keystring',s),8); лишнее, т.к. посмотрев исходник страницы antirobot/index.php находится в img src=", вот поэтому я не могу сообразить как отпарсить img src="

пробывал так, но не парсит
PHP код:
var
s:TStringStream;
data:TStringList;
st:String;
imgTMemoryStream;
otvet:String;
jpgTJpegImage;
begin
:= TStringStream.Create;
IdHTTP1.Get('http://wmmaks.ru/',s);
while 
Pos('img src=',st)>do begin
(Copy(st,Pos('img src=',st)+12,7));
IdHTTP1.Get('http://wmmaks.ru/'+st);
Delete(st,1Pos('img src=',st)+12);
jpg.LoadFromStream(img);
form10.image1.Picture.Assign(jpg);
jpg.Free;
img.Free;
end;
end
код страницы вот
PHP код:
<form action="login.php" method="post"
<
div id="form"
    <
table border="0" align="center" cellspacing="1" cellpadding="1"
            <
tr><td><b>Логин:</b></td></tr

        <
tr><td><input type="text" size="25" maxlength="25" name="username" id="username" onfocus="focus_username(this)" value="Логин" tabindex="1" /></td></tr

        <
tr><td><b>Пароль:</b></td></tr

        <
tr><td><input type="password" size="25" maxlength="25" name="password" id="password" onfocus="focus_password(this)" value="------------" tabindex="2" /></td></tr

        <
tr><td><b>Защитный код:</b></td></tr

        <
tr><td><img id="login" src="newcaptcha.php" width="80" height="20" border="0" align="middle" alt="" /><a href="javascript:refresh_on('login');"><img src="img/refresh.png" align="middle" width="18" height="18" alt="Обновить" title="Обновить" /></a><input type="text" size="5" maxlength="5" name="captcha" class="field" value="" /></td></tr
    </
table
</
div
<
center><input type="submit" class="button" value="Войти в аккаунт" onclick="return Formdata(this.form)" /></center
</
form
<
br /> 

Последний раз редактировалось bulldog5293; 20.08.2010 в 19:03.
bulldog5293 вне форума Ответить с цитированием
Старый 21.08.2010, 02:24   #5
Terikon
Форумчанин
 
Регистрация: 22.02.2009
Сообщений: 174
По умолчанию

Держи)

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
s,cap:string;
begin
s:=Memo1.Text;
   cap:=copy(s,pos('<img src="',s)+9,length(s)-pos('<img src="',s)+9);
   cap:=copy(cap,2,pos('align',cap));
   cap:=copy(cap,1,length(cap)-4);
Label1.Caption:=cap;
end;
end.
Terikon вне форума Ответить с цитированием
Старый 21.08.2010, 12:21   #6
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию

спс, за пример, но у меня выводится jpeg eror #33, хотя в uses вставил jpeg
bulldog5293 вне форума Ответить с цитированием
Старый 21.08.2010, 14:36   #7
Terikon
Форумчанин
 
Регистрация: 22.02.2009
Сообщений: 174
По умолчанию

Цитата:
Сообщение от bulldog5293 Посмотреть сообщение
спс, за пример, но у меня выводится jpeg eror #33, хотя в uses вставил jpeg
Показывай код, если ты используееш код из 4 поста то не удивительно что у тебя ошибка, там полно косяков, тебе с какого сайта нужно вытащить капчу?
Terikon вне форума Ответить с цитированием
Старый 21.08.2010, 18:30   #8
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию

сайт http://wmmaks.ru/index.php
код что выше писал
PHP код:
var 
s:TStringStream
data:TStringList
st:String
imgTMemoryStream
otvet:String
jpgTJpegImage
begin 
:= TStringStream.Create
IdHTTP1.Get('http://wmmaks.ru/',s); 
while 
Pos('img src=',st)>do begin 
(Copy(st,Pos('img src=',st)+12,7)); 
IdHTTP1.Get('http://wmmaks.ru/'+st); 
Delete(st,1Pos('img src=',st)+12); 
jpg.LoadFromStream(img); 
form10.image1.Picture.Assign(jpg); 
jpg.Free
img.Free
end
end
bulldog5293 вне форума Ответить с цитированием
Старый 21.08.2010, 21:39   #9
Terikon
Форумчанин
 
Регистрация: 22.02.2009
Сообщений: 174
По умолчанию

Я в упор не увидел кода который ты выложил в 4 посте, а ошибку выдаёт потому что картинка в формате png а ты её загружаеш как jpeg, в общем вот рабочий код, если у тебя delphi 9/2010 то в uses добавь pngimage, если ниже то качай эту библиотеку http://delphidevelop.ru/load/19-1-0-36

Код:
procedure TForm1.btn1Click(Sender: TObject);
var
img: TMemoryStream;
png: TPNGObject;
begin
idhtp1.Get('http://wmmaks.ru');
img:=TMemoryStream.Create;
idhtp1.Get('http://wmmaks.ru/logincap.php',img);
img.Position:=0;
png:= TPNGObject.Create;
png.LoadFromStream(img);
img1.Picture.Assign(png);
png.Free;
img.Free;
end;
end.
Terikon вне форума Ответить с цитированием
Старый 22.08.2010, 11:07   #10
DeDoK
Форумчанин
 
Аватар для DeDoK
 
Регистрация: 05.11.2007
Сообщений: 392
По умолчанию

а как допустим для цикла? когда надо много раз загрузить капчу?
где вписать rewrite ?
DeDoK вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JavaScript и капча SBK JavaScript, Ajax 1 19.08.2010 23:59
Капча zumm Общие вопросы Delphi 4 27.07.2010 12:36
Капча Astron Работа с сетью в Delphi 2 16.03.2010 15:44
Не отображается капча texno777 PHP 1 25.07.2009 21:46
капча DeDoK Работа с сетью в Delphi 9 09.07.2009 00:02