我試圖在ASP.NET中使用YoutubeFisher庫。我製作了一個HttpWebRequest來抓取HTML內容,處理比賽以提取視頻鏈接並在網頁上顯示鏈接。我設法使它在本地主機上工作。我可以檢索視頻鏈接並在locahost上下載視頻。但是當我將它推送到服務器時,它只有在我從同一服務器發送請求時纔有效。如果該頁面被客戶端瀏覽器訪問,則客戶端可以正確地看到鏈接,但是當單擊鏈接時,即使鏈接正確,每當客戶端點擊鏈接時,客戶端也會得到HTTP錯誤403。使用ASP.NET和YoutubeFisher訪問YouTube,但獲取HTTP錯誤403
我的分析是,當服務器使HttpWebRequest抓取HTML範圍時,它也會發送HTTP標題。我認爲從YouTube服務器發回的HTML內容(指向視頻文件的鏈接)將僅響應僅匹配從服務器發送的HTTP標頭的請求。所以,當客戶點擊鏈接時,它會向不同的HTTP頭髮送請求到YouTube服務器。
因此,我正在考慮從客戶端獲取HTTP標頭,然後在製作HttpWebRequest之前修改Server HTTP標頭以包含客戶端的HTTP標頭信息。我不太確定這是否可行。據我所知,HTTP heaer不能被修改。
下面是使HttpWebRequest的從YouTubeFisher庫中的代碼,
public static YouTubeService Create(string youTubeVideoUrl)
{
YouTubeService service = new YouTubeService();
service.videoUrl = youTubeVideoUrl;
service.GetVideoPageHtmlSource();
service.GetVideoTitle();
service.GetDownloadUrl();
return service;
}
private void GetVideoPageHtmlSource()
{
HttpWebRequest req = HttpWebRequest.Create(videoUrl) as HttpWebRequest;
HttpWebResponse resp = req.GetResponse() as HttpWebResponse;
videoPageHtmlSource = new StreamReader(resp.GetResponseStream(), Encoding.UTF8).ReadToEnd();
resp.Close();
}
客戶端瀏覽網頁,但該鏈接是有,但給HTTP 403:
瀏覽的頁面的從服務器本身,一切都按預期工作:
我如何HttpWebRequest的客戶端,然後的代表?我對這個問題的分析是否正確?
謝謝您的輸入。