Как я могу использовать libcurl для входа на защищенный сайт и получить html за логином - PullRequest
4 голосов
/ 23 августа 2010

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

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

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

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

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

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

1 Ответ

6 голосов
/ 23 августа 2010

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

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

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

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

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

...