Новичок
Профиль
Группа: Участник
Сообщений: 38
Регистрация: 16.6.2010
Репутация: нет Всего: нет
|
Здравствуйте! Помогите решить. В общем суть такова, в потоке инди вешаеться после get-запроса, причем в снифе я вижу: Код | GET /страница.html HTTP/1.1 Connection: keep-alive Content-Type: text/html Date: Sat, 30 Dec 1899 03:00:00 +0300 Expires: Sat, 30 Dec 1899 03:00:00 +0300 Cookie: Host: сайт.ru Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1 Accept-Encoding: deflate Accept-Language: ru-RU,ru;q=0.9,en;q=0.8 User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98) If-Modified-Since: Sat, 30 Dec 1899 03:00:00 +0300
|
только это не просто заголовок!!!!!! Это POST!!!!!! Вот код: Код | procedure CapthaThread.Execute; var i: integer; rs: TMemoryStream; CaptchaID: Integer; CaptchaRetPath, CaptchaKey, CaptchaText, AntiGateKey: String; S,url:String;
begin IdHTTP1:=TIdHTTP.Create(nil); IdHTTP1.Request.Accept:='text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1'; IdHTTP1.Request.AcceptEncoding:='deflate'; IdHTTP1.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)'; IdHTTP1.Request.AcceptLanguage := 'ru-RU,ru;q=0.9,en;q=0.8'; IdHTTP1.Request.Connection := 'keep-alive'; IdHTTP1.CookieManager:=IdCookieManager; IdHTTP1.AllowCookies:=True; IdHTTP1.HandleRedirects:=True; IdHTTP1.RedirectMaximum:=10; IdHTTP1.ProxyParams.ProxyServer:=FAddres; IdHTTP1.ProxyParams.ProxyPort:=FPort; IdHTTP1.Request.AcceptEncoding:='deflate';
rs:=TMemoryStream.Create; url:='http://сайт.ru/getcaptcha'; try S:=IdHTTP1.Get(url,rs);//ВОТ ТУТ ВИСНЕТ finally end;
CaptchaText:=''; while Length(CaptchaText)<>6 do CaptchaID:=RecognizeAG(rs,AntiGateKey,CaptchaText,6,6,1);
url:='http://сайт.ru/check?rep='+trim(CaptchaText); try S:=IdHTTP1.Get(url);//ВОТ ТУТ ВИСНЕТ finally IdHTTP1.DisconnectSocket; FreeAndNil(IdHTTP1); end; end;
function CapthaThread.RecognizeAG( ImageData: TMemoryStream; AGKey: String; var CaptchaRes: String; MinLen: integer=0; MaxLen: integer=0; Numeric: integer=0; Phrase: integer=0; RegSense: integer=0; Calc: integer=0; Russian: integer=0 ): Integer; var Bound, ftype: String; s, CaptchaID: String; i: Integer; Image: TMemoryStream; ICaptchaID: Integer; CaptchaRetPath,CaptchaText, AntiGateKey, CaptchaKey: String; formdata:TIdMultiPartFormDataStream; begin IdHTTP2:=TIdHTTP.Create(nil); Result := 0;
formdata:=TIdMultiPartFormDataStream.Create; ImageData.SaveToFile('image.jpg');
formdata.AddFormField('key',AGKey); formdata.AddFormField('soft_id','248'); formdata.AddFormField('min_len', '6'); formdata.AddFormField('max_len', '6'); formdata.AddFormField('numeric', '1'); formdata.AddFormField('method', 'post'); formData.AddFile('file','image.jpg','');
CaptchaText:=IdHTTP2.Post('http://antigate.com/in.php',formData); if CaptchaText<>'' then begin s := CaptchaText; CaptchaRes := s; CaptchaID := ''; if (Pos('ERROR_', s) < 1) then begin if (Pos('OK|', s) > 0) then CaptchaID := StringReplace(s, 'OK|', '', [rfReplaceAll]); if (CaptchaID <> '') then begin Result := StrToInt(CaptchaID); for i := 0 to 20 do begin Sleep(3000); s:=IdHTTP2.Get('http://antigate.com/res.php?key=' + AGKey + '&action=get&id=' + CaptchaID); if s<>'' then begin if (Pos('ERROR_', s) > 0) then begin CaptchaRes := s; break; end; if (Pos('OK|', s) > 0) then begin CaptchaRes := StringReplace(s, 'OK|', '', [rfReplaceAll]); break; end; end; CaptchaRes := 'ERROR_TIMEOUT'; end; end else CaptchaRes := 'ERROR_BAD_CAPTCHA_ID'; end; end else CaptchaRes := 'ERROR_CONNECT'; FreeAndNil(formdata); IdHTTP2.DisconnectSocket; FreeAndNil(IdHTTP2); end;
|
Так вот если не вызывать RecognizeAG, то отрабатывает нормально, а так, полный запрос Код | GET /check?rep=123456 HTTP/1.1 Connection: keep-alive Content-Type: text/html Date: Sat, 30 Dec 1899 03:00:00 +0300 Expires: Sat, 30 Dec 1899 03:00:00 +0300 Cookie: Host: сайт.ru Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1 Accept-Encoding: deflate Accept-Language: ru-RU,ru;q=0.9,en;q=0.8 User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98) If-Modified-Since: Sat, 30 Dec 1899 03:00:00 +0300
GET /страница.html HTTP/1.1 Connection: keep-alive Content-Type: text/html Date: Sat, 30 Dec 1899 03:00:00 +0300 Expires: Sat, 30 Dec 1899 03:00:00 +0300 Cookie: Host: сайт.ru Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1 Accept-Encoding: deflate Accept-Language: ru-RU,ru;q=0.9,en;q=0.8 User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98) If-Modified-Since: Sat, 30 Dec 1899 03:00:00 +0300
|
Ответ Код |
HTTP/1.1 302 Found Set-Cookie: Cookie1=123456; domain=.сайт.ru; path=/; expires=Mon, 10-Sep-2012 22:45:14 GMT Location: http://сайт.ru/страница.html Transfer-Encoding: chunked
0
|
и дальше после отправки запроса ничего не происходит, дебагер стоит на строке S:=IdHTTP1.Get(url); и ждет чего-то, не выдавая ошибок.
|