[ Delphi / Pascal ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by banned, 6 May 2007.

Thread Status:
Not open for further replies.
  1. Vlad&slav

    Vlad&slav Member

    Joined:
    1 Jan 2009
    Messages:
    207
    Likes Received:
    41
    Reputations:
    9
    [​IMG]
    Ктонить знает как поправить?
     
  2. assdancer

    assdancer New Member

    Joined:
    9 Jan 2010
    Messages:
    2
    Likes Received:
    2
    Reputations:
    0
    ERROR_SHARING_VIOLATION: Файл существует, но используется другим приложением.
     
  3. wolmer

    wolmer Member

    Joined:
    12 May 2009
    Messages:
    438
    Likes Received:
    97
    Reputations:
    9
    Попробуй

    Code:
    {$I-}
    Rewrite(f);
    {$I+}
     
  4. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    Блин, ничего не пойму с авторизацией.... Ну не проходит она... Редиректит на страницу с профилем, но вход не осуществлен(т.е на странице с моим профилем: "Чтобы увидеть полную информацию о пользователе, войдите в систему. ") Вроде дельфи уже другую скачал, но все тоже самое :( Код авторизации в посте №#6737(но в коде я уверен на 99%, т.к неделю назад им авторизовывался)... Проблема с куки насколько я понял, в cookiecollection после авторизации только :

    Code:
    l=xxxxxxx; path=/; domain=login.vk.com
    p=ca505b639ddeba5a27cdf28138eafd6bba05; path=/; domain=login.vk.com
    Надеюсь на вашу помощь. Помощь могу оплатить(просто срочно нужно)....
     
  5. heretic1990

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

    Joined:
    2 Jul 2008
    Messages:
    487
    Likes Received:
    182
    Reputations:
    5
    fenixelite, попробуй так
    Code:
    function GetSubStr(InputStr, BeginStr, EndStr: String): String;
    var
      s: String;
      sp, ep: Integer;
    begin
      Result := '';
      if pos(BeginStr, InputStr) <> 0 then begin
        sp := pos(BeginStr, InputStr)+length(BeginStr);
        s := copy(InputStr,sp,length(InputStr));
        ep := pos(EndStr,s)-1;
        Result := copy(s,1,ep);
      end;
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
      mp: TIdMultiPartFormDataStream;
    begin
      IdHTTP1.Get('http://vkontakte.ru');
      IdHTTP1.Request.Referer := 'Referer: http://vkontakte.ru/login.php';
    
      mp := TIdMultiPartFormDataStream.Create;
      mp.AddFormField('op', 'a_login_attempt');
      Memo1.Lines.Text := IdHTTP1.Post('http://vkontakte.ru/login.php', mp);
      Memo1.Lines.SaveToFile('c:\111.html');
      mp.Free;
    
      mp := TIdMultiPartFormDataStream.Create;
      mp.AddFormField('act', 'login');
      mp.AddFormField('success_url', '');
      mp.AddFormField('fail_url', '');
      mp.AddFormField('try_to_login', '1');
      mp.AddFormField('to', '');
      mp.AddFormField('vk', '');
      mp.AddFormField('email', Edit1.Text);
      mp.AddFormField('pass', Edit2.Text);
      mp.AddFormField('expire', '1');
      Memo1.Lines.Text := IdHTTP1.Post('http://login.vk.com', mp);
      Memo1.Lines.SaveToFile('c:\222.html');
      mp.Free;
    
      mp := TIdMultiPartFormDataStream.Create;
      mp.AddFormField('op', 'slogin');
      mp.AddFormField('redirect', '1');
      mp.AddFormField('expire', '1');
      mp.AddFormField('to', '');
      mp.AddFormField('s', GetSubStr(Memo1.Text, 'id=''s'' value=''', ''''));
      mp.AddFormField('email', '[email protected]');
      mp.AddFormField('pass', 'flouer');
      mp.AddFormField('expire', '1');
      Memo1.Lines.Text := IdHTTP1.Post('http://vkontakte.ru/login.php', mp);
      Memo1.Lines.SaveToFile('c:\333.html');
      mp.Free;
    
      if pos('(это Вы)', Memo1.Text) > 0 then
        MessageDlg('Залогинились.'+#13#10+GetSubStr(Memo1.Text, '<h1> <b>Online</b>', '<span>'), mtInformation, [mbOK], 0)
      else
        MessageDlg('Не залогинились!', mtInformation, [mbOK], 0);
    end;
     
  6. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    heretic1990, да тоже самое все... проблема с куками... Remixsid не приходит, а без него не авторизоваться..... Щас попробую indy обновить..
     
  7. heretic1990

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

    Joined:
    2 Jul 2008
    Messages:
    487
    Likes Received:
    182
    Reputations:
    5
    на новой инди у меня всё работало хорошо.
     
  8. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    heretic1990, да и TrueBit через мой код авторизовался... ладно щас инди обновить попробую..
     
  9. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    Обновил... не помогло... я в шоке Оо
    У кого то еще решения есть? :confused:
     
  10. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Неужели так трудно додуматься самому нужные кукисы обрабатывать, а не надеяться на кривой менеджер, который подводит на каждом втором сайте?
     
  11. Скотти

    Скотти Member

    Joined:
    17 Sep 2009
    Messages:
    23
    Likes Received:
    8
    Reputations:
    0
    Кто-нибудь может дать пример кода для работы через winsock2 с socks5||proxy?
     
  12. RedFern.89

    RedFern.89 Member

    Joined:
    20 Jan 2010
    Messages:
    575
    Likes Received:
    48
    Reputations:
    0
    ололо!1!111!!111

    fenixelite, исправь процедуру DoAdd в файле idCookieManager.pas и сам файл перемести в папку lib. Код процедуры:

    Только в версиях 9.x.x

    Code:
    procedure TIdCookieManager.DoAdd(ACookie: TIdCookieRFC2109; ACookieText, AHost: String);
    Var
      LDomain: String;
    begin
      ACookie.CookieText := ACookieText;
    
      if Length(ACookie.Domain) = 0 then LDomain := AHost
      else LDomain := ACookie.Domain;
    
      ACookie.Domain := LDomain;
    
    [b]// Если есть точка в начале домена, удаляем ее[/b]
      If ACookie.Domain[1] = '.' Then
       ACookie.Domain := Copy(ACookie.Domain, 2, Length(ACookie.Domain));
      
      if ACookie.IsValidCookie(AHost) then
      begin
        if DoOnNewCookie(ACookie) then
        begin
          FCookieCollection.AddCookie(ACookie);
        end
        else begin
          ACookie.Collection := nil;
          ACookie.Free;
        end;
      end
      else begin
        ACookie.Free;
      end;
    end;
    
     
    1 person likes this.
  13. crazyserega1994

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

    Joined:
    25 Dec 2007
    Messages:
    27
    Likes Received:
    3
    Reputations:
    0
    Что значит знак # в делфи?
     
  14. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    RedFern.89, Огромное спасибо. Все работает :)
     
  15. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Код символа ACSII
    Например,
    ShowMessage(#111#107);
    покажет 'ok'
     
  16. RedFern.89

    RedFern.89 Member

    Joined:
    20 Jan 2010
    Messages:
    575
    Likes Received:
    48
    Reputations:
    0
    кстати! уважаемый GhostOnline прав. Ведь выдрать куки из заголовков - это не так уж и сложно. Особенно для вк. Тебе понадобица только remixsid.
     
  17. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    RedFern.89, ВЫдирать их надо было я так понимаю из RowHeaders??
     
  18. heretic1990

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

    Joined:
    2 Jul 2008
    Messages:
    487
    Likes Received:
    182
    Reputations:
    5
    надо пример проверки на существование url, в нете есть функции, но что то они не работают, всё время пишет что url существует((
    как это реализовать?, желательно на инди.
     
  19. patcher

    patcher Banned

    Joined:
    15 Dec 2009
    Messages:
    190
    Likes Received:
    37
    Reputations:
    10
    Вот, завалялась у меня, когда-то в инете нашел, вроде работает:
    Code:
    uses wininet;
    
    .............................................................
    
    function CheckUrl(url: string): boolean;
    var
      hSession, hfile, hRequest: hInternet;
      dwindex, dwcodelen: dword;
      dwcode: array [1..20] of char;
      res: pchar;
    begin
      if pos('http://', lowercase(url)) = 0 then
        url := 'http://'+url;
      Result := false;
      hSession := InternetOpen('InetURL:/1.0', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
      if assigned(hsession) then
      begin
        hfile := InternetOpenUrl(hsession, pchar(url), nil, 0, INTERNET_FLAG_RELOAD, 0);
        dwIndex := 0;
        dwCodeLen := 10;
        HttpQueryInfo(hfile, HTTP_QUERY_STATUS_CODE, @dwcode, dwcodeLen, dwIndex);
        res := pchar(@dwcode);
        result := (res = '200') or (res = '302');
        if assigned(hfile) then
          InternetCloseHandle(hfile);
        InternetCloseHandle(hsession);
      end;
    end;
    
     
  20. heretic1990

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

    Joined:
    2 Jul 2008
    Messages:
    487
    Likes Received:
    182
    Reputations:
    5
    patcher, его я уже видал, у меня всегда показывает что линк существу, даже когда его нет((
     
Thread Status:
Not open for further replies.