Java通过设置Referer反盗链
JAVA 设置 通过 REFERER 盗链
2023-06-13 09:14:11 时间
下面是完整的代码。
复制代码代码如下:
packagecn.searchphoto.util;
importjava.io.File;
importjava.io.FileOutputStream;
importjava.io.InputStream;
importjava.io.OutputStream;
importjava.net.URL;
importjava.net.URLConnection;
importjava.util.zip.GZIPInputStream;
/**
*下载远程网站的图片,通过设置Referer反反盗链。
*
*@authorJAVA世纪网(java2000.net,laozizhu.com)
*/
publicclassImageDownloader{
/**
*下载文件到指定位置
*@paramimgurl下载连接
*@paramf目标文件
*@return成功返回文件,失败返回null
*/
publicstaticFiledownload(Stringimgurl,Filef){
try{
URLurl=newURL(imgurl);
URLConnectioncon=url.openConnection();
intindex=imgurl.indexOf("/",10);
con.setRequestProperty("Host",index==-1?imgurl.substring(7):imgurl.substring(7,index));
con.setRequestProperty("Referer",imgurl);
InputStreamis=con.getInputStream();
if(con.getContentEncoding()!=null&&con.getContentEncoding().equalsIgnoreCase("gzip")){
is=newGZIPInputStream(con.getInputStream());
}
byte[]bs=newbyte[1024];
intlen=-1;
OutputStreamos=newFileOutputStream(f);
try{
while((len=is.read(bs))!=-1){
os.write(bs,0,len);
}
}finally{
try{
os.close();
}catch(Exceptionex){}
try{
is.close();
}catch(Exceptionex){}
}
returnf;
}catch(Exceptionex){
ex.printStackTrace();
returnnull;
}
}
}
相关文章
- java calendar获取年_Java Calendar获取年、月、日、时间,设置年、月、日
- java double转decimal_Java中Double与BigDecimal的相互转换
- java Calendar 中设置时间为0点 0 分 0 秒
- java parrallel for,Java 8 parallel forEach进度指示
- MySQL字段类型如何转为java_Java JDBC中,MySQL字段类型到JAVA类型的转换
- java session id 生成_Java通过sessionId获取Session「建议收藏」
- Java xml数据格式返回实现
- java中map根据value找key_Java Map和Map<String, Object>类型,map通过value找key
- java 文件上传到服务器_Java上传文件到服务器端的方法「建议收藏」
- java实现国密SM4加密「建议收藏」
- 单个用户及Ip请求频率限制思路(附java实现)
- Java中使用poi导入、导出Excel详解编程语言
- 程序Linux下构建Java应用:从入门到精通(linux下开发java)
- java foreach原理详解编程语言
- 使用Java连接Linux服务器的简单方法(java连接linux)
- Java 调用 MySQL,编写数据库程序(java导入mysql)
- 时间使用Java设置Redis键过期时间(redisjava过期)
- 时间 Java编程中使用Redis设置数据过期时间(redisjava过期)
- 时间设置精准把握:Redis Java过期时间设置技巧(redisjava过期)
- 时间设置Redis对Java对象缓存的过期时间(redisjava过期)
- 时间设置Redis缓存的Java中的过期时间(redisjava过期)
- 时间如何设置Redis中Java的过期时间(redisjava过期)
- 时间解决Java调用Redis设置过期时间问题(redisjava过期)
- 时间解决Redis中Java客户端设置过期时间问题(redisjava过期)
- 时间设置Java使用Redis中Key的过期时间(redisjava过期)
- 时间解决Java操作Redis设置过期时间(redisjava过期)
- Java使用Redis设置过期的实现(redisjava过期)
- 时间如何在Java中设置Redis数据的过期时间(redisjava过期)
- 进程Linux下创建多个Java进程的简易方法(linux 多个java)
- java设置session过期时间的实现方法