Привет всем. Уже неделю вожусь с проблемой. Есть программа, работающая с антигейтом, уже годами все работало как часы, но вот я решил подключить свою программу к CapMonster'у, и по какой-то причине он просто отказывается обрабатывать картинки. Он их вроде как принимает, потому что на первой демке кончился лимит в 1к бесплатных капч, но в логе вообще не отображает картинки. В ответ же приходит "ERROR"(GET запрос капчи нормально обрабатывается, а Post нет)
Возможно, проблема в кодировке, в CapMonster используется 1251, но я не знаю точно какая в Delphi, а точнее в MultiPartFormData. Избавился от проблемы, что idhttp отключает протокол 1.1 и включает 1.0. Но это не помогло. Пробовал подключать StringStream. Но видимо что-то делаю не так.
Прикрепляю два файла, в первом Raw Stream от программы на C++, в которой все работает. Второй от моей программы.
Вот примерный исходник, просто их уже вариантов 10-15 было:
Возможно, проблема в кодировке, в CapMonster используется 1251, но я не знаю точно какая в Delphi, а точнее в MultiPartFormData. Избавился от проблемы, что idhttp отключает протокол 1.1 и включает 1.0. Но это не помогло. Пробовал подключать StringStream. Но видимо что-то делаю не так.
Прикрепляю два файла, в первом Raw Stream от программы на C++, в которой все работает. Второй от моей программы.
Вот примерный исходник, просто их уже вариантов 10-15 было:
Код:
MultiData:=Tidmultipartformdatastream.Create;
MultiData.AddFile('file', 'captcha_mail.ru_1443552073360-759.jpg', 'image/jpeg');
MultiData.AddFormField('method','post');
MultiData.AddFormField('key', '593cdcc03cb415ab6ac571e68945ade5');
MultiData.AddFormField('is_russian', IntToStr(0));
MultiData.AddFormField('phrase', IntToStr(0));
MultiData.AddFormField('regsense', IntToStr(1));
MultiData.AddFormField('numeric', IntToStr(0));
MultiData.AddFormField('min_len', IntToStr(0));
MultiData.AddFormField('max_len', IntToStr(0));
MultiData.AddFormField('soft_id','381');
try
ww:=true;
while ww=true do
begin
try
idHTTP3.Post('http://antigate.com/in.php',multidata);
ss:=Copy(ss,4,maxint);
ww:=False;
except
ww:=True;
end;
end;
finally
MultiData.Free;
end;
m:=true;
while m=TRUE do
begin
sleep(5000);
zz:=idHTTP3.Get('http://antigate.com/res.php?key=593cdcc03cb415ab6ac571e68945ade5&action=get&id='+ss);
if zz[1]='O' then
begin
zz:=Copy(zz,4,Length(zz));
m:=False;
end;
end;
Вложения
-
10,5 КБ Просмотры: 608
-
11 КБ Просмотры: 630