【发布时间】:2023-04-01 07:14:02
【问题描述】:
我正在尝试使用 C# WebClient 从这些链接下载文件,但出现 403 错误。
我尝试使用不同的用户代理,接受编码等。 我替换并尝试了从 url 到 http 的 https,但没有成功。 当我将这些 url 粘贴到 Chrome 或 FireFox 或 IE 中时,我可以下载文件,有时它会给出 403 错误,然后我将 https 从 url 替换为 http,它会下载。但是在webclient中没有成功 尝试 Fiddler 检查,没有成功 有人可以在你的系统中尝试,解决这个问题。
这是我的代码:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
WebClient client= new WebClient();
Uri request_url = new Uri("https://www.digikey.com/product-search/download.csv?FV=ffe00035&quantity=0&ColumnSort=0&page=5&pageSize=500);
//tried http also http://www.digikey.com/product-search/download.csv?FV=ffe00035&quantity=0&ColumnSort=0&page=5&pageSize=500
client.Headers.Add("user-agent", " Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0");
client.DownloadFile(request_url, @"E:\123.csv");
我知道有很多与这个话题相关的话题,我都试过了,都没有成功,请不要标记重复。在你的系统中试试,这
注意:相同的代码适用于其他网站,仅适用于本网站会出错。
【问题讨论】:
-
403 表示授权失败。您应该发送凭据吗?
-
是的,Jesse de Wit,我关注了这个帖子stackoverflow.com/a/8021144/4414852,但没有成功。
-
我认为这是没有正确 cookie 的问题。如果我将提供的链接之一复制到私人浏览器窗口中,我会收到 403 错误。如果我尝试刷新页面,它将起作用。查看调试控制台,我可以看到在 403 错误之后我有一个会话 cookie。如果我删除此 cookie,我会再次收到 403 错误。您需要以某种方式获取会话 cookie。
-
嗨 amura cxg 你能告诉我如何获取会话 cookie。
标签: c# http-status-code-403 webclient webclient.uploaddata