Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.01.2013, 00:37   #11
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Пожалуйста.

Насчет парсера.
Вы могли уже заметить из кода авторизации, как в синапсе получить текст страницы:
Код:
s: TStringList;
...
HTTP.Headers.Clear;
Res := HTTP.HTTPMethod('Get', 'http://turbobit.net/');
if Res then
begin
  s.LoadFromStream(HTTP.Document);
  //далее работать с s.text
end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 31.01.2013, 04:48   #12
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

BDA опередил немного..
Код:
var
a,b:string; c,d:integer;
begin
if not HttpGetText('http://turbobit.net/0xxnjwwd14gn.html', Memo1.Lines) then
    ShowMessage('Что-то не получилось.');
else begin
a:=Memo1.Lines.text;
c := Pos ('<h1><a href=',a);
d := Pos ('><b',a);
b := Copy(a,c+29, d - c - 29);
Memo1.text := b;



end;

Последний раз редактировалось Кольша; 31.01.2013 в 04:52.
Кольша вне форума Ответить с цитированием
Старый 31.01.2013, 09:40   #13
Pearl777
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 171
По умолчанию

Спасибо всем ! Парсер работает. Вот только все равно при авторизации не отправляются куки. И при попытке спарсить я получаю страницу на которой нужно авторизоваться.

Да и вот что заметил, куки отправляются вместе с get запросом
Код:
Res := HTTP.HTTPMethod('Get', 'http://turbobit.net/');
Pearl777 вне форума Ответить с цитированием
Старый 31.01.2013, 09:55   #14
Mifody
Форумчанин
 
Регистрация: 12.02.2009
Сообщений: 215
По умолчанию

to Pearl777 - поверь мне на слово, пока объект синапса живой у него ВСЕГДА сохранены куки. И это (сугубо мое личное мнение) самый надежный класс для рабты с HTTP.
Насчет "не отправляются куки" - если про код из первого поста то ничего и не отправится, POST - это первое действие, хочеш чтоб отправились в нем куки, назначь их предварительно объекту

to Кольша - не в обиду, но убил-бы за такой код, человек не может с куками разобраться (первый раз синапс увидел) а ты ему пример с использованием стандартной функции приводиш. Этот код хорошо подходит для парсера, а для авторизации...
Помог с вопросом - тыркаем в весы, Вам не сложно, а мне приятно
Mifody вне форума Ответить с цитированием
Старый 31.01.2013, 11:54   #15
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Mifody, я как бы если что привел пример для парсера, если бы я приводил пример для куков, я бы использовал httpsend
Кольша вне форума Ответить с цитированием
Старый 31.01.2013, 18:32   #16
Pearl777
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 171
По умолчанию

Всем спасибо! Разобрался с этой проблемой.
Pearl777 вне форума Ответить с цитированием
Старый 04.02.2013, 09:36   #17
HSR
Пользователь
 
Регистрация: 10.12.2011
Сообщений: 26
По умолчанию

Используй эту функцию парсинга - http://www.vans-soft.ru/2011/10/pars.html
HSR вне форума Ответить с цитированием
Старый 03.03.2013, 10:26   #18
Erjaninio
 
Регистрация: 22.09.2011
Сообщений: 4
По умолчанию Проблема с заменой Cookies, Synapse, Mail.ru

Добрый день, пишу программу,использую Synapse, получилось реализовать авторизацию на сайте майл.ру. Теперь хочу реализовать программную замену cookies.

Авторизацию реализовал, таким способом:
Код HTML:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
    Login, Domain, Password:string;
    HTTP:THTTPSend;
begin
  Login:=Edit1.Text;
  Domain:=ComboBox1.Text;
  Password:=Edit2.Text;
  HTTP:=THTTPSend.Create;
  HTTP.UserAgent:= 'Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12';
  HTTP.MimeType:='application/x-www-form-urlencoded';
  C1:=TStringStream.Create('Domain=mail.ru'+'&Login='+Login+'&Password='+Password+'&new_auth_form=1');
  HTTP.Document.LoadFromStream(C1);
  HTTP.HTTPMethod('POST', 'https://auth.mail.ru/cgi-bin/auth');
end;

Замену Cookies пытаюсь реализовать путем:
Код HTML:
HTTP.Cookies.Clear;
HTTP.Cookies.Text:=Memo1.lines.text;
HTTP.HTTPMethod('GET', 'https://e.mail.ru/cgi-bin/msglist?bak=1');
в Memo1.Lines хранится текст типа:
Код HTML:
Mpop=1362289969:59616b660778756d19050219081d00071c0502064966535c465d000402050516037305165c4a5b515f5e5b5e5a105
956505d1e444d:ХХХХХХ@mail.ru: 
t=obLD1AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAABfAB0DvwcA; 
expires=Fri, 30 Aug 2013 06:05:24 GMT; path=/; domain=.mail.ru
 mrcu=B8495132E82479C6DF550147BDC3; expires=Wed, 01 Mar 2023 06:05:24 GMT; path=/; domain=.mail.ru
Но не получается, возможно что-то делаю не так, так как работаю с Synapse всего второй день, пересмотрел много инфы в сети, но так и не нашел дельного ответа. Буду благодарен за помощь!
Erjaninio вне форума Ответить с цитированием
Старый 03.03.2013, 11:27   #19
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Мне кажется куки в memo имеют не правильный вид..
P.s посмотрите сначала оригинальные куки:
Код:
showmessage(HTTP.Cookies.Text);
И вообще, я вас не пойму..зачем тогда авторзовываться если вы все равно удалите куки и подсуните другие..можно сразу подсовывать..
И еще куки могут привязываться к IP

Последний раз редактировалось Кольша; 03.03.2013 в 11:30.
Кольша вне форума Ответить с цитированием
Старый 03.03.2013, 11:53   #20
Erjaninio
 
Регистрация: 22.09.2011
Сообщений: 4
По умолчанию

Использовал компонент Memo1 для того, чтобы мог допустим вставить туда любые нужные мне куки и пробовать авторизоваться через них.

По Вашему совету просмотрел ShowMessage(HTTP.Cookies.Text); показывает тоже самое, что и лежит в Memo1.

На одном из форумов прочитал, что параметр HTTP.Cookies.Text может вытаскивать не все куки, там предложили использовать самописную функцию и вытаскивать куки из заголовков Http.

Код HTML:
uses StrUtils;

function Setkuki(const x2: string):string;
var CookieList:TstringList; cookie,x3:string; y,i:integer;
begin
x3:=x2;
if pos('Set-Cookie:',x3)<>0 then
begin
CookieList:=TstringList.Create;
  while Pos('Set-Cookie', x3) <> 0 do
  begin
    y := Pos('Set-Cookie', x3);
    i := PosEx(': ', x3, y) + 2;
    CookieList.Add(Copy(x3, i, PosEx(';', x3, i) - i));
    Delete(x3, y, 10);
  end;

  for i := 0 to CookieList.Count - 1 do
    cookie := cookie + CookieList.Strings[i] + '; ';
CookieList.Free;
end;
Result:=cookie;
end;
Добавил эту функцию на всякий случай, проверил, как она работает, в принципе вытащила полную куку.

Теперь код нажатия кнопки у меня выглядит так

Код HTML:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
    Login, Domain, Password:string;
    HTTP:THTTPSend;
begin
  Login:=Edit1.Text;
  Domain:=ComboBox1.Text;
  Password:=Edit2.Text;
  HTTP:=THTTPSend.Create;
  HTTP.UserAgent:= 'Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12';
  HTTP.MimeType:='application/x-www-form-urlencoded';
  C1:=TStringStream.Create('Domain=mail.ru'+'&Login='+Login+'&Password='+Password+'&new_auth_form=1');
  HTTP.Document.LoadFromStream(C1);
  HTTP.HTTPMethod('POST', 'https://auth.mail.ru/cgi-bin/auth');
  ShowMessage(HTTP.Cookies.Text);
  cookie:=setkuki(HTTP.Headers.Text);
  Memo1.Lines.Add(cookie);
end;
Т.е. первая кнопка, авторизовывается и получает куки, добавил вторую кнопку на форму, хочу использовать ее для подмены куков теперь

Вот код второй кнопки:
Код HTML:
  HTTP.Clear;
  HTTP.Cookies.Clear;
// здесь я уже вставил новые куки в Memo1, вернее я изменил только один параметр Mpop, насколько мне известно он отвечает за авторизацию на майл.ру
  HTTP.Cookies.Add(Memo1.Lines.Text);
  HTTP.HTTPMethod('POST', 'https://e.mail.ru/cgi-bin/msglist?bak=1');
  ShowMessage(HTTP.Headers.Text);
  ShowMessage(HTTP.Cookies.Text);
По-прежнему не получается. Вы спросили почему, я не делаю сразу авторизацию через Cookies, я просто шел по ходу своей цели, авторизовался сам через свой пароль, затем получил свои куки, имею на руках другие куки, подставляю их и авторизовываюсь через них.

Возможно я делаю, что-то неправильно. Я в этом деле новичок, так сказать далеко до Вашего уровня, буду благодарен Вам за помощь и подробные объяснения, в моем случае.
Erjaninio вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не пашет synapse bulldog5293 Компоненты Delphi 0 21.10.2011 19:42
Synapse FanRa3 Общие вопросы Delphi 1 09.12.2010 21:06
Куки ilSMoKEli Работа с сетью в Delphi 1 15.06.2010 11:09
Куки Kinematik Работа с сетью в Delphi 0 27.12.2008 04:53