2009-09-24 3 views
1

Я использую веб-клиент C# для отправки сведений для входа на страницу и чтения всех результатов.C# WebClient - Просмотр исходного вопроса

На странице, которую я пытаюсь загрузить, включена flash (которая в браузере переводится в HTML). Я предполагаю, что это вспышка, чтобы не попасть в поисковые системы ???

Вспышка, которой меня интересует, это просто текст (не изображение/видео) и т. Д., И когда я «View Selection Source» в firefox, я действительно вижу текст в HTML, который я хочу видеть.

(Интересно, когда я смотрю на источник для всей страницы, я не вижу текст, в HTML, что я хочу видеть. Может ли это быть связано?)

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

Спасибо заранее,

Джим

PS: Я хотел бы отметить, что POST на самом деле работает, мой журнал в успешна.

+0

любых изменений у нас может быть Url, чтобы увидеть его? – balexandre

+0

Hello balenandre, Это t-mobile.co.uk. Но вам нужно будет зарегистрировать и т. Д. Если кто-то делает это, это бит, который говорит вам, что вы остаёте остаток и т. Д. – BIDeveloper

+0

Возможно ли, что сервер использует HTTP-заголовок User-Agent для идентификации клиента и адаптирует его содержимое отправляется соответственно? –

ответ

7

Fiddler (или аналогичный инструмент) бесценен, чтобы отслеживать проблемы со скрининга экрана, подобные этому. Используя обычный браузер и активную функцию fiddler, просмотрите все запросы, выполняемые по ходу процесса входа и навигации, чтобы получить нужные данные. Между вами, вероятно, вы увидите одну или несколько вещей, которые ваш код делает по-другому, на что сервер отвечает и, следовательно, показывает вам разные HTML, чем реальный клиент.

Список нижеуказанного (думаю, что это «царапание 101») - это то, что вы хотите найти. Большинство вещей ниже, вероятно, вещи, которые вы уже делаете, но я включил все для полноты.

Для того, чтобы эффективно царапать, вам, возможно, придется иметь дело с одним или несколькими из следующих способов:

  1. печенье и/или скрытые поля., когда вы показываетесь на любой странице сайта, вы обычно получаете поле cookie сеанса и/или скрытое поле формы, которое (в обычном браузере) будет распространяться обратно на сервер во всех последующих запросах. Вероятно, вы также получите постоянный файл cookie. На многих сайтах, если запросы появляются без надлежащего файла cookie (или поля формы для сайтов, использующих «cookieless sessions»), сайт перенаправляет пользователя на пользовательский интерфейс «без файлов cookie», страницу входа в систему или другое нежелательное место (от перспектива приложения скрепера). всегда убедитесь, что вы храните файлы cookie, установленные в первоначальном запросе, и добросовестно отправляете их на сервер при последующих запросах, за исключением случаев, когда один из этих последующих запросов изменяет файл cookie (в этом случае вместо этого используется новый cookie).
  2. токены аутентификации особым случаем, указанным выше, является куки-файлы или скрытые поля. убедитесь, что вы захватываете токен входа (обычно это файл cookie) и отправляете его обратно.
  3. POST vs. GET это очевидно, но убедитесь, что вы используете тот же HTTP-метод, что и в реальном браузере.
  4. поля формы (особенно скрытые из них!) Я уверен, что вы делаете это уже, но убедитесь, чтобы отправить все поля формы, что настоящий браузер, а не только видимые поля. убедитесь, что поля правильно закодированы в HTML.
  5. HTTP-заголовки. вы уже проверили это, но имеет смысл снова проверить, чтобы убедиться, что заголовки (не-cookie) идентичны. Я всегда начинаю с одних и тех же заголовков, а затем начинаю вынимать заголовки один за другим и сохраняю только те, которые заставляют запрос терпеть неудачу или возвращать фиктивные данные. этот подход упрощает ваш код очистки.
  6. переадресации. Они могут быть либо с сервера, либо с клиентского скрипта (например, «если у пользователя нет загруженного плагина Flash, перенаправление на страницу без флэш-памяти»). См. WebRequest: How to find a postal code using a WebRequest against this ContentType="application/xhtml+xml, text/xml, text/html; charset=utf-8"? для сумасшедшего примера того, как перенаправление может отключить экран-скребок. Обратите внимание: если вы используете .NET для очистки, вам нужно использовать HttpWebRequest (не WebClient) для скремблирования, зависящего от перенаправления, потому что по умолчанию WebClient не предоставляет способ для вашего кода прикреплять файлы cookie и заголовки ко второму (пост-перенаправление). Для получения более подробной информации см. Приведенную выше тему.
  7. под-запросы (фреймы, ajax, flash и т. Д.) - часто элементы страницы (а не основные HTTP-запросы) будут извлекать данные, которые вы хотите очистить. вы сможете понять это, посмотрев, какой ответ HTTP содержит текст, который вы хотите, а затем работайте назад, пока не найдете то, что на странице действительно делает запрос на этот контент. Несколько сайтов действительно сумасшедшие вещи в подзапросах, например запрос сжатого или зашифрованного текста через ajax, а затем использование клиентского скрипта для его расшифровки. если это так, вам нужно сделать немного больше работы, например, реконструировать то, что делает клиентский скрипт.
  8. заказ - это очевидно: сделайте HTTP-запросы в том же порядке, что и клиент-браузер. это не означает, что вам нужно сделать каждый запрос (например, изображения). Обычно вам нужно только делать запросы, которые возвращают тип содержимого text/html, если только данные не нужны в HTML и находятся в ajax/flash/etc. запрос.
+0

+1, удивительный ответ – orip

0

(Интересно, когда я смотрю на источник для всей страницы, я не вижу текст, в HTML, что я хочу видеть. Может ли это быть связано?)

Это обычно означает, что расхождение вызвано некоторыми манипуляциями DOM через javascript после загрузки страницы. Попробуйте отключить javascript и посмотреть, как он выглядит.

 Смежные вопросы

  • Нет связанных вопросов^_^