首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取“远程服务器返回一个错误:(403)禁止”错误--无论我做什么

获取“远程服务器返回一个错误:(403)禁止”错误--无论我做什么
EN

Stack Overflow用户
提问于 2020-05-16 10:18:45
回答 1查看 4.3K关注 0票数 2

我得到“远程服务器返回一个错误:(403)禁止。”每次我向一个网站提出请求时都会出错。我也尝试了我在浏览器上看到的每一个请求时看到的标题,并且我仍然得到相同的error.What来修复这个错误吗?这是.NET Core 3上的一个控制台应用程序。

代码语言:javascript
复制
        var url = "my-url";
        var client = new WebClient();
        client.Headers.Add("User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36");
        client.Headers.Add("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"); 
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
        var html = client.DownloadString(url);

未处理异常。System.Net.WebException:远程服务器返回一个错误:(403)禁止.

EN

回答 1

Stack Overflow用户

发布于 2020-05-16 20:37:38

发生这种情况的原因很可能是由您所针对的站点执行的一些web抓取对策。

为了传递它,您应该尽可能地模拟一个真正的浏览器。这将通过设置必要的头来实现。

代码语言:javascript
复制
client.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml");
client.Headers.Add("Accept-Encoding", "gzip, deflate");
client.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0");
client.Headers.Add("Accept-Charset", "ISO-8859-1");

以上是浏览器使用的一些基本标题,尝试它们,如果仍然不能工作,我建议继续关注这个方向。

Step2:

使用任何类型的网络代理(如Fiddler )从浏览器访问此网站,并拦截请求中的标头。然后在应用程序中模仿它们。这应该是100%的效果。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61835224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档