idhttp парсит не все куки

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by realcoder, 15 Jun 2011.

  1. realcoder

    realcoder Member

    Joined:
    9 Dec 2010
    Messages:
    226
    Likes Received:
    11
    Reputations:
    4
    в общем пишу авторегер для Mywot.com
    и при передачи пост запроса ответ пишется типа куки не включены(хотя allowcoockies стои true) и при отправке пост запроса передается только одна кука, хотя в заголовке 3 setcoockie.
    вот что отправляется:
    Code:
    GET /en/signup HTTP/1.1
    Content-Type: text/html
    Host: www.mywot.com
    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-Language: ru-RU,ru;q=0.9,en;q=0.8
    User-Agent: Opera/9.80 (Windows NT 6.1; U; MRA 5.8 (build 4133); ru) Presto/2.8.131 Version/11.11
    
    вот что приходит в ответ:
    Code:
    HTTP/1.1 200 OK
    Set-Cookie: SESSf6ce7e3db235723091e59a653e7d96f2=mqsmnh78m6s5736sd4gma1ksv3; path=/; domain=.mywot.com
    Set-Cookie: wot_lang=en; expires=Mon, 12-Dec-2011 07:53:24 GMT; path=/
    Set-Cookie: fbcsrf_122398707842455=7f31f13c21f1fae05f81c31ec1926722; expires=Wed, 15-Jun-2011 08:53:24 GMT
    Expires: Sun, 19 Nov 1978 05:00:00 GMT
    Last-Modified: Wed, 15 Jun 2011 07:53:24 GMT
    Cache-Control: store, no-cache, must-revalidate
    Cache-Control: post-check=0, pre-check=0
    Content-Type: text/html; charset=utf-8
    X-FRAME-OPTIONS: DENY
    Transfer-Encoding: chunked
    Date: Wed, 15 Jun 2011 07:53:24 GMT
    Server: lighttpd
    
    и при отправке пост запроса отправляется только одна кука:
    Code:
    POST /en/signup HTTP/1.0
    Connection: keep-alive
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 413
    Host: www.mywot.com
    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-Language: ru-RU,ru;q=0.9,en;q=0.8
    User-Agent: Opera/9.80 (Windows NT 6.1; U; MRA 5.8 (build 4133); ru) Presto/2.8.131 Version/11.11
    Cookie: wot_lang=en
    
    name=Edit1&mail=Edit2&pass[pass1]=Edit3&pass[pass2]=Edit3&recaptcha_challenge_field=03AHJ%5FVuvmdWnOgbFkqtKpQEcga729WrDycWEIxEkbebtLXIEIfsWMGFtHk3pLXHHC8pl5jLPUiQRidXotP9pf3DbGCYaDhrnf9LOAJvQk3E3MkXp6MhPsHW%5FIqvgchennYSjUzDdbyA3dmSP5ZvRuW1SwKrjD0XuZww&recaptcha_response_field=Edit4&captcha_token=36b08067ab8fe43f4326124eeafd982&terms=1&op=Create%2Bnew%2Baccount&robots=&form_id=wotuser%5Faccountform%5Fregister&
    
    вот код:
    Code:
    var
      Form1: TForm1;
      token:string;
      var sesid,chlng:string;
    implementation
    
    {$R *.dfm}
    function parse(s,begs,ends:string):string;
    var ts:string;
    begin
    ts:=copy(s,1,pos(ends,s)-1);
    result:=copy(ts,pos(begs,ts)+length(begs),length(ts)-pos(begs,ts)-1);
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    var str:tmemorystream;
    jpg:Tjpegimage;
    begin
    memo1.Text:=utf8toansi(idhttp1.Get('http://www.mywot.com/en/signup'));
    sesid:=parse(memo1.Text,'<div class="description"><script type="text/javascript" src="','"></script>');
    memo2.text:=utf8toansi(idhttp1.Get(sesid));
    chlng:=memo2.Text;
    delete(chlng,1,pos('challenge : ',chlng)+length('challenge : '));
    chlng:=copy(chlng,1,pos(',',chlng));
    chlng:=copy(chlng,1,length(chlng)-2);
    str:=tmemorystream.Create;
    idhttp1.get('https://www.google.com/recaptcha/api/image?c='+chlng,str);
    str.Position:=0;
    jpg:=Tjpegimage.create;
    jpg.LoadFromStream(str);
    image1.Picture.Assign(jpg);
    jpg.Free;
    str.Free;
    token:=memo1.text;
    delete(token,1,pos('id="edit-captcha-token" value="',token)+length('id="edit-captcha-token" value="'));
    token:=copy(token,1,pos('"',token)-1);
    
    end;
    
    procedure TForm1.Button2Click(Sender: TObject);
    var pd:tstringlist;
    begin
    pd:=tstringlist.Create;
    pd.Clear;
    pd.Add('name='+edit1.Text);
    pd.Add('mail='+edit2.Text);
    pd.Add('pass[pass1]='+edit3.Text);
    pd.Add('pass[pass2]='+edit3.Text);
    pd.Add('recaptcha_challenge_field='+chlng);
    pd.Add('recaptcha_response_field='+edit4.Text);
    pd.Add('captcha_token='+token);
    pd.Add('terms=1');
    pd.Add('op=Create+new+account');
    pd.Add('robots=');
    pd.Add('form_id=wotuser_accountform_register');
    memo3.Text:=idhttp1.Post('http://www.mywot.com/en/signup',pd);
    end;
    

    собствено вопрос: как сделать чтобы в POST запросе передавались ВСЕ куки.
    может быть это глюк библиотеки и стоит перейти на indy 10?
    а то с сокетами возиться и вручную куки выдирать както не охото.
     
  2. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Инфа 100%.
     
  3. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    Ну а что ты хотел то... прикрути TidCookieManager и будет все окей.
     
  4. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    http://parsing-and-i.blogspot.com/2009/05/idhttppost.html - тут пример
     
  5. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    а с чего ты взял, что он без кукиманагера пытатся?
    Честно говоря не пробовал, но мне кажется, что куки тогда вообще не должны приниматься...
     
  6. 1n0y

    1n0y Active Member

    Joined:
    9 May 2009
    Messages:
    272
    Likes Received:
    276
    Reputations:
    2
    да, меня тоже уже порядком подзае.. эта инди с куками. ставлю всегда их в ручную, примерно так:

     
    1 person likes this.
  7. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    Согласен что indy 9 - глюченная, но она не разу не помешала мне нормально работать с куками. Если делать все верно по документациям, все будет ровно.
     
  8. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    у меня была ситуация, когда не мог залогиниться на сайт. ооочень долго мучился с той же проблемой, что у ТС пока не обновил Indy. и ничего не меняя все заработало.
     
  9. realcoder

    realcoder Member

    Joined:
    9 Dec 2010
    Messages:
    226
    Likes Received:
    11
    Reputations:
    4
    ок. поставлю indy 10.
    насчет куки менеждера я его поставил и привязал к idhttp в свойствах.
    за пример:

    +5 1n0y'ю
     
  10. realcoder

    realcoder Member

    Joined:
    9 Dec 2010
    Messages:
    226
    Likes Received:
    11
    Reputations:
    4
    поставил radstudio 2010 и теперь другая проблема возникла: не работает ssl. хотя в delphi 7 работало. т.к. в indy 10 вместо idssliohandler компонент idssliohandleropenssl версию ssl указал туже самую (свойство method) - ssl3
    дллки теже что изспользовал в проэкте delphi 7 и настроил idhttp точно также как в старом проэкте. что только не менял - не работает ssl - возникает exception "could not load ssl library". ос win7 даже не знаю как быть.
     
  11. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Dll'ки обнови с сайта Indy, ща ссылочку найду.
    http://indy.fulgan.com/SSL/
    последнюю версию бери.
     
    1 person likes this.