欢迎光临
我们一直在努力

csdn 去除csdn博客上传图片水印

本帖最后由 zl20110000 于 2021-8-14 22:51 编辑

1.分析

  • 1.1 关键词搜索定位js

csdn 去除csdn博客上传图片水印


csdn 去除csdn博客上传图片水印

  • 1.2 从这里就可以看出生成水印的url  (这里有一个.gif判断,这里先埋个伏笔,等会找到位置后,可以利用这个规则修改生成的url)

csdn 去除csdn博客上传图片水印

  • 1.3 排查执行方法栈,发现函数onImageUpload,继续搜索,

csdn 去除csdn博客上传图片水印

  • 1.4 注意这个暴露出来的全局方法window.csdn.uploadSource,定位这个函数的js文件,可以通过断点,或者直接搜索uploadSource,定位的js文件,源码表示这是一个立即执行的函数表达式,在里面对window.csdn.uploadSource赋值。其实看到这里,基本流程都已经很清晰了。

csdn 去除csdn博客上传图片水印


csdn 去除csdn博客上传图片水印

  • 1.5 生成水印分为两种,1.上传图片,通过参数决定上传图片是否加上水印,这里可以通过,将watermark参数置空 2.还一种就是之前旧版的生成url链接的形式,这种直接去掉后面的参数就可以了

  • 1.6 回到之前的流程中,有一个setWatermark方法,这里有判断加水印的规则

2.注入js

加条件断点

重新定义 window.csdn.uploadSource 方法

还记得上面说的.gif伏笔吗,这里可以修改返回的url值,就可以避免生成的url附加水印参数

csdn 去除csdn博客上传图片水印

3.虽然来52很久了,但是没发过贴,不清楚可不可以贴写好的油猴脚本。如果有违规,我立马删掉

<div style="padding:15px 0;"><div style="font-size:12px;">[Asm] <em class="viewsource" style="cursor:pointer;font-size:12px;color:#369 !important;">纯文本查看</em> <em class="copycode" style="cursor:pointer;font-size:12px;color:#369 !important;">复制代码</em></div><pre class="brush: asm; gutter: true">~~~js
// ==UserScript==
// @name         csdn去除水印
// @namespace    https://greasyfork.org/scripts/465212
// @version      0.1
// @description  csdn去除水印
// @author       zl20110000
// @match       ://editor.csdn.net/
// @icon         https://g.csdnimg.cn/static/logo/favicon32.ico
// ==/UserScript==

(function() {
"use strict";
! function (e, t) {
function a(e) {
return Object.prototype.toString.call(e).match(/[object (.*?)]/)[1]
}

function r(e) {
    function r(e) {
        return new Promise(function (a, r) {
            t.ajax({
                url: "https://imgservice.csdn.net/direct/v1.0/image/upload",
                type: "get",
                contentType: "application/json",
                dataType: "json",
                data: {
                    watermark: o,
                    type: l,
                    rtype: p
                },
                headers: {
                    "x-image-app": s,
                    "x-image-dir": c,
                    "x-image-suffix": e.name.split(".")[e.name.split(".").length - 1]
                },
                xhrFields: {
                    withCredentials: !0
                },
                success: function (t) {
                    if (200 === t.code && t.data) {
                        var i = t.data,
                            c = new FormData,
                            s = {
                                key: "" + i.filePath,
                                policy: i.policy,
                                OSSAccessKeyId: i.accessId,
                                success_action_status: 200,
                                signature: i.signature,
                                callback: i.callbackUrl,
                                file: e
                            };
                        for (var o in s) Object.hasOwnProperty.call(s, o) && c.set(o, s[o]);
                        n(c, i.host, a, r)
                    } else r(t)
                },
                error: function (e) {
                    r(e)
                }
            })
        })
    }

    function n(e, a, r, n) {
        t.ajax({
            url: a,
            type: "post",
            contentType: !1,
            processData: !1,
            dataType: "json",
            mimeType: "multipart/form-data",
            data: e,
            xhrFields: {
                withCredentials: !0
            },
            success: function (e) {
                console.log(e);
                if (200 === e.code && e.data && e.data.imageUrl) {
                    e.data.imageUrl+="?_.gif"
                }
                console.log(e);
                r(e)
            },
            error: function (e) {
                n(e)
            }
        })
    }
    var i, c = e.dir,
        s = e.app,
        o = "",
        l = e.type,
        p = e.rtype;
    console.log(e);
    return i = "FileList" !== a(e.file) && "Array" !== a(e.file) ? [e.file] : Array.prototype.slice.call(e.file),
        function (e) {
            return Promise.all(e.map(function (e) {
                return r(e)
            }))
        }(i)
}
e.csdn = e.csdn || {}, e.csdn.uploadSource = r
console.log("替换完成",e.csdn.uploadSource);

}(window, jQuery);
})();
~~~<</div>

赞(0) 打赏
未经允许不得转载:哈哈网 » csdn 去除csdn博客上传图片水印

相关推荐

  • 暂无文章

评论 抢沙发

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏