[Delphi+IdHTTP] Авторизация Twitter

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by fenixelite, 1 Feb 2011.

  1. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    Срочно, помогите с авторизацией на Твиттере.

    Вот мой код, но он при отправке на https постоянно возвращает 301.
    Code:
      token := HTTP.Get('http://twitter.com');
      Delete(token, 1, Pos('authenticity_token', token) + 40);
      token := Copy(token, 1, Pos('"', token) - 1);
    
      PostData.Add('authenticity_token=' + token);
      PostData.Add('return_to_ssl=false');
      PostData.Add('redirect_after_login=/');
      PostData.Add('session[username_or_email]=' + login);
      PostData.Add('session[password]=' + pass);
      HTTP.Post('https://twitter.com/sessions', PostData, ResponseData);
    И как назло, толи со снифером что-то толи что. Но при отправке на https я не вижу своего запроса... Т.е даже не знаю, что я не так отправляю..
     
  2. PaCo

    PaCo Elder - Старейшина

    Joined:
    6 Feb 2008
    Messages:
    436
    Likes Received:
    138
    Reputations:
    25
    Список кодов состояния HTTP
    Можно установить прокси в настройках - например fiddler ну или хардкорный вариант - Echo Mirage.
     
    #2 PaCo, 1 Feb 2011
    Last edited: 1 Feb 2011
  3. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    Коды я и так знаю.
    Поставил fiddler, и все равно https запрос не показывается.
    Вот еще кусок кода забыл вчера показать
    Code:
      HTTP := TIdHTTP.Create(nil);
      Handler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
      HTTP.IOHandler := Handler;
    
     
  4. petryxa-mixa

    petryxa-mixa Member

    Joined:
    8 Jun 2010
    Messages:
    174
    Likes Received:
    7
    Reputations:
    0
    мне интересен тоже данный вопрос
    вот тема
    https://forum.antichat.ru/thread256524.html
     
    #4 petryxa-mixa, 1 Feb 2011
    Last edited: 1 Feb 2011
  5. Toster

    Toster New Member

    Joined:
    31 Jan 2011
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    IdCookieManager подключен (AllowCookie = true)?
    пробовал в http.request userAgent менять?

    или может инди старая?
     
  6. 090808

    090808 Member

    Joined:
    15 Mar 2009
    Messages:
    171
    Likes Received:
    46
    Reputations:
    10
    Ну так поделись с людьми если решен :)
     
  7. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    1. При POST запросе, IdHTTP в поле Host, указывал еще и порт (serverort). В моем случае это вызывало проблемы. В IdHTTP.Pas комментим как тут.
    Code:
    
    if FURI.Port <> IntToStr(IdPORT_HTTP) then begin ARequest.Host := FURI.Host;// + ':' + FURI.Port; {do not localize} end else begin ARequest.Host := FURI.Host; end;
    


    2. Настройки IdHTTP
    Code:
    
    
    HTTP := TIdHTTP.Create(nil); Handler := TIdSSLIOHandlerSocketOpenSSL.Create(nil); Handler.SSLOptions.Method := sslvSSLv23; HTTP.IOHandler := Handler; HTTP.ProtocolVersion := pv1_0; HTTP.HttpOptions := [hoKeepOrigProtocol,hoInProcessAuth];
    
    
    Ну а https запросы у меня до сих пор не отображаются :)))
     
  8. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    Появилась еще одна проблема :)

    Есть такой кусок кода :
    Code:
      repeat
        Result := True;
        try
          HTTP.Post('https://twitter.com/sessions', PostData, ResponseData);
        except
          cs.Enter;
            Form1.PGetSocksProxy(sock, handler);
          cs.Leave;
          Result := False;
        end;
      until Result = True;
    
    Проблема в том, что после нескольких плохих проксей подряд, запросы перестают отправляется вообще(т.е моментально Connection Closed Gracefully ), хотя прокси меняются каждый раз.

    Связка для работы с сетью выглядит так :
    Code:
      HTTP := TIdHTTP.Create(nil);
      HTTP.ProtocolVersion := pv1_0;
      HTTP.HttpOptions := [hoKeepOrigProtocol,hoInProcessAuth];
      Handler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
      Handler.SSLOptions.Method := sslvSSLv3;
      HTTP.IOHandler := Handler;
    
      sock := TIdSocksInfo.Create;
      sock.Authentication := saNoAuthentication;
      sock.Version := svSocks5;
    
     
  9. Eicca

    Eicca New Member

    Joined:
    19 Jul 2010
    Messages:
    13
    Likes Received:
    1
    Reputations:
    0
    Похоже на то, что твой провайдер закрывает одновременные подключения. Т.е. после "плохих" проксей соединение не закрывается и еще висит.
    Это только предположение.
    Чтобы отображались https в фиддлере включи в опциях галочку. Или могу посоветовать burp suite proxy, если фиддлер по каким-то причинам не пашет.
     
  10. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    Eicca,
    Галочку естественно включал..) Да не в том суть, у меня запросы уже правильно все написаны. = )

    А вот насчет соединения хз.. наверное просто при возникновении такой траблы буду убивать поток, и запускать новый...

    P.S Еще вопрос. По какой причине поток может сам по себе завершиться? Просто замечал, что поток сам по себе умирает во время выполнения..
     
    #10 fenixelite, 3 Feb 2011
    Last edited: 3 Feb 2011