js版解决方案
var url = 'https://mmbiz.qpic.cn/mmbiz_jpg/TAoksPVlXMI7dQPxiaUbAHvyJ19iaG9b2Ueh53iaqTsn6F8O3m63zcBibgNpujM1HNeCKX99vOov72LpHuqs92SMlg/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1';
var path = showImg(url);
console.log(path);
document.getElementById('img').innerHTML = path;
function showImg(url) {
var frameid = 'frameimg' + Math.random();
window.img = '<img id="img" src=\'' + url + '?' + Math.random() + '\' /><script>window.onload = function() { parent.document.getElementById(\'' + frameid + '\').height = document.getElementById(\'img\').height+\'px\'; }<' + '/script>';
return '<iframe id="' + frameid + '" src="javascript:parent.img;" frameBorder="0" scrolling="no" width="100%"></iframe>';
}
后台提供代理
ngnix等都行
这里提供一个java版的代码,用再整理 临时记录
<%@page contentType="image/jpeg" import="java.io.OutputStream,java.io.InputStream,java.net.URL,java.net.URLConnection" language="java"%>
<%
try{
OutputStream os = response.getOutputStream();
//获取图片路径url=http://www.sohu.com/images/aaa.jpg
String picPath = request.getQueryString();
//获取纯路径 http://www.sohu.com/images/aaa.jpg
picPath = picPath.substring(4,picPath.length());
//建立请求链接
URLConnection u = new URL(picPath).openConnection();
InputStream in = u.getInputStream();
if (null != in) {
int len;
byte[] b = new byte[1024];
while ((len = in.read(b)) != -1) {
os.write(b, 0, len);
}
os.flush();
in.close();
}
os.close();
out.clear();
//将图片内容重写到页面
out = pageContext.pushBody();
}catch(Exception e){
e.printStackTrace();
}
%>
然后在你所引用的别的网站页面的图片中
将<img src="http://comment.news.sohu.com/upload/as3rfsghgg/1.jpg"/>
换成:<img src="http://www.yourdomain.com/project/image.jsp?url=http://comment.news.sohu.com/upload/as3rfsghgg/1.jpg"/>
这样你就可以随意的将别的网站的图片放到自己公司的网站了。盗链成功了。
原理就是你创建的那个images.jsp文件将你url后的那个图片链接读取了然后重写到页面了。