我正在爲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協議違反的任何跡象。
Fiddler在運行應用流量時是否顯示任何「HTTP協議違例」警告?什麼是'imgLink'變量的示例值 - 是否指定了相同的'i.pximg.net'主機名? – EricLaw
編輯了這個問題。新增了一個「imgLink」的例子以及小提琴手演示的內容。 「imgLink」中的「3」在看提琴手的請求時似乎消失原始數據 – CryShana
如果將'.Host'值更正爲正確的值('i3.pixiv.net'),這有幫助嗎? – EricLaw