• 前言

    今天想下载几张好看的壁纸,然后发现了一张是自己比较喜欢的额。然后点进去看看,WOW!好多好看的壁纸呀,于是我就起了贪念。哈哈!想把他们这一组图片打包下载,小白的方法就是一张一张下载,那样对于我们程序员来说是很low的办法。于是我考虑使用万能的java来下载他们的组图,花2小时鼓捣一下,但是觉得网上的文章大多是于抄袭,有些又不是很全。于是就了这篇文章,希望对各位有帮助。但不建议将此方法用作商业,因为盗用别人的图片属于违法行为!!!
  • 图片防盗链

    很多网站为了防止别的网站盗用自己网站的图片,就是用了图片防盗链技术。也就是说,当我获取图片的url之后,直接在浏览器或者代码里访问。举个栗子:比如我想使用url要直接在浏览器中打开一张图片,但是出现的却是另外一张警告图片,里面写着:想查看图片请访问XXX网站。这就是一个典型的图片防盗链,其原理就是会在request的请求头里携带一个“referer”的变量,以此来判断该请求是从哪个链接跳转过来的。如果没有携带“referer”或者不是从本网站跳转一律返回警告或提示图片。
  • 破解防盗链

    知其原理,破其规律。既然咱们知道防盗链的原理,那我们可以很简单的伪装一个“referer”就可以了,也就是在请求之前先在request的header里添加一个变量为referer:http.xxx.xxxcom 也就是该网站的随意的一个url。
    package com.cmc.test;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    /**
     * 使用多线程下载防盗链图片
     *
     * @author chenmc
     * @date 2017年8月30日 下午2:39:23
     */
    public class DownloadPicture {
    
    	public static void main(String[] args) throws InterruptedException {
    		for (int i = 1; i <= 10; i++) {
    			int n = i;
    			Thread t = new Thread(){
    				@Override
    				public synchronized void run() {
    					try {
    						httpRequest(n);
    					} catch (Exception e) {
    						e.printStackTrace();
    					}
    					super.run();
    				}
    			};
    			t.start();
    		}
    	}
    
    	/**
    	 * 发起http请求
    	 *
    	 * @author chenmc
    	 * @date 2017年8月30日 下午2:36:09
    	 * @param n
    	 * @throws Exception
    	 */
    	public static void httpRequest(int n) throws Exception {
    		for (int i = (n-1)*5 > 1 ? (n-1)*5 : 1; i < n*5; i++) {
    			long startTime = System.currentTimeMillis();
    			String path = "C:/Users/admin/Pictures/壁纸/" + String.format("%03d", i) + ".jpg";
    			//这里url写你想要下载图片的url
    			String uri = String.format("http://bizhi.xxx.com/rluo/%s.jpg", String.format("%03d", i));
    			System.out.println(uri);
    			URL url = new URL(uri);
    			HttpURLConnection conn = (HttpURLConnection)url.openConnection();
    			conn.setRequestProperty("referer", "http://bizhi.xxx.com"); //这是破解防盗链添加的参数
    			conn.setRequestMethod("GET");
    			conn.setConnectTimeout(5 * 1000);
    			InputStream inStream = conn.getInputStream();//通过输入流获取图片数据
    			readInputStream(inStream, path);//得到图片的二进制数据,并保存
    			long endTime = System.currentTimeMillis();
    			System.out.println(path + "--耗时:" + (endTime-startTime)/1000 + "s");
    		}
    	}
    
    	/**
    	 * 保存图片
    	 *
    	 * @author chenmc
    	 * @date 2017年8月30日 下午2:35:54
    	 * @param inStream
    	 * @param path
    	 * @throws Exception
    	 */
    	 public static void readInputStream(InputStream inStream, String path) throws Exception{
    		FileOutputStream fos = new FileOutputStream(new File(path));
    		byte[] buffer = new byte[102400];
    		int len = 0;
    		while( (len=inStream.read(buffer)) != -1 ){
    			fos.write(buffer, 0, len);
    		}
    		inStream.close();
    		fos.flush();
    		fos.close();
    	 }
    }

    上述例子我使用了多线程技术,因为我想下载的壁纸有247张之多,所以我使用了50个线程,每个线程下载5张。因为是自己下载壁纸用的,所以没有考虑效率之类的,这里也希望大家可以自己去改进它。

    最后给大家一波福利~~~好看的夕阳壁纸1 夕阳壁纸2 因为我上传的资源限制大小为80M,所以分开上传了~因为这是图片资源,所以csdn可能会删除哦,想要的同学们尽快下载吧!

  • 给大家养养眼~~~

Java破解图片防盗链的更多相关文章

  1. Nginx中防盗链(下载防盗链和图片防盗链)操作记录

    日常运维工作中,设置防盗链的需求会经常碰到,这也是优化网站的一个必要措施.今天在此介绍Nginx中设置下载防盗链和图片防盗链的操作~ 一.Nginx中下载防盗链的操作记录对于一些站点上的下载操作,有很 ...

  2. ASP.NET 实现简单的图片防盗链介绍

    在此,网站图片防盗链的方法是,通过获取Http请求头中的 Referer 标头与本网站域名比较,来判断用户是否来自本站跳转过来的 . 创建一个全局处理程序,用来处理images目录下的图片的直接请求: ...

  3. Nginx修改配置实现图片防盗链

    一般情况下,防盗链是针对软件下载和图片的,由于一般的站点不提供资源下载,所以本文主要是针对图片的防盗链 1.如果对全站图片做防盗链,至少需要一个另外的域名存放指向图片.因为如果对全站图片做了防盗链,包 ...

  4. CSS代码实现图片防盗链

    CSS代码实现图片防盗链的方法其实很简单.在CSS文件中添加以下代码: img { filter:exPRession( this.不能去掉 ? "" : ( (!this.com ...

  5. asp.net MVC 网站图片防盗链的几种方法

    目录 1. 通过 URL Rewrite Module 组件 2. 通过 nginx 图片防盗链 3.自定义 HttpHandler 处理 4. 通过 MVC 自定义路由规则防盗链 5. 通过 MVC ...

  6. php解决微信文章图片防盗链

    解决微信文章图片防盗链 function actionWechatImg() { header('Content-type: image/jpg'); $url = $_GET['url']; $re ...

  7. 第十三节:HttpHander扩展及应用(自定义扩展名、图片防盗链)

    一. 自定义扩展名 1. 前言 凡是实现了IHttpHandler接口的类均为Handler类,HttpHandler是一个HTTP请求的真正处理中心,在HttpHandler容器中,ASP.NET ...

  8. Referer图片防盗链

    前几天讲了<nginx下载防盗链>,今天继续说下图片防盗链. 他们两个使用的指令不同,前者使用secure link,并且需要程序配合,但是效果非常好;后者不需要程序配合,根据图片来源来实 ...

  9. Nginx中防盗链(下载防盗链和图片防盗链)及图片访问地址操作记录

    日常运维工作中,设置防盗链的需求会经常碰到,这也是优化网站的一个必要措施.今天在此介绍Nginx中设置下载防盗链和图片防盗链的操作~ 一.Nginx中下载防盗链的操作记录对于一些站点上的下载操作,有很 ...

随机推荐

  1. C++11 带来的新特性 (1)

    1 语法改进 1.1 模板表达式中的空格 在c++03 及以前 vector<list<int>>; //Error vector<list<int> > ...

  2. Ubuntu 16.04.3 LTS u盘-安裝教程(填坑)

    Ubuntu 16.04.3 LTS 下载地址: https://www.ubuntu.com/download/desktop 下载u盘后文件为iso,可以选择UltraISO制作U盘启动,也可以直 ...

  3. 接口管理工具——阿里RAP

    1.阿里官网RAP a.进入官网 http://rapapi.org/org/index.do b.项目创建:创建 团队 —— 创建 产品线 —— 创建 分组 —— 创建 项目 c.然后就可以创建 页 ...

  4. Codeforces 938D. Buy a Ticket (最短路+建图)

    <题目链接> 题目大意: 有n座城市,每一个城市都有一个听演唱会的价格,这n座城市由m条无向边连接,每天变都有其对应的边权.现在要求出每个城市的人,看一场演唱会的最小价值(总共花费的价值= ...

  5. python3 实现对代码文件中注释的翻译

    心血来潮,昨天看见群里讨论一段图片转pdf的代码,直接拿过来发现不能用,原来是因为代码中传的文件对象不对,源码中说传递的是一个文件路径或一个文件对象.他传的是一个文件名,很是尴尬. 想了想,主要原因还 ...

  6. Markdown初使用

    Markdown是一种纯文本格式的标记语言.通过简单的标记语法,它可以使普通文本内容具有一定的格式. 相比WYSIWYG编辑器 优点:1.因为是纯文本,所以只要支持Markdown的地方都能获得一样的 ...

  7. sqlzoo:using group by and having

    For each continent show the number of countries: SELECT continent, COUNT(name) FROM world GROUP BY c ...

  8. mysql8.0.13修改密码

    在安装完数据库后,由于自己不小心直接关闭了安装窗口,或者长时间没有使用root用户登录系统,导致忘记了root密码,这时就需要重置MySQL的root密码.当然,最简单方式自然是删除数据库的data目 ...

  9. 远程dump导出svn项目

    使用TortoiseSVN 安装目录下的svnrdump.exe 工具进行导出 1.cmd 到工具路径下 C:\Program Files\TortoiseSVN\bin svnrdump.exe d ...

  10. Vue-router重修02

    1.权限控制 例如:登录后登录前的页面不一样 借助路由元信息完成 一个示例: <!DOCTYPE html> <html lang="en"> <he ...