2017-10-09 82 views
1

我想刮一個網站的HTML。當我用我的瀏覽器訪問這個網站時(不管它是Chrome還是FireFox),訪問網站+ HTML都沒有問題。如何檢索HTML頁面而不重定向?

當我嘗試用C#使用類似HttpWebRequestHtmlAgilityPack的方法解析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; 
} 
+0

因此,如果沒有人可以訪問它,那麼背後呢?只有德國IP的東西? –

回答

3

和當然,餅乾都歸罪於again,因爲Cookie是巨大的,驚人的。

那麼,讓我們來看看在Chrome中會發生什麼你第一次訪問該網站:

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

enter image description here

是的,我得到了一個302重定向,但我也被告知服務器設置一個__cfduid cookie(實際上是兩次)。

當你再次訪問該網站時,正確地讓進入網站:

enter image description here

注意如何這一次__cfduid餅乾被一起發送?這是關鍵。

你的C#代碼需要:

  1. 去工地一次,重定向,但獲得的響應報頭中的cookie的值。
  2. 返回到請求標題中具有正確cookie值的網站。

您可以轉到本文中的第一個鏈接,查看如何爲請求設置cookie值的示例。

+1

尼斯調試-fu gunr2171。 –

+0

現在,爲了記錄,我不知道_why_服務器是這樣做的。正如在那篇相關的文章中,你不應該要求你的客戶在他們到達網站前有一個cookie值。希望這只是服務器部分的糟糕編程。 – gunr2171

+0

你真棒。只需用我的CookieValues進行測試,看看它是否有效。有用!只需要動態獲取Cookie,但我可以自己做。謝謝 –