-
Ситуация - есть сайт, на нем надо логиниться и парсить. Что и было сделано на 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 ) хэндл. Говорят, поставь взаимодействие сервиса с рабочим столом. Попробовал. Не получилось.
Вопрос. это вариант - "Плохо пробовал, такое можно сделать в принципе" это вариант - "не в ту сторону смотришь, смотри в .."
-
Мне кажется, второй вариант. К сожалению, я уже не в делфи работаю, в с#, и там подобный сайт разбирал. анализировал запросы при помощи https://www.charlesproxy.com/увидев наличие авторизации и куки, запросы имеют hwr.Headers.Add(HttpRequestHeader.Cookie, sCookies); где sCookies - полученные куки при авторизации, hwr - глобальный HttpWebRequest
-
гм.. похоже ты прав... при TIdHTTP после авторизации вдруг кук PHPSESSID=uek6kvvt3bks20mafanqhf6hp0; при очередном GET перескакивает на PHPSESSID=frmas5oni81qtunab3jqcbsst7; логично, что сервер спрашивает, а ты кто такой вообще то
-
вот-вот, у меня так же.
-
Почему нельзя просто в инструменте разработчка в браузере посмотреть запросы (с их куками и авторизациями) и подделывать их?
-
Какие браузеры в сервисе? ))) Надо просто повторить работу запрос-ответ, с установкой необходимых данных. Те же куки пришли-ушли ...
-
>посмотреть запросы (с их куками и авторизациями) и подделывать их? >>повторить работу запрос-ответ
именно так и делал сначала(в браузере по f12). лог запросов растет каждую секунду на 2-3 запроса. Все их повторять / нет? А как решить, какие надо / какие- нет? Браузер в сервисе.. знаю, бредово ). Но он как-то сам общается с сайтом и не жужжит.
-
Анализировать надо и выкинуть всякие ненужные, типа к яндекса веб-визору, аналитику гугла и т.п.
|