2016-11-17 114 views
0

我正在爲Pixiv構建一個API,並且到目前爲止,我已經設法完成登錄過程並通過標記進行搜索。當Fiddler沒有運行時,服務器返回421 HTTP錯誤

現在我想下載所選網站上的圖像。起初,我收到了一些證書錯誤。我通過暫時忽略證書驗證來解決這個問題。

然後發生了一件非常有趣的事情......如果Fiddler在後臺運行 - 響應成功接收,我可以下載圖像。沒有問題,無論如何。

但是當提琴手未運行時,遠程服務器返回了421錯誤代碼

事情我已經嘗試:

  • 手動關閉每一個響應並使用強制保持活動標題中的「使用」的聲明
  • 明確聲明/使用HTTP 1.1
  • 的HttpWebRequest對象上更改代理服務器設置

我的圖像請求的代碼如下所示:

HttpWebRequest imagerequest = (HttpWebRequest)WebRequest.Create(imgLink); 
imagerequest.Host = $"i.pximg.net"; 
imagerequest.UserAgent = USER_AGENT; 
imagerequest.Accept = "image/webp,image/*,*/*;q=0.8"; 
imagerequest.Referer = post.PostLink; 
imagerequest.Headers.Add("Accept-Encoding", "gzip, deflate, sdch, br"); 
imagerequest.Headers.Add("Accept-Language", "en-US,en;q=0.8,sl;q=0.6"); 

byte[] imagecontent; 
using (var imageresponse = (HttpWebResponse)imagerequest.GetResponse()) 
{ 
    using (var imagestream = imageresponse.GetResponseStream()) 
    { 
     imagecontent = imagestream.ReadStream(); 
    } 
} 

(我還發要求在此之前獲得圖像鏈接)

「imgLink」示例:

https://i3.pixiv.net/img-original/img/2014/02/09/00/10/03/41485846_p0.jpg

的Fiddler顯示所發送的請求,因爲這:

GET https://i.pximg.net/img-original/img/2014/02/09/00/10/03/41485846_p0.jpg HTTP/1.1 
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36 
Accept: image/webp,image/*,*/*;q=0.8 
Referer: http://www.pixiv.net/whitecube/user/2824699/illust/41485846 
Accept-Encoding: gzip, deflate, sdch, br 
Accept-Language: en-US,en;q=0.8,sl;q=0.6 
Host: i.pximg.net 

的Fiddler不顯示HTTP協議違反的任何跡象。

+1

Fiddler在運行應用流量時是否顯示任何「HTTP協議違例」警告?什麼是'imgLink'變量的示例值 - 是否指定了相同的'i.pximg.net'主機名? – EricLaw

+0

編輯了這個問題。新增了一個「imgLink」的例子以及小提琴手演示的內容。 「imgLink」中的「3」在看提琴手的請求時似乎消失原始數據 – CryShana

+0

如果將'.Host'值更正爲正確的值('i3.pixiv.net'),這有幫助嗎? – EricLaw

回答

0

好像我只是失明。 「imgLink」有錯誤的主機名設置整個時間,但我沒有注意到它,因爲主機名非常相似。我猜Fiddler是自動修復這個對我來說...

下次我一定會三重檢查主機名。感謝您的幫助。

+1

是的,每次修復它時,Fiddler *都應該顯示「HTTP協議違例」;如果您沒有將Fiddler配置爲顯示違規,您應該至少在「工具」>「Fiddler選項」>「常規」>「協議違例」內啓用「關鍵錯誤警告」。 – EricLaw

+0

我已經設置,但沒有警告。也許我應該把它設置爲「警告所有錯誤」,而不是? – CryShana

相關問題