如何在不重定向的情况下检索HTML页面?

时间:2017-10-09 19:23:51

标签: c# html redirect httpwebrequest html-agility-pack

我想抓一个网站的HTML。当我使用浏览器访问此网站时(无论是Chrome还是FireFox),访问网站+ HTML都没有问题。

当我尝试使用HttpWebRequestHtmlAgilityPack等方法使用C#解析HTML时,网站将我重定向到另一个网站,因此我解析了重定向网站的HTML。

知道如何解决这个问题吗?

我认为该网站将我的程序识别为程序并立即重定向,因此我尝试使用Selenium和GoogleDriver以及FireFoxDriver,但也没有运气,我立即被重定向。

网站:https://www.jodel.city/7700#!home

private void bt_load_Click(object sender, EventArgs e)
{
        var url = @"https://www.jodel.city/7700#!home";
        var req = (HttpWebRequest)WebRequest.Create(url);
        req.AllowAutoRedirect = false;
        // req.Referer = "http://www.muenchen.de/";
        var resp = req.GetResponse();
        StreamReader sr = new StreamReader(resp.GetResponseStream());
        String returnedContent = sr.ReadToEnd();

        Console.WriteLine(returnedContent);
        return;
}

1 个答案:

答案 0 :(得分:3)

当然,饼干应该归咎于again,因为饼干很棒而且很棒。

因此,让我们来看看您第一次访问该网站时Chrome中会发生什么:

(我去了https://www.jodel.city/7700#!home):

enter image description here

是的,我有302重定向,但服务器也告诉我设置__cfduid cookie(实际上是两次)。

当您再次访问该网站时,您正确地进入该网站:

enter image description here

注意这次发送__cfduid Cookie的时间是多少?这是关键所在。

您的C#代码需要:

  1. 转到网站一次,重定向,但从响应标头中获取cookie值。
  2. 使用请求标头中的正确Cookie值返回站点。
  3. 您可以转到此信息中的第一个链接,查看如何为请求设置Cookie值的示例。