C#采集图片时出现“远程服务器返回错误:(403)已禁止”提示
				
									
					
					
						|  | 
							admin 2023年5月23日 9:0
								本文热度 1903 | 
					
				 
				 :C#采集图片时出现“远程服务器返回错误:(403)已禁止”提示
: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 编辑过
 |