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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.07.2011, 14:44   #1
Softolab.org
Новичок
Джуниор
 
Регистрация: 10.07.2011
Сообщений: 2
Восклицание Капча Яндекса

Встретился со второй проблемой: не посылается нормально ответ из антигейта в поле для капчи яндекса.

Код:
Код:
var i,a,c,b,g,o,y,j,k,p,t,h,pr,tic,ya,la,s,n,cc:string;
R,m: Integer;
Item: TListItem;
list:tstringlist;
fs:tfilestream;
begin
for R := 0 to Form2.Memo1.Lines.Count - 1 do
begin
o:=Form2.Memo1.Lines.Strings[R];
list:=tstringlist.create;
list.text:=Form2.idhttp1.get('http://yandex.ru/yandsearch?serverurl='+o);
list.text:=Utf8ToAnsi(list.text);
for m:=0 to list.count-1 do
if pos('<img src="',list.strings[m])>0 then
begin
s:=copy(list.strings[m],pos('<img src="',list.strings[m])+17,(pos('" class',list.strings[m]))-(pos('<img src="',list.strings[m])+17));
s:='http://'+s;
try
fs:=tfilestream.create(extractfilepath(Application.ExeName)+'captcha.gif',fmcreate);
Form2.IdHTTP1.Get(s,fs);
finally
fs.free;
Form2.rsltedit.Text:='разгадываем капчу...';
Form2.rsltedit.Text:=recognize('captcha.gif',Form2.apikeyedit.Text,false,false,false,0,0);
end;
s:=StringReplace(s,'yandex.ru/','',[rfReplaceAll]);
s:=StringReplace(s,'http://','',[rfReplaceAll]);
j:=Form2.rsltedit.Text;
n:=Form2.rsltedit.Text;
if Form2.rsltedit.Text <> 'разгадываем капчу...' then
cc:=Form2.idhttp1.get('http://yandex.ru/checkcaptcha?key='+s+'&retpath=http://yandex.ru/yandsearch?serverurl='+o+'&rep='+n);
cc:=Utf8ToAnsi(cc);
Form2.Memo2.Text:=cc;
Form2.Memo3.Text:='http://yandex.ru/checkcaptcha?key='+s+'&retpath=http://yandex.ru/yandsearch?serverurl='+o+'&rep='+n;
как видно, переменная cc должна присваивать страницу с введённой капчей, но WTF??? всё время пишет вы ввели неправильный код, что делать, подскажите пожалуйста?
Softolab.org вне форума Ответить с цитированием
Старый 10.07.2011, 15:56   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

Код:
var i,a,c,b,g,o,y,j,k,p,t,h,pr,tic,ya,la,s,n,cc:string;
Я бы тоже ничего не понял...


Посмотрите как браузер работает с капчей и яндексом... может что-то меняется. Вы открываете 1 раз соединение. Гребёте капчу, обработываете, открываете соединение, вводите код, но о боже, капча то уже другая.

Последний раз редактировалось Человек_Борща; 10.07.2011 в 16:02.
Человек_Борща вне форума Ответить с цитированием
Старый 10.07.2011, 21:24   #3
)Игнат(
Форумчанин
 
Регистрация: 06.01.2008
Сообщений: 180
По умолчанию

Во-первых, вам необходимо оформить код, чтобы он был читабельным
Во-вторых вам необходимо сформировать и отправить POST-запрос.
)Игнат( вне форума Ответить с цитированием
Старый 11.07.2011, 19:11   #4
Softolab.org
Новичок
Джуниор
 
Регистрация: 10.07.2011
Сообщений: 2
По умолчанию

Цитата:
Сообщение от )Игнат( Посмотреть сообщение
Во-первых, вам необходимо оформить код, чтобы он был читабельным
Во-вторых вам необходимо сформировать и отправить POST-запрос.
капча тут отправляется гет запросом.
Softolab.org вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Авира ругается на рекламу яндекса Гром Софт 2 07.06.2011 06:50
WinInet страница с Яндекса не загружается полностью Son Работа с сетью в Delphi 0 18.04.2011 20:50
На карту Яндекса из БД Makarus Microsoft Office Access 0 23.12.2010 01:12
свистнуть погоду у яндекса RUSt88 Общие вопросы C/C++ 3 09.01.2010 18:10
Создание катры мира (от Яндекса) с помощью Дельфи Alex Cones Общие вопросы Delphi 2 27.05.2009 09:16