Как перехватить HTML-страницу перенаправления перед ее перенаправлением? - PullRequest
0 голосов
/ 07 сентября 2010

Я пытаюсь прочитать HTML-страницу, которая содержит задержку перенаправления.Следующий фрагмент (C #) даст мне целевую / перенаправленную страницу, а не начальную, которую мне нужно видеть:

using System.Net;
using System.Text;

public class SomeClass {
    public static void Main() {
        byte[] data = new WebClient().DownloadData("http://SomeUrl.com");
        System.Console.WriteLine(Encoding.ASCII.GetString(data));
    }
}

Есть ли способ получить HTML страницы перенаправления?(Я предпочитаю .NET, но фрагмент кода на Java или Python тоже подойдет. Спасибо!)

Ответы [ 4 ]

5 голосов
/ 07 сентября 2010

Если перенаправление не выполняется на стороне клиента, вы не можете. Если перенаправление выполняется на стороне сервера, клиент не генерирует HTML, но заголовок перенаправляется на новый сервер.

1 голос
/ 07 сентября 2010

Это займет больше работы, но вместо использования WebClient используйте HttpWebRequest и установите для свойства AllowAutoRedirect значение False. Перенаправление затем выдаст исключение, но вы можете получить любой текст ответа (и на некоторых страницах есть текст ответа вместе с перенаправлением) из объекта ответа исключения. После получения ответа от исключения вы можете ввести еще один HttpWebRequest для URL-адреса перенаправления (указанного в заголовке ответа Location).

Вы могли бы быть в состоянии сделать нечто подобное с WebRequest, если вы создадите производный объект MyWebRequest, где вы перегружаете метод GetWebRequest и устанавливаете свойство AllowAutoRedirect. Я не знаю, что за исключение, если оно есть, метод DownloadData вернется, если вы сделаете что-то подобное.

Как кто-то сказал ранее, это будет работать только для тех страниц, которые выполняют перенаправления на стороне клиента (обычно 301 или 302). Если происходит перенаправление на стороне сервера, вы об этом никогда не узнаете.

0 голосов
/ 07 апреля 2011

Если вы хотите получить источник HTML-страницы, вы можете использовать этот инструмент: http://www.selfseo.com/html_source_view.php

0 голосов
/ 07 сентября 2010

Самый простой ответ - добавить текущую страницу в компонент QueryString перенаправления при перенаправлении, например:

Response.Redirect(newPage + "?FromPage=" + Request.Url);

Тогда новая страница может увидеть, откуда вы можете, просто взглянув на Request.QueryString("FromPage").

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