使用WebClient时出现奇怪的403错误

时间:2017-07-16 14:05:47

标签: c# python webclient

我正在尝试发送GET请求以下载http://footlocker.com/的HTML内容:

Console.WriteLine(new WebClient().DownloadString("http://footlocker.com"));

但我收到403错误。为了测试,我使用Python尝试发送GET请求(请求库),我成功收到了200响应以及HTML内容:

r = requests.get('http://footlocker.com')
print(r.text)

为了看到差异,我在Python请求中打印了标题,这就是我得到的:

{'User-Agent': 'python-requests/2.13.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}

所以我尝试使用Python请求User-Agent字符串发送WebClient请求:

WebClient wc = new WebClient();
wc.Headers[HttpRequestHeader.UserAgent] = "python-requests/2.13.0";
Console.WriteLine(wc.DownloadString("http://footlocker.com"));

但我仍然有403. Python的请求库和WebClient之间可能有什么区别?我错过了一些明显的东西吗?为什么会这样?

1 个答案:

答案 0 :(得分:1)

想出来,需要添加这个标题:

wc.Headers.Add("Accept", "*/*");

最终代码:

WebClient wc = new WebClient();
wc.Headers.Add("User-Agent", "python-requests/2.13.0");
wc.Headers.Add("Accept", "*/*");
Console.WriteLine(wc.DownloadString("http://footlocker.com"));