Конференция "Сети" » Как получить Cookies с сайта? (Indy 9) [D7, WinXP]
 
  • McNail © (18.09.09 15:37) [0]
    Как получить Cookies с сайта?
    ВЫполняю .Get('http://........com');
    Получаю первый Cookie в idcookiemanager.
    Далее на странице выполняется html-код и устанавливается второй Cookie.

    В TWebBrowser сценарий сайта выполняется, а вот в indy не получается.
    Как мне получить второй Cookie через indy Или получить Cookies из TWebbrouser, для дальнейшего использования в indy?
  • Медвежонок Пятачок © (18.09.09 15:48) [1]
    Далее на странице выполняется html-код и устанавливается второй Cookie.

    Надо сделать тоже самое.
  • McNail © (18.09.09 15:57) [2]

    > Надо сделать тоже самое.

    Как это сделать попроще? ))
  • McNail © (18.09.09 15:58) [3]
    Кстати WebBrowser1.OleObject.Document.cookie тоже возвращает только первый кук. А в C:\Documents and Settings\Admin\Cookies появляется два кука. Которые точно формируются этим сайтом и оба нужны
  • sniknik © (20.09.09 10:22) [4]
    куки это не заранее забитые и передаваемые с сервера файлы, это место для сохранения локальных установок/параметров про которые сервер ничего не знает. и делаются они локальным скриптом (т.е. > с сайта? их не получить).
    и кстати они вовсе не обязательны, т.е. типа загрузил страничку и вот они, нет, они могут появляться от действий юзера (ну например, работает сайт на схемах "по умолчанию", и никаких куков, а после юзер выбирает определенную схему и  чтобы сохранить выбор создается "печенька" куда записывается выбранное), все зависит от программиста который сайт делал.

    > Как это сделать попроще? ))
    > возвращает только первый кук.
    попросить юзера "погулять" по сайту, и ждать появления второго "кука".
  • McNail © (21.09.09 15:44) [5]
    Нашёл решение сам. Может не совсем красивое, но рабочее )))
    Использую функцию UrlDownloadToFile (uses SHDocVw) вместо Indy, которая в запросах вставляет необходимые мне Cookie. Т.е. по сути создаю в Run-time невидимый браузер (TWebBrowser) за пределами формы, который выполяет сценарий сайта...
  • McNail © (21.09.09 15:46) [6]
    P.S. Спасибо за внимание к вопросу!! ))
  • Bolg (23.09.09 13:02) [7]
    idcookiemanager глючный!!! И это в 10-х инди((( Если не хочешь иметь проблем с куками, работай с ними сам:
    1. Загрузи страницу гетом.
    2. Загляни в idhttp.Response.RawHeaders.text, там будет к примеру это:
    HTTP/1.1 302 Moved Temporarily
    Server: NoNaMe
    Date: Wed, 23 Sep 2009 08:45:05 GMT
    Content-Type: text/html; charset=utf-8
    Transfer-Encoding: chunked
    Connection: keep-alive
    Cache-Control: no-store, no-cache, must-revalidate
    Expires: Wed, 23 Sep 2009 12:45:05 +0400
    P3P: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"
    Set-Cookie: session=YTo0OntzOjEwOiJzZXNzaW9uX2lkIjtzOjMyOiI1MDIxZmEyMWNlNjg3ZDgyZGViMzNiOW U2YTM0NGYzYSI7czoxMDoiaXBfYWRkcmVzczoDkXZpdHkiO2k; expires=Wed, 07-Oct-2009 08:45:05 GMT; path=/; domain=
    Set-Cookie: session=YTo2OntzOjEwOiJzZXNzaW9uX2lkIjtzOjMyOiI1MDIxZmEyMWNlNjg3ZDgyZGViMzNiOW U2YTM0NGYzYSI7czoxMDoiaXBfYWRkcMCI7cZkiO36wNTtzO; expires=Wed, 07-Oct-2009 08:45:05 GMT; path=/; domain=
    Location: /


    3. Вынимаеш все строки начинающиеся с "Set-Cookie:", а в них все что между "Set-Cookie:" и ; (session=YTo2OntzOjEw...;)
    4. Кидаешь все это дело в Request:
    idhtp.Request.CustomHeaders.Text:='Cookie: '+cookies;

    И все! Вот это тру красивое рабочее решение, а idcookiemanager у меня из 3-х сайтов пахал токо с одним.
 
Конференция "Сети" » Как получить Cookies с сайта? (Indy 9) [D7, WinXP]
Есть новые Нет новых   [134437   +29][b:0][p:0.001]