博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Markdown引用微博图床被防盗链不加载响应403完美解决
阅读量:6279 次
发布时间:2019-06-22

本文共 2593 字,大约阅读时间需要 8 分钟。

使用一些MarkDown软件写博客时大都会设置图片自动上传,这样只需要复制一遍MarkDown文本即可粘贴到多个平台发布,很多免费的图床插件都是将图片上传至微博图床,毕竟免费。但微博并不会那么大方,在请求微博图片时会检测request头部Referer字段的值,来鉴别请求来源。

解决方法就是将Referer禁掉,例如可以在html文件中设置meta标签如下:

另一种方法是在每个img的标签设置referrerpolicy属性:

如果你的图片引用比较少还好,如果引用的图片多了,一个一个改就太麻烦,交给程序去帮我们做这件事就非常合适。

设计一个jar包,只需要执行一遍的java -jar,即可全自动扫描jar包所在目录下的所有md文件,并自动将 ![]() 更换为 <img> 标签的形式,且支持以追加参数的形式指定扫描目录。

jar包已上传,下载链接:

最后贴一下Java代码:

/** * 使用方法: * java -jar 的形式执行jar包 * 默认扫描jar包所在路径,不会递归扫描 * 可以追加参数 path=xxx 指定扫描xxx目录 */public class App {    public static void main(String[] args) throws IOException {        String path = null;        for (int i = 0; i < args.length; i++) {            String arg = args[i];            if (arg.startsWith("path=")){                path = arg.substring(5);                break;            }        }        if (path==null){            path = System.getProperty("user.dir");        }        System.out.println("--开始扫描目录:"+path);        File file = new File(path);        File[] list = file.listFiles();        if (list == null) {            System.out.println("--空目录");            return;        }        //创建输出目录        String out = path + "/out/";        new File(out).mkdir();        for (int i = 0; i < list.length; i++) {            String name = list[i].getName();            if (!(list[i].isFile() && (name.endsWith(".md") || name.endsWith(".MD")))) {                continue;            }            System.out.println("--"+list[i].getName());            try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(list[i])));                 BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(out+name))))            ) {                String line;                while ((line = reader.readLine()) != null) {                    String src = src(line);                    writer.write(src +"\n");                }                writer.flush();            }        }        System.out.println("--结束");    }    /**     * 提取img的src     */    private static String src(String s){        String[] split = s.split("!");        for (int i = 0; i < split.length; i++) {            if (split[i].length()>4&&split[i].contains("[")&&split[i].contains("]")&&split[i].contains("(")&&split[i].contains(")")){                int start = split[i].lastIndexOf("(");                int end = split[i].lastIndexOf(")");                String s1 = split[i].substring(start + 1, end);                s = s.replace("!" + split[i], "");            }        }        return s;    }}

转载于:https://www.cnblogs.com/yueshutong/p/11070709.html

你可能感兴趣的文章
高德开放平台开放源代码 鼓励开发者创新
查看>>
《高并发Oracle数据库系统的架构与设计》一2.5 索引维护
查看>>
《Exchange Server 2010 SP1/SP2管理实践》——2.4 部署外部网络环境
查看>>
Firefox 是 Pwn2own 2014 上攻陷次数最多的浏览器
查看>>
阿里感悟(十八)- 应届生Review
查看>>
《计算广告:互联网商业变现的市场与技术》一第一部分 在线广告市场与背景...
查看>>
话说模式匹配(5) for表达式中的模式匹配
查看>>
《锋利的SQL(第2版)》——1.7 常用函数
查看>>
《Arduino家居安全系统构建实战》——1.5 介绍用于机器学习的F
查看>>
jquery中hover()的用法。简单粗暴
查看>>
线程管理(六)等待线程的终结
查看>>
spring boot集成mongodb最简单版
查看>>
DELL EqualLogic PS存储数据恢复全过程整理
查看>>
《Node.js入门经典》一2.3 安装模块
查看>>
《Java 开发从入门到精通》—— 2.5 技术解惑
查看>>
Linux 性能诊断 perf使用指南
查看>>
实操分享:看看小白我如何第一次搭建阿里云windows服务器(Tomcat+Mysql)
查看>>
Sphinx 配置文件说明
查看>>
数据结构实践——顺序表应用
查看>>
python2.7 之centos7 安装 pip, Scrapy
查看>>