所以我想讀取一個URL的來源,讓我們說,domain.xyz。沒問題,我可以簡單地使用HttpWebRequest工作。如何獲取只能在指定域上工作的iframe的來源?
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlAddress);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
我的問題是,它會返回頁面源,但沒有在這個頁面內的iframe的來源。我只得到這樣的:
<iframe src="http://anotherdomain.xyz/frame_that_only_works_on_domain_xyz"></iframe>
我想通了,我可以很容易地得到與web瀏覽器,或基本字符串函數(結果是相同的)的iframe的src,並使用該地址創建另一個HttpWebRequest的。問題是,如果我在瀏覽器(Chrome)中查看完整頁面(插入框架的位置),我會得到預期的結果。但是,如果我將src複製到另一個選項卡,則內容不一樣。它說我想查看的內容被阻止,因爲它只允許通過domain.xyz。
所以我的最後一個問題是: 如何通過指定的域模擬請求,或獲取完整的呈現頁面源?
我試圖將Referer設置爲原始URL,並將CookieContainer與所有的Cookie填充到完全相同,但問題仍然存在......有些提供框架的網站仍然知道它是一個「爬蟲」。 –
@BalázsVarga這種反應是怎樣的?你會得到一個http錯誤代碼,還是一個200響應,只是內容告訴你,你不能這樣做?如果它僅在內容中,那麼在該消息出現之前嵌入了一些腳本,圖像或類似內容?您是否也嘗試更改您的請求的瀏覽器標識符? –
我沒有改變瀏覽器標識符。該響應是一個有效的html文件,其中包含一些css和一條消息,指出該內容無法直接查看。 –