На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Соблюдайте общие правила форума
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Указывайте точные версии Delphi и используемых сетевых библиотек.

Не приветствуется поднятие старых тем. Если ваш вопрос перекликается со старой темой, то для вопроса лучше создать новую тему, а старую указать в первом сообщении с описанием взаимосвязи.

Внимание:
попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Krid, user posted image Rouse_

Модераторы: Krid, Rouse_
  
> idHttp и отправка КУКИ в сервер , idHttp и отправка КУКИ в сервер
    Добрый день. Есть следующий код(поток):

    ExpandedWrap disabled
      function TLoader.LoadSearchPage(const Reqest:string):string;
      const
      SMUrl = 'http://nova.rambler.ru/search?query=';
      //UrlEnd ='&pagelen=50';
      UrlEnd ='&dlang=0&mimex=0&st_date=&end_date=&news=0&limitcontext=0&exclude=&filter=&sort=3&pagelen=50&adult=soft';
      var
      FullUrl:string;
      begin
      FIdHttp:=TidHttp.Create(nil);
      FSSL:=TIdSSLIOHandlerSocketOpenSSL.Create;
      FCookie:=TIdCookieManager.Create;
          try
            try
              FIdHttp.Request.UserAgent:='Mozilla/5.0 (Windows NT 5.1; rv:20.0) Gecko/20100101 Firefox/20.0';
              FIdHttp.Request.AcceptLanguage:='ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3';
              //FIdHttp.Request.AcceptCharSet:='windows-1251,utf-8;q=0.7,*;q=0.3';
              FIdHttp.Request.Connection:='Keep-Alive'; (*???*)
              FIdHttp.Request.ContentType:='text/html';   (*???*)
              FIdHttp.Request.Accept:='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
              FIdHttp.HandleRedirects := True;
              FIdHttp.ConnectTimeout:=50000;
              FIdHttp.ReadTimeout:=50000;
              FIdHttp.AllowCookies:=True;
       
              FIdHttp.IOHandler:=FSSL;
              FIdHttp.CookieManager:=FCookie;
       
              FullUrl:=(SMUrl+Reqest+UrlEnd);
              Result:=AnsiLowerCase(FIdHttp.Get(FIdHttp.URL.URLEncode(FullUrl)));
            except
              Result:='Error Loadind Page';
              Exit;
            end;
          finally
            FreeAndNil(FIdHttp);
            FreeAndNil(FSSL);
            FreeAndNil(FCookie);
          end;
      end;

    вроде бы все работает, но Мурзилла в сервер отсылает следующее:

    GET /search?dlang=0&mimex=0&st_date=&end_date=&news=0&limitcontext=0&exclude=&filter=&sort=3&adult=soft&pagelen=50&query=%D0%B7%D0%B0%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0+%D0%B4%D1%80%D0%BE%D0%B2+%D0%BD%D0%B0+%D0%B7%D0%B8%D0%BC%D1%83 HTTP/1.1
    Host: nova.rambler.ru
    User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:20.0) Gecko/20100101 Firefox/20.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    DNT: 1
    Referer: http://nova.rambler.ru/search?dlang=0&mime...%B8%D0%BC%D1%83
    Cookie: ruid=9l4ABpCeR1BGIgAAAc5i3wB=; dvr=gUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:1368360797; lvr=1368363315; xtvrn=$514210$; xtan=-; xtant=1; __utma=21227320.1028535311.1367572614.1367572614.1367572614.1; __utmz=21227320.1367572614.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); dv=gUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:1368360797; nlv=1368365221; __utma=112620571.1826725587.1367572618.1367759211.1368360808.3; __utmz=112620571.1367759211.2.2.utmcsr=nhp|utmccn=(not%20set)|utmcmd=(not%20set); top100rb=NzQ2KzQ5KzEwNQ==; __utmc=21227320; __utmc=112620571; spravka=d


    тогда как загрузчик на idHTTP в сервер шлет:

    GET /search?query=%D1%81%D1%82%D1%80%D0%BE%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%BE%20%D0%B4%D0%B0%D1%87%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%B4%D0%BE%D0%BC%D0%B8%D0%BA%D0%B0%20%D0%BC%D0%BE%D1%81%D0%BA%D0%B2%D0%B0&dlang=0&mimex=0&st_date=&end_date=&news=0&limitcontext=0&exclude=&filter=&sort=3&pagelen=50&adult=soft HTTP/1.1
    Connection: Keep-Alive
    Content-Type: text/html; charset=ISO-8859-1
    Host: nova.rambler.ru
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Encoding: identity
    Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
    User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:20.0) Gecko/20100101 Firefox/20.0


    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    заметно что загрузчик забыл отослать Referer и Cookie
    в прынципе наверно Referer не очень то и нужно? а вот без Cookie можно очень скоро получить БАН от поисковика
    Внимание! Вопросы:
    1. так ли нужны Referer и Cookie? (вопрос для тех кто хакал поисковики)
    2. как все же запихнуть в поисковик Cookie(использовать POST+СПИСОК вместо GET?)
      а это что?
      FIdHttp.CookieManager:=FCookie;

      вопросы немного не об этом
        Pcrepair,Разве КукиМенеджер автоматически не отправляет(добавляет в тело запроса) однажды сохраненные куки?
        Сообщение отредактировано: Protector -
          получается что нет, это кстати мой вопрос
            Pcrepair,А после загрузки страницы список куки пуст(idHttp1.CookieManager.CookieCollection.Count=0)?
              а вот это еще проверить нужно, прийдется сделать простой вариант без потока и все на нем препарировать
                Pcrepair,Конечно ,я ,например, стараюсь каждую функцию проверять отдельно от основного проекта . Потом собирается мусор,объем которого больше за объем основного проекта ^^

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

                Ну и традиционно , я советую вам использовать сокеты вместо Инди ,как более кошерный и простой ,как по мне , способ обработки Интернет запросов и ответов.Тем более МСДН предлагает вам готовые симплы ,которые иллюстрируют работу базовых функций send/recv(пруф : http://msdn.microsoft.com/en-us/library/wi...9(v=vs.85).aspx )
                Сообщение отредактировано: Protector -
                  Цитата Protector @
                  сокеты вместо Инди

                  Для HTTP не кошерно как раз, придется много всего руками писать
                    Прежде чем снифать Браузер, надо очистить кеш\куки и т.п.
                    тогда при "первом" запросе не будет ни чего лишнего и не будет лишних вопросов..
                    1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 0.0671 ]   [ 15 queries used ]   [ Generated: 24.10.26, 03:02 GMT ]