:C#采集圖片時(shí)出現(xiàn)“遠(yuǎn)程服務(wù)器返回錯(cuò)誤:(403)已禁止”提示

今天在下載一個(gè)網(wǎng)站的圖片時(shí),提示403 Forbidden,對(duì)方服務(wù)器是使用了https證書(shū)的。
我是用的WebClient去下載的,當(dāng)時(shí)寫(xiě)的代碼就是簡(jiǎn)單的聲明和下載:
WebClient client = new WebClient();
var result = client.DownloadData(url);
網(wǎng)上翻找了一些資料,說(shuō)得比較多的是要用HttpWebRequest去獲取,但是我嘗試了沒(méi)有成功。
這種情況明顯就是圖片遠(yuǎn)程服務(wù)器端做了處理,防止盜用圖片,我單獨(dú)用瀏覽器訪(fǎng)問(wèn)圖片地址時(shí),多次刷新后瀏覽器也會(huì)有相同提示。
這種一般思路是f12查看network情況,模擬瀏覽器訪(fǎng)問(wèn)。
研究后大致有如下問(wèn)題:
wc的證書(shū)憑證設(shè)置
user-agent設(shè)置
referer設(shè)置
host設(shè)置
最后的代碼如下:
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);
到此問(wèn)題解決。
該文章在 2023/5/23 9:19:07 編輯過(guò)