当Fiddler未运行时,服务器返回421 HTTP错误

本文关键字:返回 HTTP 错误 服务器 Fiddler 运行时 | 更新日期: 2023-09-27 18:18:32

我正在为Pixiv构建一个API,到目前为止,我已经成功完成了登录过程,并按标签进行搜索。

现在我想下载所选网页上的图像。一开始我得到一些证书错误。我通过暂时忽略证书验证来修复这个问题。

然后一件非常有趣的事情发生了……如果Fiddler在后台运行-响应被成功接收,我可以下载图像。没问题。

但是当Fiddler没有运行时,远程服务器返回421错误代码

我已经尝试过的事情:

  • 手动关闭每个响应并使用"using"语句
  • 强制Keep-Alive头。
  • 明确声明使用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未运行时,服务器返回421 HTTP错误

看起来我只是瞎了。"imgLink"始终设置了错误的主机名,但我没有注意到这一点,因为主机名非常相似。我猜提琴手会自动帮我解决这个问题……

下次我一定会再三检查主机名。谢谢你的帮助。