Самый простой способ получить исходный код веб-страницы со страниц, требующих входа в систему - C # - PullRequest
1 голос
/ 05 февраля 2010

Итак, я играю в онлайн-игру, основанную на сети, и я бы хотел автоматизировать некоторые вещи с помощью C #. Проблема в том, что я не могу просто использовать WebClient.DownloadData (), потому что мне нужно войти в систему, чтобы фактически получить источник. Другой альтернативой было использование встроенного элемента управления веб-браузера, но это не дает мне доступ к исходному коду. Есть предложения?

Ответы [ 3 ]

1 голос
/ 05 февраля 2010

Я не думаю, что NetworkCredentials будет работать во всех случаях. Это работает только с аутентификацией «Basic» или «Negotiate».

Я уже делал это на внутреннем веб-сайте для некоторого нагрузочного тестирования, но похоже, что вы пытаетесь "сыграть" в игру. По этой причине я не буду вдаваться в подробности, но вход на сайт, вероятно, выполняется в форме HTTP POST, когда вы нажимаете кнопку входа в систему.

Вы должны были бы перехватить запрос POST и повторить его в своем коде и убедиться, что ваша реализация также поддерживает состояние сеанса, потому что, если игровой сайт написан хорошо, он будет убедиться, что текущий сеанс вошли в систему, прежде чем делать что-либо, связанное с игрой.

0 голосов
/ 05 февраля 2010

Сетевые учетные данные не будут работать, как уже указывал mjmarsh.

Во время просмотра веб-страниц мы сталкиваемся с множеством страниц, где требуется вход в систему. Один из подходов, которые я использую, - это установить fiddler и отслеживать пакеты POST и GET при ручной регистрации на сайте. Это позволяет вам узнать, как браузер эмулирует логин. Затем вам нужно пересоздать тот же процесс по коду.

Например, большинство веб-серверов используют файлы cookie, чтобы предположить, что сеанс аутентифицирован. Таким образом, вы можете использовать учетные данные, чтобы разместить имя пользователя и пароль на веб-сайте и записать файл cookie. Затем этот файл cookie можно использовать для доступа к любой дополнительной информации на веб-сайте.

Пожалуйста, проверьте следующую ссылку, чтобы узнать больше о Advanced Web Scrapping:

http://krishnan.co.in/blog/post/Web-Scraping-Yahoo-Mail.aspx

В этом блоге вы узнаете, как пройти аутентификацию в учетной записи Yahoo, а затем прочитать страницу после аутентификации.

0 голосов
/ 05 февраля 2010

Вы можете установить учетные данные для входа на веб-клиент, используя его свойство Credentials перед вызовом DownloadData:

WebClient client = new WebClient();
client.Credentials = new NetworkCredential("username", "password");

РЕДАКТИРОВАТЬ: Как указывает mjmarsh, это будет работать только для сайтов, которые используют метод аутентификации запрос-ответ как часть одного запроса (я так привык работать с этим на работе, Я не рассматривал другие типы!). Если на сайте используется проверка подлинности на основе форм (или на самом деле любая другая форма проверки подлинности), этот метод не будет работать, так как проверка подлинности не является частью одного запроса - необходимо несколько запросов, которые вам придется обрабатывать самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...