Как использовать libcurl для входа на безопасный веб-сайт и получения html-кода за логином

Мне было интересно, не могли бы вы помочь мне получить доступ к html за страницей входа, используя C и libcurl.

Конкретный пример:

Я пытаюсь получить доступ к веб-сайту https://onlineservices.ubs.com/olsauth/ex/pbl/ubso/dl

Можно ли сделать что-то подобное?

Проблема в том, что у нас много клиентов, у каждого из которых отдельный логин. Нам нужно получать данные с каждой из их учетных записей каждый день. Было бы здорово, если бы мы могли написать что-нибудь на C для этого и сохранить все соответствующие данные в файл. (например, значения счетов и позиций, которые я могу разобрать из html)

Что вы ребята думаете? Возможно ли это, и не могли бы вы указать мне правильное направление с некоторыми примерами и т. Д.?


person Tyler Brock    schedule 23.08.2010    source источник


Ответы (1)


После беглого взгляда на страницу входа в систему это можно сделать с помощью libcurl, разместив комбинацию имени пользователя и пароля на их странице аутентификации и предполагая, что они используют файлы cookie для представления сеанса входа. Первый шаг — убедиться, что у вас установлены следующие параметры:

  • CURLOPT_FOLLOWLOCATION — сервер может перенаправить после аутентификации, это довольно распространено.
  • CURLOPT_POST — указывает libcurl переключиться в режим публикации.
  • CURLOPT_POSTFIELDS — это сообщает libcurl значения, которые нужно установить для полей сообщений. Установите для этого параметра значение «userId=<insert username>&password=<insert password>». Это значение получено из исходного кода этой страницы.
  • CURLOPT_USERAGENT - Установить простой юзер-агент, чтобы веб-сервер победил не выбрасывайте (некоторые строгие сделают это).

Затем, когда сообщение будет завершено, экземпляр libcurl должен содержать какой-то файл cookie авторизации, используемый сайтом для идентификации вошедшего в систему пользователя. Curl должен отслеживать файлы cookie в данном экземпляре. У Curl есть множество опций, если вы хотите настроить поведение файлов cookie.

Убедитесь, что после того, как вы вошли в систему, один и тот же экземпляр libcurl используется для каждого запроса под этой учетной записью, иначе он увидит, что вы вышли из системы.

Что касается синтаксического анализа результирующих страниц, существует множество парсеров HTML для c — просто гугл. Единственное, что я скажу, не пытайтесь написать HTML-парсер самостоятельно. Это общеизвестно сложно, потому что многие сайты не создают хороший (или даже рабочий) HTML.

person Alistair Evans    schedule 23.08.2010