Проблема с получением исходного кода html с защищенной веб-страницы с помощью Indy & Delphi 7 - PullRequest
1 голос
/ 31 октября 2010

Используя компоненты Indy10 для Delphi, я беру источник веб-страницы и отображаю его в элементе управления Memo, используя следующий код.

<code>
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Text := IdHTTP1.Get(Edit1.Text);
end;

Когда страница, которую я пытаюсь отобразить, является обычной страницей (т. Е. Не требуется вход в систему), результаты хороши, но если я пытаюсь получить источник страницы, требующей входа в систему, то в результате отображается памятка источник страницы входа в систему вместо страницы, которую я запросил, несмотря на то, что я вошел на сайт в браузерах Firefox и IE.

Таким образом, мой вопрос заключается в том, как я могу «аутентифицировать» себя на сайте с использованием компонентов Indy, чтобы получить тот же источник, который был бы при просмотре страницы в моем браузере после входа в систему?

Thx, Дуглас

Ответы [ 2 ]

3 голосов
/ 31 октября 2010

Вы должны потратить некоторое время, чтобы узнать, как работает весь HTTP-компонент, потому что иногда он сложнее, чем выглядит.Браузер делает гораздо больше, чем просто отправляет HTTP-запрос GET или POST с URL-адресом и возвращает HTML.Например, они хранят много информации о посещенных сайтах, потому что заголовки HTTP содержат много полезной информации.То, как они это делают, обычно зависит от браузера, а не от всей системы.Другие браузеры или приложения могут не видеть или использовать их.Вы должны правильно настроить заголовки HTTP для данного сайта и обрабатывать такие ситуации, как аутентификация.Сайты с аутентификацией могут использовать широкий спектр методов для обеспечения доступа, от простых страниц входа в систему до методов аутентификации HTTP.Они могут перенаправить вас на страницы, которые обрабатывают аутентификацию, и хотя это может произойти прозрачно для уже зарегистрированного пользователя, браузер (или приложение) увидит, что происходит, и должен обработать это.

1 голос
/ 31 октября 2010

Это потому, что Indy выполняет только транспорт для вас.

Indy не делает логин; веб-сайт делает.
Существуют десятки способов, с помощью которых веб-сайт может войти в систему.
Большинство из этих логинов требуют поддержки веб-браузера.

Так что вам, скорее всего, нужно смоделировать, что делает веб-браузер.
Это включает в себя поддержку всех технологий, которые веб-сайт использует для входа в систему.
Это может включать файлы cookie, дополнительные заголовки HTTP, HTML 5, JavaScript, Flash и другие функции.

Будьте готовы к большой работе ...

- Йерун

...