评论

收藏

[JSP] Java 通过设置Referer反盗链

开发技术 开发技术 发布于:2021-10-24 11:23 | 阅读数:289 | 评论:0

下面是完整的代码。
package cn.searchphoto.util; 
import java.io.File; 
import java.io.FileOutputStream; 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.net.URL; 
import java.net.URLConnection; 
import java.util.zip.GZIPInputStream; 
/** 
* 下载远程网站的图片,通过设置Referer反反盗链。 
* 
* @author JAVA世纪网(java2000.net, laozizhu.com) 
*/ 
public class ImageDownloader { 
/** 
* 下载文件到指定位置 
* @param imgurl 下载连接 
* @param f 目标文件 
* @return 成功返回文件,失败返回null 
*/ 
public static File download(String imgurl, File f) { 
try { 
URL url = new URL(imgurl); 
URLConnection con = url.openConnection(); 
int index = imgurl.indexOf("/", 10); 
con.setRequestProperty("Host", index == -1 ? imgurl.substring(7) : imgurl.substring(7, index)); 
con.setRequestProperty("Referer", imgurl); 
InputStream is = con.getInputStream(); 
if (con.getContentEncoding() != null && con.getContentEncoding().equalsIgnoreCase("gzip")) { 
is = new GZIPInputStream(con.getInputStream()); 
} 
byte[] bs = new byte[1024]; 
int len = -1; 
OutputStream os = new FileOutputStream(f); 
try { 
while ((len = is.read(bs)) != -1) { 
os.write(bs, 0, len); 
} 
} finally { 
try { 
os.close(); 
} catch (Exception ex) {} 
try { 
is.close(); 
} catch (Exception ex) {} 
} 
return f; 
} catch (Exception ex) { 
ex.printStackTrace(); 
return null; 
} 
} 
}
关注下面的标签,发现更多相似文章