csdn 去除csdn博客上传图片水印
本帖最后由 zl20110000 于 2021-8-14 22:51 编辑### 1.分析
- 1.1 关键词搜索定位js
- 1.2 从这里就可以看出生成水印的url(这里有一个`.gif`判断,这里先埋个伏笔,等会找到位置后,可以利用这个规则修改生成的url)
- 1.3 排查执行方法栈,发现函数`onImageUpload`,继续搜索,
- 1.4 注意这个暴露出来的全局方法`window.csdn.uploadSource`,定位这个函数的js文件,可以通过断点,或者直接搜索`uploadSource`,定位的js文件,源码表示这是一个立即执行的函数表达式,在里面对window.csdn.uploadSource赋值。其实看到这里,基本流程都已经很清晰了。
- 1.5 生成水印分为两种,1.上传图片,通过参数决定上传图片是否加上水印,这里可以通过,将watermark参数置空 2.还一种就是之前旧版的生成url链接的形式,这种直接去掉后面的参数就可以了
- 1.6 回到之前的流程中,有一个`setWatermark`方法,这里有判断加水印的规则
### 2.注入js
[加条件断点](https://www.52pojie.cn/thread-1485179-1-1.html)
重新定义 `window.csdn.uploadSource` 方法
还记得上面说的`.gif`伏笔吗,这里可以修改返回的url值,就可以避免生成的url附加水印参数
### 3.虽然来52很久了,但是没发过贴,不清楚可不可以贴写好的油猴脚本。如果有违规,我立马删掉
~~~js
// ==UserScript==
// @name csdn去除水印
// @namespace https://greasyfork.org/scripts/465212
// @version 0.1
// @descriptioncsdn去除水印
// @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(/\/)
}
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(".")
},
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);
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) ? : 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);
})();
~~~
随意csdn文章已存在的水印图片 能逆回原图吗
以前无意中觉得
.png不是图片了吗?
要不 “png 后面的东西删了,留个 ) 会怎么样”。结果,水印就没了,哈哈哈 xilidexiao 发表于 2021-8-14 21:58
随意csdn文章已存在的水印图片 能逆回原图吗
看1.5说明。服务端就已经加上水印了,其实,你上传的这些图片都是处理后的图片,以前图片里面可以加入一些自己的信息,比如很早之前的种子图片。现在csdn都会去除掉,有些图片还会被压缩。所有基本不可能逆向原图
// ==UserScript==
// @name csdn去除水印
// @namespace https://greasyfork.org/scripts/465212
// @version 0.1
// @descriptioncsdn去除水印
// @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(/\/)
}
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(".")
},
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);
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) ? : 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);
})();
这怎么还md和bbcode混排的{:301_1008:}
图片因为bbs的特有属性(其实是bug)推荐通过附件或者图片功能上传,
然后其他用md的就可以了 感谢分享
页:
[1]