我正在尝试发送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之间可能有什么区别?我错过了一些明显的东西吗?为什么会这样?
答案 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"));