| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Выполнить JavaScript |
| Автор: Mach3 16.3.2011, 13:23 | ||
| Добрый день.. Никогда не сталкивался с обработкой скриптов, посему прошу сильно не ругать.. Вобщем загружаю код странички.. Получаю текст объявления. Контакт продавца скрыт скриптом. (мол надо кликнуть мышкой) Нужная мне информация находится здесь:
Подскажите куда копать.. Спасибо.. |
| Автор: Akella 16.3.2011, 13:45 |
| 1. Искать компоненты. 2. Попробовать через TWebBrowser. Добавлено через 46 секунд Искать пробовали? http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=delphi+JavaScript |
| Автор: Mach3 16.3.2011, 14:28 |
| Спасибо. Подскажите, я правильно понимаю то, что происходит при клике по ссылке: На onclick обработчику посылается запрос our_common_ajax_processor с параметрами (document.getElementById('place_for_contacts'), true, {'mode' : 'show_bull_contacts_newstyle', 'submode' : 'onclick', 'bull_id' : 4764150, 'is_archive' : 0, 'h' : ''}, '', '/auto/?newstyle=1&bull_id=4764150&crossdomain_ajax_request=1') Так? |
| Автор: Snowy 16.3.2011, 14:35 |
| our_common_ajax_processor - это функция на JS Выполнять её не в контексте браузера нет смысла. Нужно просто взять её код и перевести на Delphi. |
| Автор: Mach3 16.3.2011, 15:31 |
| А где находится описание(код) этой функции? |
| Автор: MetalFan 16.3.2011, 16:30 |
| Может проще посмотреть http отладчиком, что посылает и получает браузер, и просто проэмулировать его действия для получения текста объявления? Ведь ajax сводится в итоге к GET или POST запросам. |
| Автор: Snowy 16.3.2011, 18:09 |
| Посмотри в теле документа прилинкованные *.JS файлы (смотри в заголовке страницы). Скорее всего в одном из них. |
| Автор: cat512 16.3.2011, 18:14 | ||
Попробуй так:
Незабудь подключить модуль mshtml |
| Автор: Mach3 17.3.2011, 04:19 | ||||||||
При клике на линк HTTPanalyzer показал отправку GET запроса с следующими параметрами:
Эмулируя данный запрос в программе, получаю контент с нужной мне информацией:
Фактически в запросе меняется только параметр bull_id (номер объявления); Так же меняются:
Но оставляя их неизменными все проходит на ура! Для чего нужны данные параметры? Код функции our_common_ajax_processor вроде нашел:
Если не трудно, не могли бы вы в двух словах описать суть работы этой функции.. Спасибо. To cat512 Ваш вариант попробовал, но контакты не "открылись". Просто загрузилась страничка с объявлением. Суть предложенного вами способа понял. Поэксперементирую. =)) Спасибо. |
| Автор: cat512 17.3.2011, 05:15 |
| PHPSESSID нужно передавать как есть (т.е. трогать не надо). Он служит для идентификации сессии пользователя (контекста сеанса), в котором сохраняються нужные параметры на сервере( например признак успешности аутентификации и др.). По идее PHPSESSID меняться не должен, в промежутке времени от первого коннекта, до уничтожения екзэмпляра браузера |
| Автор: Mach3 17.3.2011, 05:25 | ||
Судя по всему PHPSESSID хранится в кукисах..
Т.е. мне необходимо сначало принять куки от сервера, получить PHPSESSID и только потом составлять запрос? |
| Автор: cat512 17.3.2011, 05:33 |
| Однозначно. PHPSESSID может передаваться как через кукисы так и через скриптовые переменные, а также через параметры GET/POST запросов. Добавлено через 3 минуты и 15 секунд На мой взгляд, наиболее удачный вариант, не разматывать/модифицировать структуры/функции скрипта, а програмно кликнуть по ссылке. В этом случае гарантируется, что на сервер уйдёт всё что надо. |
| Автор: Mach3 17.3.2011, 05:43 | ||
Так и есть! |
| Автор: MetalFan 17.3.2011, 09:08 |
а на мой взгляд логичнее залогиниться первым запросом, сохранить нужные куки для дальнейшей работы "авторизованным" пользователем, и эмулировать запросы браузера. Накой тянуть абсолютное ненужный в этой задаче TWebBrower |
| Автор: Mach3 31.10.2011, 16:27 | ||||
| Доброго времени суток.. В общем, перестало все работать =(.. Теперь, эмулируя запрос с параметрами
получаю следующий контент
Номер верный, за исключением кода оператора (выделен розовым цветом). в запросе меняется единственный параметр: _:1320066935928 Понять, откуда он берется, никак не могу.. бьюсь вторые сутки.. Может кому-нибудь есть что посоветовать?! Пока стараюсь воздерживаться от использования TWebBrowser. |