Connection Closed Gracefully в ВК на Indy

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by ange007, 9 Dec 2012.

  1. ange007

    ange007 Member

    Joined:
    26 Aug 2009
    Messages:
    28
    Likes Received:
    21
    Reputations:
    0
    Приветствую всех.
    Столкнулся в общем с "фигнёй" одной.

    Работаю с ВК через Indy.

    Code:
    begin
      if Assigned(FH) then
      begin
        try
         FH.FreeOnRelease;
         FH.Free;
        except
        end;
      end;
      {--//--}
      try
      FH := TidHTTP.Create;
      FH.OnWork := FHWork;
      FH.OnWorkBegin := FHWorkBegin;
      FH.OnWorkEnd := FHWorkEnd;
      FH.OnRedirect := FHRedirect;
      {-/-}
      FH.IOHandler := FS;
      //FH.ProtocolVersion := pv1_1;
      FH.AllowCookies := False;
      FH.RedirectMaximum := 3;
      FH.ReadTimeout := 30 * 1000;
      FH.ConnectTimeout := 30 * 1000;
      if FZLib then
      begin
       if Assigned(ZLib) then
       begin
        FH.Request.AcceptEncoding := 'gzip, deflate';
        FH.Compressor := ZLib
       end {else log('Ошибка! Компонент для GZip не создан!',4)};
      end;
      {-/-}
      FH.HandleRedirects := True;
      FH.HTTPOptions := [{hoForceEncodeParams,} hoKeepOrigProtocol, hoInProcessAuth];
      {-/-}
      FH.Request.Accept := 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
      //FH.Request.AcceptCharSet := 'windows-1251,utf-8;q=0.7,*;q=0.7';
      FH.Request.AcceptLanguage := 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3';
      FH.Request.Connection := 'keep-alive';
      FH.Request.ProxyConnection := 'keep-alive';
      FH.Request.CustomHeaders.Add('DNT: 1');
      //FH.Request.CustomHeaders.Add('X-Requested-With: XMLHttpRequest');
      FH.Request.BasicAuthentication := False;
      FH.Request.UserAgent := FUserAgent;
      {-/-}
      if (FProxyHost<>'') and (FProxyPort>0) then
      begin
        SSL.SSLOptions.Method := sslvSSLv23;
        SSL.SSLOptions.SSLVersions := [sslvSSLv23, sslvSSLv2, sslvSSLv3, sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2];
        {SSL.SSLOptions.Mode := sslmClient; SSL.SSLOptions.Mode := sslmUnassigned;}
        {SSL.SSLOptions.VerifyMode := [];
        SSL.SSLOptions.VerifyDepth := 2;
        SSL.Port := 443;
        SSL.DefaultPort := 0;}
        FH.IOHandler := SSL;
        {-/-}
        if FProxyTag=0 then
        begin
          if Length(FProxyLogin)>0 then
          begin
            FH.Request.BasicAuthentication := True;
            FH.ProxyParams.BasicAuthentication := True;
            FH.HTTPOptions := FH.HTTPOptions+[hoInProcessAuth];
            FH.OnProxyAuthorization := ProxyAuthorization;
            {-}
            FH.ProxyParams.ProxyUsername := FProxyLogin;
            FH.ProxyParams.ProxyPassword := FProxyPass;  
          end;
          {-}
          FH.ProxyParams.ProxyServer := FProxyHost;
          if FProxyPort>0 then FH.ProxyParams.ProxyPort := FProxyPort;
        end
        else if (FProxyTag=1) or (FProxyTag=2) then
        begin
          if not (Assigned(SI)) then SI := TIdSocksInfo.Create;
          if Length(FProxyLogin)>0 then
          begin
            SSL.PassThrough := True;
            SI.Authentication := saUsernamePassword;
          end else SI.Authentication := sanoAuthentication;
          SI.Host := FProxyHost;
          if FProxyPort>0 then SI.Port := FProxyPort;
          SI.Username := FProxyLogin;
          SI.Password := FProxyPass;
            if FProxyTag=1 then SI.Version := svSocks4;
            if FProxyTag=2 then SI.Version := svSocks5;
          SSL.TransparentProxy := SI;
        end;
      end;
      except end;
    
    Пытаюсь подрубиться через HTTP(s) прокси к ВК (POST запрос к https://login.vk.com/?act=login).
    Выходит чёрти что: http://clip2net.com/s/2AdiL
    Идёт соединение, несколько редиректов и Connection Closed Gracefully в итоге.

    Раньше вроде как всё работало.
    Но видимо я что-то где-то напортачил при исправлении других проблем.

    Подскажите, может кто знает.

    З.Ы. Советовать про переход на Synapse не нужно. Сам знаю. Но времени разбираться нету.
     
    #1 ange007, 9 Dec 2012
    Last edited: 9 Dec 2012