一些网站为了防止自己的图片被其它网站引用,添加了防盗链功能。
其实破解也很简单,也就是方位图片的时候,给它加一个referer参数。
比如你现在访问这个连接
https://cckb.lib.tsinghua.edu.cn/proxy/C/34943/5313359-fm.jpg!cckb_b
这是一本书的封面,如果你直接打开的话,会保一个错误信息。
接下来,我们使用C#来下载这个图片(添加合法的referer参数)
using (HttpClient httpClient = new HttpClient())
{
string tmp_image = "temp.jpg";
string image_url = "https://cckb.lib.tsinghua.edu.cn/proxy/C/34943/5313359-fm.jpg!cckb_b";
string image_ref_url = "http://libopac.cdut.edu.cn/12313";
File.Delete(tmp_image);
httpClient.DefaultRequestHeaders.Add("referer", image_ref_url );
HttpResponseMessage res = httpClient.GetAsync(image_url).Result;
var imageBytes= res.Content.ReadAsByteArrayAsync().Result;
File.WriteAllBytes(tmp_image, imageBytes);
Process.Start(tmp_image);
}
一般防盗链,只做到了域名级别,因此为image_ref_url 提供一个域名地址就行(比如http://libopac.cdut.edu.cn),域名后面随便填写都行。更佳的方式:为域名后面添加随机字符串。