Конференция "Прочее" » Или в TwebBrowser из Tservice сделать Form.Submit .. или ?
 
  • ВладОшин © (30.05.16 11:00) [0]
    Ситуация - есть сайт, на нем надо логиниться и парсить.
    Что и было сделано на TIdHTTP
    Сайт переделан, теперь там куча аяксов, которые какие-то куки ставят и  какие-то, видимо, пролонгации сессий делают. Т.е. теперь пост-запросы обычно приводят на страницу авторизации - не помнит оно уже меня..
    Отловить по тексту все эти запросы, и проделать -  ну, наверное, нереально.

    Если я беру TwebBrowser и перебором
     document := WB1.Document as IHTMLDocument2;
     if Assigned(document) then
     begin
       docAll := document.all;
       for i := 0 to docAll.length -1 do
       begin
         Element := docAll.Item(i,'') as IHTMLElement;
         if Element.id = 'login_or_email' then
         begin
           Login := Element;

    нахожу все элементы и устанавливаю все значения и подписываюсь
     
     if IsLoginPage(IElemLogin, IElemPass, IElemForm) then
     begin
       IElemLogin.setAttribute('Value','СкажиПароль',0);
       IElemPass.setAttribute('Value','ДерПароль',0);
       (IElemForm as IHTMLFormElement).submit;
       WaitFullLoad;
     end;

    то все проходит, и дальше парсинг на авторизацию не выбрасывает.
    При этом программа постоянно обменивается этими запросами..
    т.е. SHDocVw.TWebBrowser сам выполняет скрипты и юзер не забывается сервером

    Всё гут, но надо это все делать из сервиса
    А в сервисе, судя по логам, (IElemForm as IHTMLFormElement).submit; не проходит.

    Погуглил. Говорят, выдели ему(TWebBrowser ) хэндл. Говорят, поставь взаимодействие сервиса с рабочим столом.
    Попробовал. Не получилось.

    Вопрос.
    это вариант - "Плохо пробовал, такое можно сделать в принципе"
    это вариант - "не в ту сторону смотришь, смотри в .."
  • KilkennyCat © (30.05.16 11:45) [1]
    Мне кажется, второй вариант. К сожалению, я уже не в делфи работаю, в с#, и там подобный сайт разбирал. анализировал запросы при помощи https://www.charlesproxy.com/
    увидев наличие авторизации и куки, запросы имеют
    hwr.Headers.Add(HttpRequestHeader.Cookie, sCookies);
    где sCookies - полученные куки при авторизации,
    hwr - глобальный HttpWebRequest
  • ВладОшин © (30.05.16 12:24) [2]
    гм.. похоже ты прав...
    при TIdHTTP после авторизации
    вдруг кук
    PHPSESSID=uek6kvvt3bks20mafanqhf6hp0;
    при очередном GET перескакивает на
    PHPSESSID=frmas5oni81qtunab3jqcbsst7;
    логично, что сервер спрашивает, а ты кто такой вообще то
  • KilkennyCat © (30.05.16 12:31) [3]
    вот-вот, у меня так же.
  • DayGaykin © (30.05.16 13:14) [4]
    Почему нельзя просто в инструменте разработчка в браузере посмотреть запросы (с их куками и авторизациями) и подделывать их?
  • ухты © (30.05.16 13:44) [5]
    Какие браузеры в сервисе? )))
    Надо просто повторить работу запрос-ответ, с установкой необходимых данных. Те же куки пришли-ушли ...
  • ВладОшин © (30.05.16 17:41) [6]
    >посмотреть запросы (с их куками и авторизациями) и подделывать их?
    >>повторить работу запрос-ответ

    именно так и делал сначала(в браузере по f12). лог запросов растет каждую секунду на 2-3 запроса. Все их повторять / нет? А как решить, какие надо / какие- нет?
    Браузер в сервисе.. знаю, бредово ). Но он как-то сам общается с сайтом и не жужжит.
  • ухты © (31.05.16 00:08) [7]
    Анализировать надо и выкинуть всякие ненужные, типа к яндекса веб-визору, аналитику гугла  и т.п.
 
Конференция "Прочее" » Или в TwebBrowser из Tservice сделать Form.Submit .. или ?
Есть новые Нет новых   [134432   +19][b:0][p:0.001]