百度网盘 logid 生成算法

2020-05-03 13:01:30 +08:00
 zzzain46

最近有个自动保存别人更新的分享文件到自己网盘的需求,看了下发现 post 的时候有个 logid 参数,搞不出来他的生成算法。有没有大佬研究过这个的指点一下

3207 次点击
所在节点    程序员
4 条回复
AX5N
2020-05-03 16:31:04 +08:00
你可以去 github 上找相关的项目看看,里面一般都会有。
dsg001
2020-05-03 16:52:43 +08:00
不用在意,直接去掉这个参数也能 post 成功
crab
2020-05-03 16:53:27 +08:00
max3
2020-05-30 19:33:02 +08:00
function getLogID(){
var name = "BAIDUID";
var u = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/~!@#¥%……&";
var d = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g;
var f = String.fromCharCode;
function l(e){
if (e.length < 2) {
var n = e.charCodeAt(0);
return 128 > n ? e : 2048 > n ? f(192 | n >>> 6) + f(128 | 63 & n) : f(224 | n >>> 12 & 15) + f(128 | n >>> 6 & 63) + f(128 | 63 & n);
}
var n = 65536 + 1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320);
return f(240 | n >>> 18 & 7) + f(128 | n >>> 12 & 63) + f(128 | n >>> 6 & 63) + f(128 | 63 & n);
}
function g(e){
return (e + "" + Math.random()).replace(d, l);
}
function m(e){
var n = [0, 2, 1][e.length % 3];
var t = e.charCodeAt(0) << 16 | (e.length > 1 ? e.charCodeAt(1) : 0) << 8 | (e.length > 2 ? e.charCodeAt(2) : 0);
var o = [u.charAt(t >>> 18), u.charAt(t >>> 12 & 63), n >= 2 ? "=" : u.charAt(t >>> 6 & 63), n >= 1 ? "=" : u.charAt(63 & t)];
return o.join("");
}
function h(e){
return e.replace(/[\s\S]{1,3}/g, m);
}
function p(){
return h(g((new Date()).getTime()));
}
function w(e,n){
return n ? p(String(e)).replace(/[+\/]/g, function(e) {
return "+" == e ? "-" : "_";
}).replace(/=/g, "") : p(String(e));
}
return w(getCookie(name));
}

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/668231

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX