Мне интересно эмулировать функциональность веб-браузера на C ++, чтобы я мог создать оболочку для нескольких веб-сайтов. В настоящее время самые большие проблемы с этими сайтами в том, что они интенсивно используют JavaScript, который взаимодействует с HTML DOM. Таким образом, простое решение использования curl для загрузки страницы и что-то вроде RapidXML для анализа ее содержимого отсутствует.
Далее, я подумал об использовании чего-то вроде v8 с curl, и это решает проблему интерпретации JavaScript на странице. Однако это не решает проблему соединения методов HTML DOM с JavaScript; другими словами, document.getElementById()
потерпит неудачу в v8.
Далее я рассмотрел WebKit , который, похоже, идеально подходит для эмуляции веб-браузера - в конце концов, Chromium и Safari оба используют его в своих веб-браузерах. Однако, это немного слишком полно. Мне не нужны все аспекты рендеринга, которые он включает.
Итак, я бы искал способ:
- Установить SSL-соединение с веб-сайтом
- Интерпретация JavaScript на этом веб-сайте в связи с HTML DOM
- Установить значение имени пользователя / пароля
<input>
поля с моим именем пользователя и паролем
- Имитируйте нажатие кнопки «Отправить», вызывая функцию
formSubmit()
из <input type="button" onClick="formSubmit()">
- Обработка действия формы HTTP POST и последующих перенаправлений HTTP 301 и JavaScript (выполняется с помощью
window.location
)
- Повторите 2-5 при необходимости
Кроме того, что я уже рассмотрел, какие еще есть варианты? В идеале я хотел бы, чтобы это было очень легко, без необходимости ссылки на многие библиотеки.
В первую очередь я занимаюсь разработкой для Windows 7 64-битной системы.