谢谢回复,希望大佬的产品能让更多用户注意到隐私泄露问题,个人开发者不易,加油!
web端有个vd_source的参数,是uid的md5值
实测并不是uid的md5值,但是他始终是一个固定值,所以肯定是某个特征
看源码是有点像和 uid 有关
handleShareLink: function(t) {
var e, n, r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, i = {};
(t && (i.share_source = t),
null !== (e = this.userInfo) && void 0 !== e && e.mid) && (i.vd_source = Jr()(null === (n = this.userInfo) || void 0 === n ? void 0 : n.mid.toString()));
var o = X(this.archiveLink, i)
, a = ""
, s = "";
return r.withTitle && (a = "【".concat(this.videoData.title, "】 ")),
r.withMarkedPt && this.hasMarkedPt && (s = "【精准空降到 ".concat(this.shareTimeStamp, "】 "),
o += "&t=".concat(this.currentSecondsWhenShare)),
a + s + o
},
checkLoginInfoForHeaderV3: function() {
var t = r(195);
if (this.setUser(this.userInfo),
this.userInfo.isLogin) {
if (!this.$route.query.vd_source) {
var e = t(this.userInfo.mid);
B({
type: "tech",
c: "vd",
d: "source",
e: "tech"
}, {
msg: JSON.stringify({
mid: this.userInfo.mid,
vd: e
})
}),
this.$router.replace({
query: Object.assign({}, this.$route.query, {
vd_source: e
}),
hash: this.$route.hash
})
}
} else
An.a.watch((function(t) {
0 === t.code && kn.$emit("update-login-state", t)
}
))
},
checkLoginInfoForHeaderV3: function() {
var t = r(195);
if (this.setUser(this.userInfo),
this.userInfo.isLogin) {
if (!this.$route.query.vd_source) {
var e = t(this.userInfo.mid);
B({
type: "tech",
c: "vd",
d: "source",
e: "tech"
}, {
msg: JSON.stringify({
mid: this.userInfo.mid,
vd: e
})
}),
this.$router.replace({
query: Object.assign({}, this.$route.query, {
vd_source: e
}),
hash: this.$route.hash
})
}
} else
An.a.watch((function(t) {
0 === t.code && kn.$emit("update-login-state", t)
}
))
},
知乎也有人分析说是 uid 的 hash 值
但我尝试用知乎的 py 文件打印后的加密值和我的 vd_source 并不一样
也试了在线解密,也没结果
py 文件是 @苶诺 提供的
@繁星 的回答也有参考价值
用户名uid这类还好毕竟网站页面都是公开的
什么网络状况 机型 设备版本号 系统版本号什么的才是 甚至包含分享记录,点名 微信公众号
使用知乎答主@繁星 的方法测试了我的跟踪参数,碰撞完的结果和UID并不相同,或许里面还有门道…
明文数据有两种,一种是字符串格式的uid,一种是数字格式的,偶尔会变换格式,中处理方式不同,md5就不一样
还有小红书更新了分享链接,appuid->shareRedId,没有明文的uid了,然而 …
B站这个算比较好的了吧
不知道如何解密对应出UID
我水平有限而已,客户端生成如果不是非对称加密都能还原,非对称密文都比较长,b站这个短点大概率是aes找到密钥就能解
哈哈 期待你搞定B站的那天
看样子应该是个找分享人的工具,隐私什么的应该就是另外的工具了吧
楼主的工作还是有意义的,我也挺在意分享链接的泄密问题,比如他人分享的b站链接我往往要用个短链接还原工具来还原出原始视频地址,因为正如楼内Y_z所言这些分享链接实在包含太多跟踪参数,所以我对于这类链接是能清理就尽量清理简化。
此外我想请教个问题,对于这类隐含跟踪参数的链接想要脱敏去隐私化的话有没有什么简便些的做法?目前我个人是在一些提供短链接还原之类的工具网站上做清理的,但是这类网站也不见得一定安全,所以想问是否有更便捷或是更安全的工具来对这些链接进行清理?
如果是 Android 平台,有个叫 URLcheck 的应用,可以在分享链接前清除其中的跟踪参数:
如果您用 Fcitx 5 for Android还有个剪切板过滤插件,也有类似的效果:
如果在其他平台,个人认为最好的方法其实是手工清理。也不是很难,只要您了解跟踪参数的一般写法就可以了。
一般而言,跟踪大约是这种形式:
?A=xxx&B=xxx...
如果您学习过编程,您应该会猜到,A=xxx
是给变量赋值的语句。那么,如果您在链接中看到类似的内容,这有可能是跟踪参数,您将其删除即可。
另外,我们也可以通过了解常用的网站的 URL 格式来区分正常内容和跟踪参数。比如 b 站视频:
https://www.bilibili.com/video/BVxxxxx/
那么,如果您在 BV 号后面看到其他的尾巴,那么就可以考虑将其去掉。
不过需要注意的是,符合上述格式的未必是跟踪参数,还有可能是返利链接,即其他人点击这些返利链接,链接分享者可以得到一定的收益。
此外,还有些网站的链接格式本来就和跟踪参数很像,比如:
https://www.solidot.org/story?sid=77679
但我目前看到的网站,正常链接就长这个样子的,只有 Solidot 一家。
感谢解答,这个URLcheck我之前还真用过,不过印象中对个别链接也不太好用所以后来就不怎么用了,也许是有的长连接实际上不含跟踪参数所以不起效?至于Fcitx我会下来试一下
另外关于手工清理我也有尝试过,有些并不是那么好处理的……对于一些看起来很像跟踪参数的后缀,往往去掉了之后就不再能访问原先指向的网址,但是保留下来的原链接又特别长——其实这种是否意味着它就不是跟踪参数了?
牛的 用上了
可能是代码层面检测了userid字段的长度吧,或者因为你这个是12345打不开主页,所以返回的是没事
加上了
楼主能否帮忙解惑一下?