C#采集图片时出现“远程服务器返回错误:(403)已禁止”提示
|
admin
2023年5月23日 9:0
本文热度 664
|
:C#采集图片时出现“远程服务器返回错误:(403)已禁止”提示

今天在下载一个网站的图片时,提示403 Forbidden,对方服务器是使用了https证书的。
我是用的WebClient去下载的,当时写的代码就是简单的声明和下载:
WebClient client = new WebClient();
var result = client.DownloadData(url);
网上翻找了一些资料,说得比较多的是要用HttpWebRequest去获取,但是我尝试了没有成功。
这种情况明显就是图片远程服务器端做了处理,防止盗用图片,我单独用浏览器访问图片地址时,多次刷新后浏览器也会有相同提示。
这种一般思路是f12查看network情况,模拟浏览器访问。
研究后大致有如下问题:
wc的证书凭证设置
user-agent设置
referer设置
host设置
最后的代码如下:
WebClient client = new WebClient();
client.Credentials = CredentialCache.DefaultCredentials;
client.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.62 Safari/537.36");
client.Headers.Add("Host", new Uri(url).Host);
client.Headers.Add("Referer", refurl);
var result = client.DownloadData(url);
到此问题解决。
该文章在 2023/5/23 9:19:07 编辑过
| |
全部评论1 |
|
admin
2023年5月23日 9:4
C#爬网页时“远程服务器返回错误: (403) 已禁止”解决方法
HttpWebRequest myReq = (HttpWebRequest)WebRequest.create(uri);
//这个一定要加上,在某些网站没有会发生"远程服务器返回错误: (403) 已禁止。"错误 //myReq.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; QQWubi 133; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; CIBA; InfoPath.2)"; //myReq.Method = "GET";
myReq.Method = "GET"; myReq.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; myReq.Headers.Add("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3"); myReq.UserAgent = "Mozilla/5.0 (Windows NT 5.2; rv:12.0) Gecko/20100101 Firefox/12.0";
HttpWebResponse result = (HttpWebResponse)myReq.GetResponse(); 该评论在 2023/5/23 9:05:38 编辑过
|