私はPixiv用のAPIを構築しています。これまでのところログインプロセスを完了してタグで検索することができました。Fiddlerが実行されていないときにサーバーから421のHTTPエラーが返される
今、私はをダウンロードしたい選択したWebページ上の画像。最初はいくつかの証明書のエラーが発生しました。私は一時的に証明書の検証を無視して修正しました。
はその後、非常に興味深いことが起こった...フィドラーがバックグラウンドで実行されていた場合 - 応答が正常に受信し、私は、画像をダウンロードすることができました。何も問題はありません。
ただし、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();
}
}
(私も送ります画像リンクを得るために、この1の前に要求)「imgLink」の
例:012
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
フィドラーは、HTTPプロトコル違反の兆候を示さない。
フィドラーこのとして送信された要求を表示します。https://i3.pixiv.net/img-original/img/2014/02/09/00/10/03/41485846_p0.jpg
Fiddlerは、アプリのトラフィックを実行しているときに「HTTPプロトコル違反」の警告を表示しますか? 'imgLink'変数の値の例は何ですか?同じ' i.pximg.net'ホスト名を指定していますか? – EricLaw
質問を編集しました。 "imgLink"とFiddlerの例を追加しました。フィドラーのリクエストを見ると、 "imgLink"の "3"が消えているようです。生データ – CryShana
'.Host'の値を正しい値(' i3.pixiv.net')に修正すると、これは役に立ちますか? – EricLaw