: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 編輯過