HTTP.AllowCookies:=false; HTTP.Request.CustomHeaders.Clear; HTTP.Request.CustomHeaders.Add('Cookie: remixsid=' + куки);
Я вот так шлю запрос, куда мне нужно это вставить??? PHP: Var Params:TStringList; Responseres:WideString ; begin Params:= TStringList.Create; Params.Add('c[country]=1'); Params.Add('c[name]=1'); Params.Add('c[section]=people'); // Params.Add('has_more:true'); Params.Add('offset:0'); Responseres:=IdHTTP1.Post('http://vkontakte.ru/al_search.php',Params); Memo1.Text:=Responseres; Params.free; end; И где мне взять куки чтобы их отправить???
Вот нашел код на ачате, немного добавил, вот: PHP: function SetCookies(Raw: string): string; var PosCook: Integer; Cook: string; begin Cook:= ''; Cook:= 'Cookie: '; PosCook:= Pos('Set-Cookie:', Raw); while PosCook<>0 do begin Delete(Raw, 1, PosCook-1); Cook:= Cook + Copy(Raw, 12, Pos(';', Raw)-11); Delete(Raw, 1, Pos(';', Raw)); PosCook:= Pos('Set-Cookie:', Raw); end; Result:= Cook+'remixlang=0;'; end; procedure TForm1.Button1Click(Sender: TObject); var http: TIdHTTP; Data: TStringList; Cookies: string; begin HTTP:= TIdHTTP.Create(Self); HTTP.HandleRedirects:= True; HTTP.Request.UserAgent:= 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.186 Safari/535.1'; try HTTP.Get('http://login.vk.com/?act=login&q=1&al_frame=1&from_host=vkontakte.ru&email='+Edit1.Text+'&pass='+Edit2.Text); except end; Cookies:= SetCookies(HTTP.Response.RawHeaders.Text); if Pos('remix', Cookies)<>0 then ShowMessage('Авторизовались'); HTTP.Free; end; Этот код подойдет чтобы авторизоватся и отправить куки, или как тут нужно сделать???
Что-то много в последнее время стало тем аля: "Как отправить...", "Спиз@ил код, исправьте ошибки" и т.д. Начните вы хотя бы с изучения строк. Зачем вы начинаете кодить пропустив 90% базовых знаний? Пора бы уже понять, что на этом форуме не будут делать за вас всю работу. Ну возьми ты книгу или google открой. Первая страница гугла даст полный и развёрнутый ответ на ваш вопрос.
Конечно идиотизм так делать, но я помню где-то на форуме тоже примерно аналогично когда-то постил. Вот твой код: Code: Var Params:TStringList; Responseres:WideString ; begin Params:= TStringList.Create; Params.Add('c[country]=1'); Params.Add('c[name]=1'); Params.Add('c[section]=people'); // Params.Add('has_more:true'); Params.Add('offset:0'); Responseres:=IdHTTP1.Post('http://vkontakte.ru/al_search.php',Params); Memo1.Text:=Responseres; Params.free; end; и вот IOFFE тебе написал: Code: HTTP.AllowCookies:=false; HTTP.Request.CustomHeaders.Clear; HTTP.Request.CustomHeaders.Add('Cookie: remixsid=' + куки); нетрудно догадаться, что куки установить надо где-то перед отправкой запроса, я конечно предполагаю, что ты думаешь, что для этого есть какое-то эксклюзивное место. Ну короче вот так: Code: Var Params:TStringList; Responseres:WideString ; begin Params:= TStringList.Create; Params.Add('c[country]=1'); Params.Add('c[name]=1'); Params.Add('c[section]=people'); // Params.Add('has_more:true'); Params.Add('offset:0'); IdHTTP1.AllowCookies:=false; IdHTTP1.Request.CustomHeaders.Clear; IdHTTP1.Request.CustomHeaders.Add('Cookie: remixsid=' + куки); Responseres:=IdHTTP1.Post('http://vkontakte.ru/al_search.php',Params); Memo1.Text:=Responseres; Params.free; end;
и еще вопрос, я знаю что значение офсет нужно брать из ответа, это знасит что нужно найти его в ответе и привоить моему, но ничего у меня не выходит, подскажите в чем дело
Я не особо знаю инди, но вроде, если добавить компонент cookiemanager, и указать его в свойства idhttp1, куки должны автоматически отправляться?
Flisk, Я с индейкой вообще не работаю, про кукименаджер когда-то читал, тестил, то ли у меня руки из жопы, то ли он баженый, короче мне было проще забыть про инди и юзать синапс. Я не вникал, но как я понял тебя надо его спарсить просто, гугли в сторону методов работы со строками pos, copy,delete,posex... Жесть, конечно. Авторизацию надо пройти вконтакте. У тебя кроме представленного в первом посте кода вообще ничего нет?
вот есть код авторизации PHP: function SetCookies(Raw: string): string; var PosCook: Integer; Cook: string; begin Cook:= ''; Cook:= 'Cookie: '; PosCook:= Pos('Set-Cookie:', Raw); while PosCook<>0 do begin Delete(Raw, 1, PosCook-1); Cook:= Cook + Copy(Raw, 12, Pos(';', Raw)-11); Delete(Raw, 1, Pos(';', Raw)); PosCook:= Pos('Set-Cookie:', Raw); end; Result:= Cook+'remixlang=0;'; end; procedure TForm1.Button1Click(Sender: TObject); var http: TIdHTTP; Data: TStringList; Cookies: string; begin HTTP:= TIdHTTP.Create(Self); HTTP.HandleRedirects:= True; HTTP.Request.UserAgent:= 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.186 Safari/535.1'; try HTTP.Get('http://login.vk.com/?act=login&q=1&al_frame=1&from_host=vkontakte.ru&email='+Edit1.Text+'&pass='+Edit2.Text); except end; Cookies:= SetCookies(HTTP.Response.RawHeaders.Text); if Pos('remix', Cookies)<>0 then ShowMessage('Авторизовались'); HTTP.Free; end;
Это уже даже не смешно - печально. Ты не знаешь НИ ХЕРА, даже говорю не про тему с авторизацией- ты вообще не понимаешь код. Внимаение вопрос: Нахрена тебе это, если ты даже не пытаешься соизволить вникнуть в код: Я так понимаю, что ты код даже компилить не пытаешься?Что ты вообще ищешь?Для чего тебе нужен код?Куда ты его хочешь потом вставить? ЗЫ - пользуйся поисковиком и найди уже готовое решение, есть масса разных мелких "клиентов " для авторизации вконтакте. Тему в топку.Из за таких тем, где человек не пытается чему то научиться, а просто что то тупо скопипастить, даже не осизволив вникнуть в то, что он тырит - такие вещи засирают ачат.
Многие жалуются на инди, что там багов куча. Хз, может и так. Я слышал много хорошего про компоненты Ip*works - они скамерческие, но якобы отлаженные супер и все такое. Синапс не тестил особо. з.ы. ТС, если надо, могу попробовать накодить пример на инди+кукиманаджер, там не надо парсить строки. Правда, я дельфи не знаю, код будет на C++ Builder. з.з.ы. а вообще, это не дело. Изучи матчасть, и много вопросов отпадет. Я когда-то тоже заебывал людей вопросами по работе http, тупые вопросы задавал что ужас. Потом подучил немного - и начал понимать, что к чему. Надо не бездумно копипастить, а вникать в код, понять, что делает каждая строка. Иначе даже быдлокодить не научишся.. Или, если тебе кодинг нафиг не нужен, закажи где-то на флансе код, где тебе его распишут и закомментят еще подробно.
Подскажите что не правильно, написал код, и выдает ошибку PHP: var Http : TidHttp; CM : TidCookieManager; LoginInfo : TStringList; UserID, UserName : String; StrPage:widestring; i : integer; begin try Http := TIdHTTP.Create(Self); LoginInfo := TStringList.Create; CM := TidCookieManager.Create(Http); Http.AllowCookies := true; Http.CookieManager := CM; Http.HandleRedirects := true; Http.Request.Host:='login.vk.com'; Http.Request.UserAgent:='Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10'; Http.Request.Accept:='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'; Http.Request.AcceptEncoding:='gzip,deflate'; Http.Request.Connection:='keep-alive'; Http.Request.AcceptLanguage:='ru,en-us;q=0.7,en;q=0.3'; Http.Request.AcceptCharSet:='windows-1251,utf-8;q=0.7,*;q=0.7'; Http.Request.Referer:='http://vkontakte.ru/al_index.php?act=auth_frame&nqr='; LoginInfo.Add('act=login'); LoginInfo.Add('q=1'); LoginInfo.Add('al_frame=1'); LoginInfo.Add('expire=1'); LoginInfo.Add('captcha_sid='); LoginInfo.Add('captcha_key='); LoginInfo.Add('from_host=vkontakte.ru'); LoginInfo.Add('email='+edit1.text); LoginInfo.Add('pass='+edit2.Text); StrPage := Http.Post('http://login.vk.com/?act=login', LoginInfo); finally LoginInfo.Free; CM.Free; Http.Free; end; if (Pos('Моя Сторінка',StrPage) <> 0) or (Pos('Моя Страница',StrPage) <> 0) then ShowMessage('Авторизация прошла успешно') else ShowMessage('Авторизация провалилась'); Memo1.Lines.Text := StrPage; end; Выделяет строку PHP: StrPage := Http.Post('http://login.vk.com/?act=login', LoginInfo); Выдает такую ошибку:
А там еще и текст ошибки пишется, прочитайте его пожалуйста, может сами додумаетесь, может с нами поделитесь
https://forum.antichat.ru/threadnav303109-1-10.html https://forum.antichat.ru/threadnav299663-5-10.html