Initial commit

This commit is contained in:
net909
2023-09-28 16:21:06 +08:00
parent 498772eb04
commit ba7be004c0
640 changed files with 87745 additions and 0 deletions
+304
View File
@@ -0,0 +1,304 @@
function BarrettMu(t) {
this.modulus = biCopy(t), this.k = biHighIndex(this.modulus) + 1;
var e = new BigInt;
e.digits[2 * this.k] = 1, this.mu = biDivide(e, this.modulus), this.bkplus1 = new BigInt, this.bkplus1.digits[this.k + 1] = 1, this.modulo = BarrettMu_modulo, this.multiplyMod = BarrettMu_multiplyMod, this.powMod = BarrettMu_powMod
}
function BarrettMu_modulo(t) {
var e = biDivideByRadixPower(t, this.k - 1),
i = biMultiply(e, this.mu),
n = biDivideByRadixPower(i, this.k + 1),
r = biModuloByRadixPower(t, this.k + 1),
o = biMultiply(n, this.modulus),
s = biModuloByRadixPower(o, this.k + 1),
a = biSubtract(r, s);
a.isNeg && (a = biAdd(a, this.bkplus1));
for (var u = biCompare(a, this.modulus) >= 0; u;) a = biSubtract(a, this.modulus), u = biCompare(a, this.modulus) >= 0;
return a
}
function BarrettMu_multiplyMod(t, e) {
var i = biMultiply(t, e);
return this.modulo(i)
}
function BarrettMu_powMod(t, e) {
var i = new BigInt;
i.digits[0] = 1;
for (var n = t, r = e; 0 != (1 & r.digits[0]) && (i = this.multiplyMod(i, n)), r = biShiftRight(r, 1), 0 != r.digits[0] || 0 != biHighIndex(r);) n = this.multiplyMod(n, n);
return i
}
function setMaxDigits(t) {
maxDigits = t, ZERO_ARRAY = new Array(maxDigits);
for (var e = 0; e < ZERO_ARRAY.length; e++) ZERO_ARRAY[e] = 0;
bigZero = new BigInt, bigOne = new BigInt, bigOne.digits[0] = 1
}
function BigInt(t) {
this.digits = "boolean" == typeof t && 1 == t ? null : ZERO_ARRAY.slice(0), this.isNeg = !1
}
function biFromDecimal(t) {
for (var e, i = "-" == t.charAt(0), n = i ? 1 : 0; n < t.length && "0" == t.charAt(n);)++n;
if (n == t.length) e = new BigInt;
else {
var r = t.length - n,
o = r % dpl10;
for (0 == o && (o = dpl10), e = biFromNumber(Number(t.substr(n, o))), n += o; n < t.length;) e = biAdd(biMultiply(e, lr10), biFromNumber(Number(t.substr(n, dpl10)))), n += dpl10;
e.isNeg = i
}
return e
}
function biCopy(t) {
var e = new BigInt(!0);
return e.digits = t.digits.slice(0), e.isNeg = t.isNeg, e
}
function biFromNumber(t) {
var e = new BigInt;
e.isNeg = 0 > t, t = Math.abs(t);
for (var i = 0; t > 0;) e.digits[i++] = t & maxDigitVal, t >>= biRadixBits;
return e
}
function reverseStr(t) {
for (var e = "", i = t.length - 1; i > -1; --i) e += t.charAt(i);
return e
}
function biToString(t, e) {
var i = new BigInt;
i.digits[0] = e;
for (var n = biDivideModulo(t, i), r = hexatrigesimalToChar[n[1].digits[0]]; 1 == biCompare(n[0], bigZero);) n = biDivideModulo(n[0], i), digit = n[1].digits[0], r += hexatrigesimalToChar[n[1].digits[0]];
return (t.isNeg ? "-" : "") + reverseStr(r)
}
function biToDecimal(t) {
var e = new BigInt;
e.digits[0] = 10;
for (var i = biDivideModulo(t, e), n = String(i[1].digits[0]); 1 == biCompare(i[0], bigZero);) i = biDivideModulo(i[0], e), n += String(i[1].digits[0]);
return (t.isNeg ? "-" : "") + reverseStr(n)
}
function digitToHex(t) {
var e = 15,
n = "";
for (i = 0; 4 > i; ++i) n += hexToChar[t & e], t >>>= 4;
return reverseStr(n)
}
function biToHex(t) {
for (var e = "", i = (biHighIndex(t), biHighIndex(t)); i > -1; --i) e += digitToHex(t.digits[i]);
return e
}
function charToHex(t) {
var e, i = 48,
n = i + 9,
r = 97,
o = r + 25,
s = 65,
a = 90;
return e = t >= i && n >= t ? t - i : t >= s && a >= t ? 10 + t - s : t >= r && o >= t ? 10 + t - r : 0
}
function hexToDigit(t) {
for (var e = 0, i = Math.min(t.length, 4), n = 0; i > n; ++n) e <<= 4, e |= charToHex(t.charCodeAt(n));
return e
}
function biFromHex(t) {
for (var e = new BigInt, i = t.length, n = i, r = 0; n > 0; n -= 4, ++r) e.digits[r] = hexToDigit(t.substr(Math.max(n - 4, 0), Math.min(n, 4)));
return e
}
function biFromString(t, e) {
var i = "-" == t.charAt(0),
n = i ? 1 : 0,
r = new BigInt,
o = new BigInt;
o.digits[0] = 1;
for (var s = t.length - 1; s >= n; s--) {
var a = t.charCodeAt(s),
u = charToHex(a),
c = biMultiplyDigit(o, u);
r = biAdd(r, c), o = biMultiplyDigit(o, e)
}
return r.isNeg = i, r
}
function biDump(t) {
return (t.isNeg ? "-" : "") + t.digits.join(" ")
}
function biAdd(t, e) {
var i;
if (t.isNeg != e.isNeg) e.isNeg = !e.isNeg, i = biSubtract(t, e), e.isNeg = !e.isNeg;
else {
i = new BigInt;
for (var n, r = 0, o = 0; o < t.digits.length; ++o) n = t.digits[o] + e.digits[o] + r, i.digits[o] = 65535 & n, r = Number(n >= biRadix);
i.isNeg = t.isNeg
}
return i
}
function biSubtract(t, e) {
var i;
if (t.isNeg != e.isNeg) e.isNeg = !e.isNeg, i = biAdd(t, e), e.isNeg = !e.isNeg;
else {
i = new BigInt;
var n, r;
r = 0;
for (var o = 0; o < t.digits.length; ++o) n = t.digits[o] - e.digits[o] + r, i.digits[o] = 65535 & n, i.digits[o] < 0 && (i.digits[o] += biRadix), r = 0 - Number(0 > n);
if (-1 == r) {
r = 0;
for (var o = 0; o < t.digits.length; ++o) n = 0 - i.digits[o] + r, i.digits[o] = 65535 & n, i.digits[o] < 0 && (i.digits[o] += biRadix), r = 0 - Number(0 > n);
i.isNeg = !t.isNeg
} else i.isNeg = t.isNeg
}
return i
}
function biHighIndex(t) {
for (var e = t.digits.length - 1; e > 0 && 0 == t.digits[e];)--e;
return e
}
function biNumBits(t) {
var e, i = biHighIndex(t),
n = t.digits[i],
r = (i + 1) * bitsPerDigit;
for (e = r; e > r - bitsPerDigit && 0 == (32768 & n); --e) n <<= 1;
return e
}
function biMultiply(t, e) {
for (var i, n, r, o = new BigInt, s = biHighIndex(t), a = biHighIndex(e), u = 0; a >= u; ++u) {
for (i = 0, r = u, j = 0; s >= j; ++j, ++r) n = o.digits[r] + t.digits[j] * e.digits[u] + i, o.digits[r] = n & maxDigitVal, i = n >>> biRadixBits;
o.digits[u + s + 1] = i
}
return o.isNeg = t.isNeg != e.isNeg, o
}
function biMultiplyDigit(t, e) {
var i, n, r;
result = new BigInt, i = biHighIndex(t), n = 0;
for (var o = 0; i >= o; ++o) r = result.digits[o] + t.digits[o] * e + n, result.digits[o] = r & maxDigitVal, n = r >>> biRadixBits;
return result.digits[1 + i] = n, result
}
function arrayCopy(t, e, i, n, r) {
for (var o = Math.min(e + r, t.length), s = e, a = n; o > s; ++s, ++a) i[a] = t[s]
}
function biShiftLeft(t, e) {
var i = Math.floor(e / bitsPerDigit),
n = new BigInt;
arrayCopy(t.digits, 0, n.digits, i, n.digits.length - i);
for (var r = e % bitsPerDigit, o = bitsPerDigit - r, s = n.digits.length - 1, a = s - 1; s > 0; --s, --a) n.digits[s] = n.digits[s] << r & maxDigitVal | (n.digits[a] & highBitMasks[r]) >>> o;
return n.digits[0] = n.digits[s] << r & maxDigitVal, n.isNeg = t.isNeg, n
}
function biShiftRight(t, e) {
var i = Math.floor(e / bitsPerDigit),
n = new BigInt;
arrayCopy(t.digits, i, n.digits, 0, t.digits.length - i);
for (var r = e % bitsPerDigit, o = bitsPerDigit - r, s = 0, a = s + 1; s < n.digits.length - 1; ++s, ++a) n.digits[s] = n.digits[s] >>> r | (n.digits[a] & lowBitMasks[r]) << o;
return n.digits[n.digits.length - 1] >>>= r, n.isNeg = t.isNeg, n
}
function biMultiplyByRadixPower(t, e) {
var i = new BigInt;
return arrayCopy(t.digits, 0, i.digits, e, i.digits.length - e), i
}
function biDivideByRadixPower(t, e) {
var i = new BigInt;
return arrayCopy(t.digits, e, i.digits, 0, i.digits.length - e), i
}
function biModuloByRadixPower(t, e) {
var i = new BigInt;
return arrayCopy(t.digits, 0, i.digits, 0, e), i
}
function biCompare(t, e) {
if (t.isNeg != e.isNeg) return 1 - 2 * Number(t.isNeg);
for (var i = t.digits.length - 1; i >= 0; --i) if (t.digits[i] != e.digits[i]) return t.isNeg ? 1 - 2 * Number(t.digits[i] > e.digits[i]) : 1 - 2 * Number(t.digits[i] < e.digits[i]);
return 0
}
function biDivideModulo(t, e) {
var i, n, r = biNumBits(t),
o = biNumBits(e),
s = e.isNeg;
if (o > r) return t.isNeg ? (i = biCopy(bigOne), i.isNeg = !e.isNeg, t.isNeg = !1, e.isNeg = !1, n = biSubtract(e, t), t.isNeg = !0, e.isNeg = s) : (i = new BigInt, n = biCopy(t)), new Array(i, n);
i = new BigInt, n = t;
for (var a = Math.ceil(o / bitsPerDigit) - 1, u = 0; e.digits[a] < biHalfRadix;) e = biShiftLeft(e, 1), ++u, ++o, a = Math.ceil(o / bitsPerDigit) - 1;
n = biShiftLeft(n, u), r += u;
for (var c = Math.ceil(r / bitsPerDigit) - 1, l = biMultiplyByRadixPower(e, c - a); - 1 != biCompare(n, l);)++i.digits[c - a], n = biSubtract(n, l);
for (var d = c; d > a; --d) {
var f = d >= n.digits.length ? 0 : n.digits[d],
h = d - 1 >= n.digits.length ? 0 : n.digits[d - 1],
g = d - 2 >= n.digits.length ? 0 : n.digits[d - 2],
p = a >= e.digits.length ? 0 : e.digits[a],
m = a - 1 >= e.digits.length ? 0 : e.digits[a - 1];
i.digits[d - a - 1] = f == p ? maxDigitVal : Math.floor((f * biRadix + h) / p);
for (var v = i.digits[d - a - 1] * (p * biRadix + m), b = f * biRadixSquared + (h * biRadix + g); v > b;)--i.digits[d - a - 1], v = i.digits[d - a - 1] * (p * biRadix | m), b = f * biRadix * biRadix + (h * biRadix + g);
l = biMultiplyByRadixPower(e, d - a - 1), n = biSubtract(n, biMultiplyDigit(l, i.digits[d - a - 1])), n.isNeg && (n = biAdd(n, l), --i.digits[d - a - 1])
}
return n = biShiftRight(n, u), i.isNeg = t.isNeg != s, t.isNeg && (i = s ? biAdd(i, bigOne) : biSubtract(i, bigOne), e = biShiftRight(e, u), n = biSubtract(e, n)), 0 == n.digits[0] && 0 == biHighIndex(n) && (n.isNeg = !1), new Array(i, n)
}
function biDivide(t, e) {
return biDivideModulo(t, e)[0]
}
function biModulo(t, e) {
return biDivideModulo(t, e)[1]
}
function biMultiplyMod(t, e, i) {
return biModulo(biMultiply(t, e), i)
}
function biPow(t, e) {
for (var i = bigOne, n = t; 0 != (1 & e) && (i = biMultiply(i, n)), e >>= 1, 0 != e;) n = biMultiply(n, n);
return i
}
function biPowMod(t, e, i) {
for (var n = bigOne, r = t, o = e; 0 != (1 & o.digits[0]) && (n = biMultiplyMod(n, r, i)), o = biShiftRight(o, 1), 0 != o.digits[0] || 0 != biHighIndex(o);) r = biMultiplyMod(r, r, i);
return n
}
function RSAKeyPair(t, e, i) {
this.e = biFromHex(t), this.d = biFromHex(e), this.m = biFromHex(i), this.chunkSize = 2 * biHighIndex(this.m), this.radix = 16, this.barrett = new BarrettMu(this.m)
}
function twoDigit(t) {
return (10 > t ? "0" : "") + String(t)
}
function encryptedString(t, e) {
for (var i = new Array, n = e.length, r = 0; n > r;) i[r] = e.charCodeAt(r), r++;
for (; i.length % t.chunkSize != 0;) i[r++] = 0;
var o, s, a, u = i.length,
c = "";
for (r = 0; u > r; r += t.chunkSize) {
for (a = new BigInt, o = 0, s = r; s < r + t.chunkSize; ++o) a.digits[o] = i[s++], a.digits[o] += i[s++] << 8;
var l = t.barrett.powMod(a, t.e),
d = 16 == t.radix ? biToHex(l) : biToString(l, t.radix);
c += d + " "
}
return c.substring(0, c.length - 1)
}
function decryptedString(t, e) {
var i, n, r, o = e.split(" "),
s = "";
for (i = 0; i < o.length; ++i) {
var a;
for (a = 16 == t.radix ? biFromHex(o[i]) : biFromString(o[i], t.radix), r = t.barrett.powMod(a, t.d), n = 0; n <= biHighIndex(r); ++n) s += String.fromCharCode(255 & r.digits[n], r.digits[n] >> 8)
}
return 0 == s.charCodeAt(s.length - 1) && (s = s.substring(0, s.length - 1)), s
}!
function(t) {
String.prototype.trim === t && (String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g, "")
}), Array.prototype.reduce === t && (Array.prototype.reduce = function(e) {
if (void 0 === this || null === this) throw new TypeError;
var i, n = Object(this),
r = n.length >>> 0,
o = 0;
if ("function" != typeof e) throw new TypeError;
if (0 == r && 1 == arguments.length) throw new TypeError;
if (arguments.length >= 2) i = arguments[1];
else for (;;) {
if (o in n) {
i = n[o++];
break
}
if (++o >= r) throw new TypeError
}
for (; r > o;) o in n && (i = e.call(t, i, n[o], o, n)), o++;
return i
})
}();
var biRadixBase = 2,
biRadixBits = 16,
bitsPerDigit = biRadixBits,
biRadix = 65536,
biHalfRadix = biRadix >>> 1,
biRadixSquared = biRadix * biRadix,
maxDigitVal = biRadix - 1,
maxInteger = 9999999999999998,
maxDigits, ZERO_ARRAY, bigZero, bigOne;
setMaxDigits(20);
var dpl10 = 15,
lr10 = biFromNumber(1e15),
hexatrigesimalToChar = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"),
hexToChar = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"),
highBitMasks = new Array(0, 32768, 49152, 57344, 61440, 63488, 64512, 65024, 65280, 65408, 65472, 65504, 65520, 65528, 65532, 65534, 65535),
lowBitMasks = new Array(0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767, 65535);
+315
View File
@@ -0,0 +1,315 @@
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
<meta name="renderer" content="webkit"/>
<title>获取百度BDUSS</title>
<link href="//cdn.staticfile.org/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet"/>
<script src="//cdn.staticfile.org/jquery/1.12.4/jquery.min.js"></script>
<script src="//cdn.staticfile.org/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
<!--[if lt IE 9]>
<script src="//cdn.staticfile.org/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="//cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<script src="base.js"></script>
</head>
<body>
<div class="container">
<div class="col-xs-12 col-sm-10 col-md-8 col-lg-6 center-block" style="float: none;">
<div class="panel panel-primary">
<div class="panel-heading" style="text-align: center;"><h3 class="panel-title">
获取百度BDUSS
</div>
<div class="panel-body" style="text-align: center;">
<div class="list-group">
<ul class="nav nav-tabs">
<li class="active"><a href="index.html">普通登录</a></li><li><a href="index2.html">扫码登录</a></li><li><a href="index3.html">短信验证码登录</a></li><li><a href="index4.html">第三方登录</a></li>
</ul>
<div class="list-group-item"><img src="https://m.baidu.com/static/index/plus/plus_logo.png" width="160px"></div>
<div id="load" class="alert alert-info" style="display:none;"></div>
<div id="login" class="list-group-item">
<div class="form-group">
<div class="input-group"><div class="input-group-addon">帐号</div>
<input type="text" id="user" value="" class="form-control" onkeydown="if(event.keyCode==13){submit.click()}"/>
</div></div>
<div class="form-group">
<div class="input-group"><div class="input-group-addon">密码</div>
<input type="password" id="pwd" value="" class="form-control" onkeydown="if(event.keyCode==13){submit.click()}"/>
</div></div>
<div class="form-group code" style="display:none;">
<div id="codeimg"></div>
<div class="input-group"><div class="input-group-addon">验证码</div>
<input type="text" id="code" class="form-control" onkeydown="if(event.keyCode==13){submit.click()}" placeholder="输入验证码">
</div>
<pre>提示:验证码第一次输入必定错误,是正常现象</pre>
</div>
<button type="button" id="submit" class="btn btn-primary btn-block">提交</button>
</div>
<div id="security" class="list-group-item" style="display:none;">
<div class="form-group">
<div class="input-group"><div class="input-group-addon">验证码</div>
<input type="text" id="smscode" value="" class="form-control" onkeydown="if(event.keyCode==13){submit.click()}"/>
<div class="input-group-addon" id="sendcode_button"><button type="button" id="sendcode">获取验证码</button></div>
</div></div>
<button type="button" id="submit2" class="btn btn-primary btn-block">提交</button>
<pre>提示:60秒内只能发送一次验证码,否则会提示频繁</pre>
</div>
<br/><a href="./">点此重新登录</a>
</div>
</div>
</div>
</div>
</div>
<script>
var ajax={
get: function(url, dataType, callback) {
dataType = dataType || 'html';
$.ajax({
type: "GET",
url: url,
async: true,
dataType: dataType,
cache:false,
success: function(data,status) {
if (callback == null) {
return;
}
callback(data);
},
error: function(error) {
alert('创建连接失败');
}
});
},
post: function(url, parameter, dataType, callback) {
dataType = dataType || 'html';
$.ajax({
type: "POST",
url: url,
async: true,
dataType: dataType,
data: parameter,
cache:false,
success: function(data,status) {
if (callback == null) {
return;
}
callback(data);
},
error: function(error) {
alert('创建连接失败');
}
});
}
}
function invokeSettime(obj){
var countdown=60;
settime(obj);
function settime(obj) {
if (countdown == 0) {
$(obj).attr("data-lock", "false");
$(obj).attr("disabled",false);
$(obj).text("获取验证码");
countdown = 60;
return;
} else {
$(obj).attr("data-lock", "true");
$(obj).attr("disabled",true);
$(obj).text(countdown + "秒后重试");
countdown--;
}
setTimeout(function() { settime(obj) } ,1000)
}
}
function trim(str){ //去掉头尾空格
return str.replace(/(^\s*)|(\s*$)/g, "");
}
function getpwd(pwd,time){
var passwd = pwd+time;
var rsa = "B3C61EBBA4659C4CE3639287EE871F1F48F7930EA977991C7AFE3CC442FEA49643212E7D570C853F368065CC57A2014666DA8AE7D493FD47D171C0D894EEE3ED7F99F6798B7FFD7B5873227038AD23E3197631A8CB642213B9F27D4901AB0D92BFA27542AE890855396ED92775255C977F5C302F1E7ED4B1E369C12CB6B1822F";
setMaxDigits(131);
var key = new RSAKeyPair("10001", "", rsa);
return encryptedString(key, passwd);
}
function gettime(user,pwd,vcode,vcodestr){
vcode=vcode||null;
vcodestr=vcodestr||null;
$('#load').html('正在获取Token,请稍等...');
var getvcurl="login.php?do=time";
ajax.get(getvcurl, 'json', function(d) {
if(d.code ==0){
login(d.time,user,pwd,vcode,vcodestr);
}else{
alert(d.msg);
$('#load').html('');
}
});
}
function login(time,user,pwd,vcode,vcodestr){
$('#load').html('正在登录,请稍等...');
var p = getpwd(pwd, time);
var BAIDUID = $('#user').attr('BAIDUID');
//alert(p);return;
var loginurl="login.php?do=login&r="+Math.random(1);
ajax.post(loginurl, {time:time, user:user, pwd:pwd, p:p, vcode:vcode, vcodestr:vcodestr, BAIDUID:BAIDUID}, 'json', function(d) {
if(d.code ==0){
$('#login').hide();
$('.code').hide();
$('#submit').hide();
$('#security').hide();
$('#submit2').hide();
showresult(d);
}else if(d.code ==400023){
if(d.type == 'phone'||d.type == 'mobile'){
$('#load').html("请验证密保后登录,密保手机是:"+d.account);
}else{
$('#load').html("请验证密保后登录,密保邮箱是:"+d.account);
}
$('#submit').hide();
$('.code').hide();
$('#code').val("");
$('#security').show();
$('#security').attr('type',d.type);
$('#security').attr('token',d.token);
$('#security').attr('lurl',d.lurl);
}else if(d.code ==310006 || d.code ==500001 || d.code ==500002){//需要验证码
$('#load').html(d.msg);
getvc(d.vcodestr);
}else if(d.code ==230048 || d.code ==400010){
$('#load').html("您输入的账号不存在,请重新输入");
$('#submit').attr('do','submit');
$('.code').hide();
$('#code').val("");
$('#user').focus();
$('#user').val("");
}else if(d.code ==400011 || d.code ==400015){
$('#load').html("您输入的密码有误,请重新输入");
$('#submit').attr('do','submit');
$('.code').hide();
$('#code').val("");
$('#pwd').focus();
$('#pwd').val("");
}else{
$('#load').html(d.msg+" ("+d.code+")");
$('#submit').attr('do','submit');
$('.code').hide();
$('#login').show();
}
});
}
function login2(type,token,lurl,BAIDUID,vcode){
$('#load').html('正在登录,请稍等...');
var loginurl="login.php?do=login2&r="+Math.random(1);
ajax.post(loginurl, {type:type, token:token, lurl:lurl, BAIDUID:BAIDUID, vcode:vcode}, 'json', function(d) {
if(d.code ==0){
$('#login').hide();
$('.code').hide();
$('#submit').hide();
$('#security').hide();
$('#submit2').hide();
showresult(d);
}else{
$('#load').html(d.msg+" ("+d.code+")");
$('.code').hide();
$('#login').show();
}
});
}
function sendcode(type,token,lurl,BAIDUID){
var loginurl="login.php?do=sendcode&r="+Math.random(1);
ajax.post(loginurl, {type:type, token:token, lurl:lurl, BAIDUID:BAIDUID}, 'json', function(d) {
if(d.code ==0){
$('.code').hide();
$('#smscode').focus();
invokeSettime("#sendcode");
alert('验证码发送成功,请查收');
}else{
$('.code').hide();
alert(d.msg);
}
});
}
function getvc(vcodestr){
$('#codeimg').attr('vcodestr',vcodestr);
$('#codeimg').html('<img onclick="this.src=\'login.php?do=getvcpic&vcodestr='+vcodestr+'&r=\'+Math.random();" src="login.php?do=getvcpic&vcodestr='+vcodestr+'&r='+Math.random(1)+'" title="点击刷新">');
$('#submit').attr('do','code');
$('#code').val("");
$('.code').show();
}
function showresult(arr){
$('#load').html('<div class="alert alert-success">登录成功!'+decodeURIComponent(arr.displayname)+'</div><div class="input-group"><span class="input-group-addon">用户UID</span><input id="uid" value="'+arr.uid+'" class="form-control" /></div><br/><div class="input-group"><span class="input-group-addon">用户名</span><input id="user" value="'+arr.user+'" class="form-control"/></div><br/><div class="input-group"><span class="input-group-addon">BDUSS</span><input id="bduss" value="'+arr.bduss+'" class="form-control"/></div><br/><div class="input-group"><span class="input-group-addon">PTOKEN</span><input id="ptoken" value="'+arr.ptoken+'" class="form-control"/></div><br/><div class="input-group"><span class="input-group-addon">STOKEN</span><input id="stoken" value="'+arr.stoken+'" class="form-control"/></div>');
}
function checkvc(user,pwd){
$('#load').html('登录中,请稍候...');
var getvcurl="login.php?do=checkvc";
ajax.post(getvcurl, {user:user}, 'json', function(d) {
$('#user').attr('BAIDUID',d.BAIDUID);
if(d.code ==0){
gettime(user,pwd);
}else if(d.code ==1){
$('#load').html('请输入验证码。');
getvc(d.vcodestr);
}else{
$('#load').html(d.msg+" ("+d.code+")");
$('.code').hide();
}
});
}
$(document).ready(function(){
$('#submit').click(function(){
var self=$(this);
var user=trim($('#user').val()),
pwd=trim($('#pwd').val());
if(user==''||pwd=='') {
alert("请确保每项不能为空!");
return false;
}
$('#load').show();
if (self.attr("data-lock") === "true") return;
else self.attr("data-lock", "true");
if(self.attr('do') == 'code'){
var vcode=trim($('#code').val()),
vcodestr=$('#codeimg').attr('vcodestr');
gettime(user,pwd,vcode,vcodestr);
}else{
checkvc(user,pwd);
}
self.attr("data-lock", "false");
});
$('#submit2').click(function(){
var self=$(this);
var code=trim($('#smscode').val());
if(code=='') {
alert("验证码不能为空!");
return false;
}
$('#load').show();
if (self.attr("data-lock") === "true") return;
else self.attr("data-lock", "true");
var type=$('#security').attr('type'),
token=$('#security').attr('token'),
lurl=$('#security').attr('lurl'),
BAIDUID=$('#user').attr('BAIDUID');
login2(type,token,lurl,BAIDUID,code);
self.attr("data-lock", "false");
});
$('#sendcode').click(function(){
var self=$(this);
$('#load').show();
if (self.attr("data-lock") === "true") return;
else self.attr("data-lock", "true");
var type=$('#security').attr('type'),
token=$('#security').attr('token'),
lurl=$('#security').attr('lurl'),
BAIDUID=$('#user').attr('BAIDUID');
sendcode(type,token,lurl,BAIDUID);
self.attr("data-lock", "false");
});
});
</script>
</body>
</html>
+117
View File
@@ -0,0 +1,117 @@
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
<meta name="renderer" content="webkit"/>
<title>获取百度BDUSS</title>
<link href="//cdn.staticfile.org/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet"/>
<script src="//cdn.staticfile.org/jquery/1.12.4/jquery.min.js"></script>
<script src="//cdn.staticfile.org/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
<!--[if lt IE 9]>
<script src="//cdn.staticfile.org/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="//cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="container">
<div class="col-xs-12 col-sm-10 col-md-8 col-lg-6 center-block" style="float: none;">
<div class="panel panel-primary">
<div class="panel-heading" style="text-align: center;"><h3 class="panel-title">
获取百度BDUSS
</div>
<div class="panel-body" style="text-align: center;">
<div class="list-group">
<ul class="nav nav-tabs">
<li><a href="index.html">普通登录</a></li><li class="active"><a href="index2.html">扫码登录</a></li><li><a href="index3.html">短信验证码登录</a></li><li><a href="index4.html">第三方登录</a></li>
</ul>
<div class="list-group-item"><img src="https://m.baidu.com/static/index/plus/plus_logo.png" width="160px"></div>
<div class="list-group-item list-group-item-info" style="font-weight: bold;" id="load">
<span id="loginmsg">正在加载</span><span id="loginload" style="padding-left: 10px;color: #790909;">.</span>
</div>
<div class="list-group-item" id="login" style="display:none;">
<div class="list-group-item" id="qrimg">
</div>
<div class="list-group-item" id="mobile" style="display:none;"><button type="button" id="mlogin" onclick="mloginurl()" class="btn btn-warning btn-block">跳转百度APP登录</button><br/><button type="button" onclick="qrlogin()" class="btn btn-success btn-block">我已完成登录</button></div>
</div>
<br/><a href="./index2.html">点此重新登录</a>
</div>
</div>
</div>
</div>
</div>
<script>
function getqrcode(){
var getvcurl='login.php?do=getqrcode&r='+Math.random(1);
$.get(getvcurl, function(d) {
if(d.code ==0){
$('#qrimg').attr('sign',d.sign);
$('#qrimg').attr('link',d.link);
$('#qrimg').html('<img id="qrcodeimg" onclick="getqrcode()" src="https://'+d.imgurl+'" title="点击刷新">');
$('#login').show();
$('#loginmsg').html('请使用<a href="http://xbox.m.baidu.com/mo/" target="_blank" rel="noreferrer">手机百度App</a>扫码登录');
if( /Android|SymbianOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Windows Phone|Midp/i.test(navigator.userAgent) && navigator.userAgent.indexOf("QQ/") == -1) {
$('#mobile').show();
}
if($('#qrimg').attr('lock')==undefined){
setTimeout(qrlogin,2000);
setInterval(loginload,1000);
}
}else{
alert(d.msg);
}
}, 'json');
}
function qrlogin(){
$('#qrimg').attr('lock','true');
var sign=$('#qrimg').attr('sign');
if(sign=='')return;
var loginurl="login.php?do=qrlogin";
$.ajax({
type: "POST",
url: loginurl,
async: true,
dataType: 'json',
timeout: 15000,
data: "sign="+sign+"&r="+Math.random(1),
cache:false,
success: function(data,status) {
if(data.code ==0){
$('#login').hide();
showresult(data);
}else{
qrlogin();
}
},
error: function(error) {
qrlogin();
}
});
}
function loginload(){
var load=document.getElementById('loginload').innerHTML;
var len=load.length;
if(len>2){
load='.';
}else{
load+='.';
}
document.getElementById('loginload').innerHTML=load;
}
function showresult(arr){
$('#load').html('<div class="alert alert-success">登录成功!'+decodeURIComponent(arr.displayname)+'</div><div class="input-group"><span class="input-group-addon">用户UID</span><input id="uid" value="'+arr.uid+'" class="form-control" /></div><br/><div class="input-group"><span class="input-group-addon">用户名</span><input id="user" value="'+arr.user+'" class="form-control"/></div><br/><div class="input-group"><span class="input-group-addon">BDUSS</span><input id="bduss" value="'+arr.bduss+'" class="form-control"/></div><br/><div class="input-group"><span class="input-group-addon">PTOKEN</span><input id="ptoken" value="'+arr.ptoken+'" class="form-control"/></div><br/><div class="input-group"><span class="input-group-addon">STOKEN</span><input id="stoken" value="'+arr.stoken+'" class="form-control"/></div>');
}
function mloginurl(){
var url = $('#qrimg').attr('link');
window.location.href='baiduboxapp://v1/easybrowse/open?upgrade=1&type=video&newbrowser=1&url='+encodeURIComponent(url);
}
$(document).ready(function(){
getqrcode();
$('#submit').click(function(){
qrlogin();
});
});
</script>
</body>
</html>
+252
View File
@@ -0,0 +1,252 @@
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
<meta name="renderer" content="webkit"/>
<title>获取百度BDUSS</title>
<link href="//cdn.staticfile.org/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet"/>
<script src="//cdn.staticfile.org/jquery/1.12.4/jquery.min.js"></script>
<script src="//cdn.staticfile.org/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
<!--[if lt IE 9]>
<script src="//cdn.staticfile.org/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="//cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="container">
<div class="col-xs-12 col-sm-10 col-md-8 col-lg-6 center-block" style="float: none;">
<div class="panel panel-primary">
<div class="panel-heading" style="text-align: center;"><h3 class="panel-title">
获取百度BDUSS
</div>
<div class="panel-body" style="text-align: center;">
<div class="list-group">
<ul class="nav nav-tabs">
<li><a href="index.html">普通登录</a></li><li><a href="index2.html">扫码登录</a></li><li class="active"><a href="index3.html">短信验证码登录</a></li><li><a href="index4.html">第三方登录</a></li>
</ul>
<div class="list-group-item"><img src="https://m.baidu.com/static/index/plus/plus_logo.png" width="160px"></div>
<div id="load" class="alert alert-info" style="display:none;"></div>
<div id="login" class="list-group-item">
<div class="form-group">
<div class="input-group"><div class="input-group-addon">手机号</div>
<input type="text" id="phone" value="" class="form-control" onkeydown="if(event.keyCode==13){submit.click()}"/>
</div></div>
<div class="form-group" id="sms" style="display:none;">
<div class="input-group"><div class="input-group-addon">验证码</div>
<input type="text" id="smscode" value="" class="form-control" onkeydown="if(event.keyCode==13){submit.click()}" placeholder="输入短信验证码"/>
<div class="input-group-addon" id="sendcode_button"><button type="button" id="sendcode">获取验证码</button></div>
</div>
</div>
<div class="form-group code" style="display:none;">
<div id="codeimg"></div>
<div class="input-group"><div class="input-group-addon">验证码</div>
<input type="text" id="code" class="form-control" onkeydown="if(event.keyCode==13){submit.click()}" placeholder="输入验证码">
</div>
</div>
<button type="button" id="submit" class="btn btn-primary btn-block">提交</button>
</div>
<br/><a href="./index3.html">点此重新登录</a>
</div>
</div>
</div>
</div>
</div>
<script>
var ajax={
get: function(url, dataType, callback) {
dataType = dataType || 'html';
$.ajax({
type: "GET",
url: url,
async: true,
dataType: dataType,
cache:false,
success: function(data,status) {
if (callback == null) {
return;
}
callback(data);
},
error: function(error) {
alert('创建连接失败');
}
});
},
post: function(url, parameter, dataType, callback) {
dataType = dataType || 'html';
$.ajax({
type: "POST",
url: url,
async: true,
dataType: dataType,
data: parameter,
cache:false,
success: function(data,status) {
if (callback == null) {
return;
}
callback(data);
},
error: function(error) {
alert('创建连接失败');
}
});
}
}
function invokeSettime(obj){
var countdown=60;
settime(obj);
function settime(obj) {
if (countdown == 0) {
$(obj).attr("data-lock", "false");
$(obj).attr("disabled",false);
$(obj).text("获取验证码");
countdown = 60;
return;
} else {
$(obj).attr("data-lock", "true");
$(obj).attr("disabled",true);
$(obj).text(countdown + "秒后重试");
countdown--;
}
setTimeout(function() { settime(obj) } ,1000)
}
}
function trim(str){ //去掉头尾空格
return str.replace(/(^\s*)|(\s*$)/g, "");
}
function login(phone,smsvc){
$('#load').html('正在登录,请稍等...');
var loginurl="login.php?do=login3&r="+Math.random(1);
ajax.post(loginurl, {phone:phone, smsvc:smsvc}, 'json', function(d) {
if(d.code ==0){
$('#login').hide();
$('.code').hide();
$('#submit').hide();
$('#sms').hide();
showresult(d);
}else{
$('#load').html(d.msg+" ("+d.code+")");
$('.code').hide();
$('#login').show();
}
});
}
function sendsms(phone,vcode,vcodestr,vcodesign){
vcode=vcode||null;
vcodestr=vcodestr||null;
vcodesign=vcodesign||null;
$('#load').html('正在发送验证码...');
var loginurl="login.php?do=sendsms&r="+Math.random(1);
ajax.post(loginurl, {phone:phone, vcode:vcode, vcodestr:vcodestr, vcodesign:vcodesign}, 'json', function(d) {
if(d.code ==0){
$('.code').hide();
$('#sms').show();
$('#submit').attr('do','smscode');
$('#smscode').focus();
$('#load').html('请输入短信验证码');
invokeSettime("#sendcode");
alert('已发送验证码到 '+phone);
}else if(d.code ==50020){
$('#load').html(d.msg);
$('#codeimg').attr('vcodesign',d.vcodesign);
$('#sms').hide();
$('#submit').attr('do','code');
getvc(d.vcodestr);
}else if(d.code ==500002 || d.code ==500001){
$('#load').html('请输入验证码');
$('#submit').attr('do','code');
alert(d.msg);
}else if(d.code ==50014){
$('#load').html('提示:60秒内只能发送一次验证码,否则会提示频繁');
$('.code').hide();
alert(d.msg);
}else{
$('.code').hide();
alert(d.msg);
}
});
}
function getphone(phone){
$('#load').html('正在检测手机号是否存在...');
var getvcurl="login.php?do=getphone&r="+Math.random(1);
ajax.post(getvcurl, {phone:phone}, 'json', function(d) {
if(d.code ==0){
sendsms(phone);
}else if(d.code ==3){
$('#load').html('');
$('.code').hide();
$('#submit').attr('do','submit');
alert('该手机号不存在,请重新输入!');
}else{
$('#load').html(d.msg+" ("+d.code+")");
$('#submit').attr('do','submit');
$('.code').hide();
}
});
}
function getvc(vcodestr){
$('#codeimg').attr('vcodestr',vcodestr);
$('#codeimg').html('<img onclick="this.src=\'login.php?do=getvcpic&vcodestr='+vcodestr+'&r=\'+Math.random();" src="login.php?do=getvcpic&vcodestr='+vcodestr+'&r='+Math.random(1)+'" title="点击刷新">');
$('#submit').attr('do','code');
$('#code').val("");
$('.code').show();
}
function showresult(arr){
$('#load').html('<div class="alert alert-success">登录成功!'+decodeURIComponent(arr.displayname)+'</div><div class="input-group"><span class="input-group-addon">用户UID</span><input id="uid" value="'+arr.uid+'" class="form-control" /></div><br/><div class="input-group"><span class="input-group-addon">用户名</span><input id="user" value="'+arr.user+'" class="form-control"/></div><br/><div class="input-group"><span class="input-group-addon">BDUSS</span><input id="bduss" value="'+arr.bduss+'" class="form-control"/></div><br/><div class="input-group"><span class="input-group-addon">PTOKEN</span><input id="ptoken" value="'+arr.ptoken+'" class="form-control"/></div><br/><div class="input-group"><span class="input-group-addon">STOKEN</span><input id="stoken" value="'+arr.stoken+'" class="form-control"/></div>');
}
$(document).ready(function(){
$('#submit').click(function(){
var self=$(this);
var phone=trim($('#phone').val()),
smscode=trim($('#smscode').val());
if(phone=='') {
alert("手机号不能为空!");
return false;
}
$('#load').show();
if (self.attr("data-lock") === "true") return;
else self.attr("data-lock", "true");
if(self.attr('do') == 'smscode'){
if(smscode=='') {
alert("验证码不能为空!");
return false;
}
login(phone,smscode);
}else if(self.attr('do') == 'code'){
if(code=='') {
alert("验证码不能为空!");
return false;
}
var code=trim($('#code').val()),
vcodestr=$('#codeimg').attr('vcodestr'),
vcodesign=$('#codeimg').attr('vcodesign');
sendsms(phone,code,vcodestr,vcodesign);
}else{
getphone(phone);
}
self.attr("data-lock", "false");
});
$('#sendcode').click(function(){
var self=$(this);
var phone=trim($('#phone').val());
if(phone=='') {
alert("手机号不能为空!");
return false;
}
$('#load').show();
if (self.attr("data-lock") === "true") return;
else self.attr("data-lock", "true");
var code=trim($('#code').val()),
vcodestr=$('#codeimg').attr('vcodestr'),
vcodesign=$('#codeimg').attr('vcodesign');
sendsms(phone,code,vcodestr,vcodesign);
self.attr("data-lock", "false");
});
});
</script>
</body>
</html>
+175
View File
@@ -0,0 +1,175 @@
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
<meta name="renderer" content="webkit"/>
<title>获取百度BDUSS</title>
<link href="//cdn.staticfile.org/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet"/>
<script src="//cdn.staticfile.org/jquery/1.12.4/jquery.min.js"></script>
<script src="//cdn.staticfile.org/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
<!--[if lt IE 9]>
<script src="//cdn.staticfile.org/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="//cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="container">
<div class="col-xs-12 col-sm-10 col-md-8 col-lg-6 center-block" style="float: none;">
<div class="panel panel-primary">
<div class="panel-heading" style="text-align: center;"><h3 class="panel-title">
获取百度BDUSS
</div>
<div class="panel-body" style="text-align: center;">
<div class="list-group">
<ul class="nav nav-tabs">
<li><a href="index.html">普通登录</a></li><li><a href="index2.html">扫码登录</a></li><li><a href="index3.html">短信验证码登录</a></li><li class="active"><a href="index4.html">第三方登录</a></li>
</ul>
<div class="list-group-item"><img src="https://m.baidu.com/static/index/plus/plus_logo.png" width="160px"></div>
<div class="list-group-item">
<ul class="nav nav-tabs">
<li class="active"><a href="index4.html">QQ扫码登录</a></li><li><a href="index5.html">微信扫码登录</a>
</ul>
</div>
<div class="list-group-item list-group-item-info" style="font-weight: bold;" id="login">
<span id="loginmsg">使用QQ手机版扫描二维码</span><span id="loginload" style="padding-left: 10px;color: #790909;">.</span>
</div>
<div class="list-group-item" id="qrimg">
</div>
<div class="list-group-item" id="mobile" style="display:none;"><button type="button" id="mlogin" onclick="mloginurl()" class="btn btn-warning btn-block">跳转QQ快捷登录</button><br/><button type="button" onclick="loadScript()" class="btn btn-success btn-block">我已完成登录</button></div>
<br/><a href="./index4.html">点此重新登录</a>
</div>
</div>
</div>
</div>
</div>
<script>
var interval1,interval2;
function showresult(arr){
$('#login').html('<div class="alert alert-success">登录成功!'+decodeURIComponent(arr.displayname)+'</div><div class="input-group"><span class="input-group-addon">用户UID</span><input id="uid" value="'+arr.uid+'" class="form-control" /></div><br/><div class="input-group"><span class="input-group-addon">用户名</span><input id="user" value="'+arr.user+'" class="form-control"/></div><br/><div class="input-group"><span class="input-group-addon">BDUSS</span><input id="bduss" value="'+arr.bduss+'" class="form-control"/></div><br/><div class="input-group"><span class="input-group-addon">PTOKEN</span><input id="ptoken" value="'+arr.ptoken+'" class="form-control"/></div><br/><div class="input-group"><span class="input-group-addon">STOKEN</span><input id="stoken" value="'+arr.stoken+'" class="form-control"/></div>');
}
function setCookie(name,value)
{
var exp = new Date();
exp.setTime(exp.getTime() + 30*1000);
document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}
function getCookie(name)
{
var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
if(arr=document.cookie.match(reg))
return unescape(arr[2]);
else
return null;
}
function getqrpic(force){
force = force || false;
cleartime();
var qrsig = getCookie('qrsig');
var qrimg = getCookie('qrimg');
if(qrsig!=null && qrimg!=null && force==false){
$('#qrimg').attr('qrsig',qrsig);
$('#qrimg').html('<img id="qrcodeimg" onclick="getqrpic(true)" src="data:image/png;base64,'+qrimg+'" title="点击刷新">');
if( /Android|SymbianOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Windows Phone|Midp/i.test(navigator.userAgent) && navigator.userAgent.indexOf("QQ/") == -1) {
$('#mobile').show();
}
interval1=setInterval(loginload,1000);
interval2=setInterval(qrlogin,3000);
}else{
var getvcurl='qqlogin.php?do=getqrpic&r='+Math.random(1);
$.get(getvcurl, function(d) {
if(d.code ==0){
setCookie('qrsig',d.qrsig);
setCookie('qrimg',d.data);
$('#qrimg').attr('qrsig',d.qrsig);
$('#qrimg').html('<img id="qrcodeimg" onclick="getqrpic(true)" src="data:image/png;base64,'+d.data+'" title="点击刷新">');
if( /Android|SymbianOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Windows Phone|Midp/i.test(navigator.userAgent) && navigator.userAgent.indexOf("QQ/") == -1) {
$('#mobile').show();
}
interval1=setInterval(loginload,1000);
interval2=setInterval(qrlogin,3000);
}else{
alert(d.msg);
}
}, 'json');
}
}
function qrlogin(){
if ($('#login').attr("data-lock") === "true") return;
var qrsig=$('#qrimg').attr('qrsig');
var url = 'qqlogin.php?do=qrlogin&qrsig='+decodeURIComponent(qrsig)+'&r='+Math.random(1);
$.get(url, function(d) {
if(d.code ==0){
$('#loginmsg').html('正在登录百度,请稍候...');
cleartime();
qqconnect(d.redirect_uri, d.mkey);
}else if(d.code ==1){
getqrpic(true);
$('#loginmsg').html('请重新扫描二维码');
}else if(d.code ==2){
$('#loginmsg').html('使用QQ手机版扫描二维码');
}else if(d.code ==3){
$('#loginmsg').html('扫描成功,请在手机上确认授权登录');
}else{
cleartime();
$('#loginmsg').html(d.msg);
}
}, 'json');
}
function qqconnect(redirect_uri, mkey){
$.ajax({
type : "POST",
url : "qqlogin.php?do=qqconnect",
data : {redirect_uri:redirect_uri, mkey:mkey},
dataType : 'json',
success : function(data) {
if(data.code == 0){
showresult(data);
$('#qrimg').hide();
$('#submit').hide();
$('#mobile').hide();
$('#login').attr("data-lock", "true");
}else{
$('#loginmsg').html(data.msg);
}
}
});
}
function loginload(){
if ($('#login').attr("data-lock") === "true") return;
var load=document.getElementById('loginload').innerHTML;
var len=load.length;
if(len>2){
load='.';
}else{
load+='.';
}
document.getElementById('loginload').innerHTML=load;
}
function cleartime(){
clearInterval(interval1);
clearInterval(interval2);
}
function mloginurl(){
var imagew = $('#qrcodeimg').attr('src');
imagew = imagew.replace(/data:image\/png;base64,/, "");
$('#mlogin').html("正在跳转...");
$.post("qrcode.php?r="+Math.random(1),"image="+encodeURIComponent(imagew), function(arr) {
if(arr.code==0) {
$('#loginmsg').html('跳转到QQ登录后请返回此页面');
window.location.href='mqqapi://forward/url?version=1&src_type=web&url_prefix='+window.btoa(arr.url);
}else{
alert(arr.msg);
}
$('#mlogin').html("跳转QQ快捷登录");
}, 'json');
}
$(document).ready(function(){
getqrpic();
$('#submit').click(function(){
qrlogin();
});
});
</script>
</body>
</html>
+121
View File
@@ -0,0 +1,121 @@
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
<meta name="renderer" content="webkit"/>
<title>获取百度BDUSS</title>
<link href="//cdn.staticfile.org/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet"/>
<script src="//cdn.staticfile.org/jquery/1.12.4/jquery.min.js"></script>
<script src="//cdn.staticfile.org/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
<!--[if lt IE 9]>
<script src="//cdn.staticfile.org/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="//cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="container">
<div class="col-xs-12 col-sm-10 col-md-8 col-lg-6 center-block" style="float: none;">
<div class="panel panel-primary">
<div class="panel-heading" style="text-align: center;"><h3 class="panel-title">
获取百度BDUSS
</div>
<div class="panel-body" style="text-align: center;">
<div class="list-group">
<ul class="nav nav-tabs">
<li><a href="index.html">普通登录</a></li><li><a href="index2.html">扫码登录</a></li><li><a href="index3.html">短信验证码登录</a></li><li class="active"><a href="index4.html">第三方登录</a></li>
</ul>
<div class="list-group-item"><img src="https://m.baidu.com/static/index/plus/plus_logo.png" width="160px"></div>
<div class="list-group-item">
<ul class="nav nav-tabs">
<li><a href="index4.html">QQ扫码登录</a></li><li class="active"><a href="index5.html">微信扫码登录</a>
</ul>
</div>
<div class="list-group-item list-group-item-info" style="font-weight: bold;" id="login">
<span id="loginmsg">请使用微信扫描二维码登录</span><span id="loginload" style="padding-left: 10px;color: #790909;">.</span>
</div>
<div class="list-group-item" id="qrimg">
</div>
<br/><a href="./index5.html">点此重新登录</a>
</div>
</div>
</div>
</div>
</div>
<script>
function getqrcode(){
var getvcurl='qqlogin.php?do=getwxpic&r='+Math.random(1);
$.get(getvcurl, function(d) {
if(d.code ==0){
$('#qrimg').attr('uuid',d.uuid);
$('#qrimg').html('<img id="qrcodeimg" onclick="getqrcode()" style="max-width:240px" src="'+d.imgurl+'" title="点击刷新">');
if($('#qrimg').attr('lock')==undefined){
setTimeout(qrlogin,2000);
setInterval(loginload,1000);
}
}else{
alert(d.msg);
}
}, 'json');
}
function qrlogin(last){
last = last || null;
$('#qrimg').attr('lock','true');
var uuid=$('#qrimg').attr('uuid');
if(uuid=='')return;
if(last!=null){
var loginurl = "qqlogin.php?do=wxlogin&uuid="+uuid+"&last="+last+"&r="+Math.random(1);
}else{
var loginurl = "qqlogin.php?do=wxlogin&uuid="+uuid+"&r="+Math.random(1);
}
$.ajax({
type: "GET",
url: loginurl,
async: true,
dataType: 'json',
timeout: 15000,
success: function(data,status) {
if(data.code ==0){
$('#qrimg').hide();
$('#submit').hide();
showresult(data);
}else if(data.code ==1){
qrlogin();
}else if(data.code ==2){
$('#loginmsg').html('请在微信中点击确认即可登录');
qrlogin('404');
}else if(data.code ==3){
$('#loginmsg').html('请使用微信扫描二维码登录');
getqrcode();
}else{
alert(data.msg)
}
},
error: function(error) {
qrlogin();
}
});
}
function loginload(){
var load=document.getElementById('loginload').innerHTML;
var len=load.length;
if(len>2){
load='.';
}else{
load+='.';
}
document.getElementById('loginload').innerHTML=load;
}
function showresult(arr){
$('#login').html('<div class="alert alert-success">登录成功!'+decodeURIComponent(arr.displayname)+'</div><div class="input-group"><span class="input-group-addon">用户UID</span><input id="uid" value="'+arr.uid+'" class="form-control" /></div><br/><div class="input-group"><span class="input-group-addon">用户名</span><input id="user" value="'+arr.user+'" class="form-control"/></div><br/><div class="input-group"><span class="input-group-addon">BDUSS</span><input id="bduss" value="'+arr.bduss+'" class="form-control"/></div><br/><div class="input-group"><span class="input-group-addon">PTOKEN</span><input id="ptoken" value="'+arr.ptoken+'" class="form-control"/></div><br/><div class="input-group"><span class="input-group-addon">STOKEN</span><input id="stoken" value="'+arr.stoken+'" class="form-control"/></div>');
}
$(document).ready(function(){
getqrcode();
$('#submit').click(function(){
qrlogin();
});
});
</script>
</body>
</html>
+341
View File
@@ -0,0 +1,341 @@
<?php
/* Name: 百度登录操作类
* Author: 消失的彩虹海
* Website: blog.cccyun.cn
* QQ: 1277180438
*/
class baiduLogin{
private $referrer = 'https://wappass.baidu.com/passport/?login&tpl=tb&sms=0&regtype=1';
//获取ServerTime
public function servertime(){
$url='https://wappass.baidu.com/wp/api/security/antireplaytoken?tpl=tb&v='.time().'0000';
$data=$this->get_curl($url,0,$this->referrer);
$arr=json_decode($data,true);
if($arr['errno']==110000){
return array('code'=>0,'time'=>$arr['time']);
}else{
return array('code'=>-1,'msg'=>$arr['errmsg']);
}
}
//获取验证码图片
public function getvcpic($vcodestr){
$url='https://wappass.baidu.com/cgi-bin/genimage?'.$vcodestr.'&v='.time().'0000';
return $this->get_curl($url,0,$this->referrer);
}
//普通登录操作
public function login($time,$user,$pwd,$p,$vcode=null,$vcodestr=null,$BAIDUID=null){
if(empty($user))return array('code'=>-1,'msg'=>'用户名不能为空');
if(empty($pwd))return array('code'=>-1,'msg'=>'pwd不能为空');
if(empty($p))return array('code'=>-1,'msg'=>'密码不能为空');
if($vcode=='null')$vcode='';
if($vcodestr=='null')$vcodestr='';
$cookie='BAIDUID='.$BAIDUID.'; ';
$url='https://passport.baidu.com/viewlog?ak=1e3f2dd1c81f2075171a547893391274&v='.rand(1111,9999);
$data = $this->get_curl($url,0,$this->referrer,$cookie,1);
preg_match("/pplogid=(.*?);/", $data, $pplogid);
$cookie.='pplogid='.$pplogid[1].'; ';
$data = substr($data, strpos($data,'{"code"'));
$arr=json_decode($data,true);
$url='https://wappass.baidu.com/wp/api/login?v='.time().'0000';
$post='username='.$user.'&code=&password='.$p.'&verifycode='.$vcode.'&clientfrom=&tpl=tb&login_share_strategy=choice&client=&adapter=0&t='.time().'0000&loginLink=0&smsLoginLink=1&lPFastRegLink=0&fastRegLink=1&lPlayout=0&loginInitType=0&lang=zh-cn&regLink=1&action=login&loginmerge=1&isphone=0&dialogVerifyCode=&dialogVcodestr=&dialogVcodesign=&gid=660BDF6-30E5-4A83-8EAC-F0B4752E1C4B&vcodestr='.$vcodestr.'&countrycode=&servertime='.$time.'&logLoginType=wap_loginTouch&passAppHash=&passAppVersion=&dv='.urlencode($arr['data']['dv']).'&ds='.urlencode($arr['data']['ds']).'&tk='.urlencode($arr['data']['tk']);
$data = $this->get_curl($url,$post,$this->referrer,$cookie);
$arr=json_decode($data,true);
if(array_key_exists('errInfo',$arr) && $arr['errInfo']['no']=='0'){
if(!empty($arr['data']['loginProxy'])){
$data = $this->get_curl($arr['data']['loginProxy'],0,$this->referrer,$cookie);
$arr=json_decode($data,true);
}
$data=$arr['data']['xml'];
preg_match('!<bduss>(.*?)</bduss>!i',$data,$bduss);
preg_match('!<ptoken>(.*?)</ptoken>!i',$data,$ptoken);
preg_match('!<stoken>(.*?)</stoken>!i',$data,$stoken);
$cookie = 'BDUSS='.$bduss[1].';';
$userInfo = $this->getUserInfo($cookie);
return array('code'=>0,'uid'=>$userInfo['id'],'user'=>$userInfo['name'],'displayname'=>$userInfo['name_show'],'face'=>$userInfo['portrait_url'],'bduss'=>$bduss[1],'ptoken'=>$ptoken[1],'stoken'=>$stoken[1]);
}elseif($arr['errInfo']['no']=='310006'||$arr['errInfo']['no']=='500001'||$arr['errInfo']['no']=='500002'){
return array('code'=>$arr['errInfo']['no'],'msg'=>$arr['errInfo']['msg'],'vcodestr'=>$arr['data']['codeString']);
}elseif($arr['errInfo']['no']=='400023'){
$query = parse_url($arr['data']['gotoUrl'], PHP_URL_QUERY);
parse_str($query, $tokenData);
$token = $tokenData['token'];
if($arr['data']['showType'] == 'phone'){
$account = $arr['data']['phone'];
$arr['data']['showType'] = 'mobile';
}else{
$account = $arr['data']['email'];
}
$lurl = $arr['data']['loginProxy'];
return array('code'=>$arr['errInfo']['no'],'msg'=>$arr['errInfo']['msg'],'type'=>$arr['data']['showType'],'account'=>$account,'token'=>$token,'lurl'=>$lurl);
}elseif(array_key_exists('errInfo',$arr)){
return array('code'=>$arr['errInfo']['no'],'msg'=>$arr['errInfo']['msg']);
}else{
return array('code'=>-1,'msg'=>'登录失败,原因未知');
}
}
//登录异常时发送手机/邮件验证码
public function sendcode($type,$token,$lurl,$BAIDUID){
if(empty($token))return array('code'=>-1,'msg'=>'token不能为空');
$cookie='BAIDUID='.$BAIDUID.';';
/*$url = 'https://wappass.baidu.com/v3/api/auth/widget';
$post = json_encode(['action'=>'send', 'authField'=>$type, 'authParams'=>['banktype'=>'','secret'=>'','type'=>'vcode'], 'authType'=>'check', 'authid'=>$authid, 'client'=>'', 'clientfrom'=>'', 'tpl'=>'tb']);
$addheader = array("Content-Type: application/json; charset=utf-8");
$data=$this->get_curl($url,$post,$this->referrer,$cookie,0,0,0,$addheader);
$arr=json_decode($data,true);
if(array_key_exists('code',$arr) && $arr['code']==110000){
return array('code'=>0);
}elseif(array_key_exists('message',$arr)){
return array('code'=>$arr['code'],'msg'=>$arr['message']);
}else{
return array('code'=>-1,'msg'=>'发生验证码失败,原因未知');
}*/
$url = 'https://wappass.baidu.com/passport/authwidget?action=send&type='.$type.'&u='.urlencode($lurl).'&ori_u=&tpl=tb&lstr=&ltoken=&token='.urlencode($token).'&from=&isnew=true&adapter=0&skin=&finance=&isnew=true&callback=jsonp4';
$data=$this->get_curl($url,0,$this->referrer,$cookie);
preg_match("/jsonp4\((.*?)\)/is", $data, $match);
$arr=json_decode(str_replace("''","null",$match[1]),true);
if(array_key_exists('errInfo',$arr) && $arr['errInfo']['no']=='0'){
return array('code'=>0);
}elseif(array_key_exists('errInfo',$arr)){
return array('code'=>$arr['errInfo']['no'],'msg'=>$arr['errInfo']['msg']);
}else{
return array('code'=>-1,'msg'=>'发生验证码失败,原因未知');
}
}
//登录异常时登录操作
public function login2($type,$token,$lurl,$BAIDUID,$vcode){
if(empty($type))return array('code'=>-1,'msg'=>'type不能为空');
if(empty($token))return array('code'=>-1,'msg'=>'token不能为空');
if(empty($lurl))return array('code'=>-1,'msg'=>'lurl不能为空');
if(empty($vcode))return array('code'=>-1,'msg'=>'vcode不能为空');
$cookie='BAIDUID='.$BAIDUID.';';
/*$url = 'https://wappass.baidu.com/v3/api/auth/widget';
$post = json_encode(['action'=>'check', 'authField'=>$type, 'authParams'=>['banktype'=>'','secret'=>'','type'=>'vcode','vcode'=>$vcode], 'authType'=>'check', 'authid'=>$authid, 'client'=>'', 'clientfrom'=>'', 'tpl'=>'tb']);
$addheader = array("Content-Type: application/json; charset=utf-8");
$data = $this->get_curl($url,$post,$this->referrer,$cookie,0,0,0,$addheader);
$arr=json_decode($data,true);
if(array_key_exists('code',$arr) && $arr['code']==110000){
$data = $this->get_curl($lurl,0,$this->referrer,$cookie,1);
preg_match('!BDUSS=(.*?);!i',$data,$bduss);
preg_match('!PTOKEN=(.*?);!i',$data,$ptoken);
preg_match('!STOKEN=(.*?);!i',$data,$stoken);
if($bduss[1]){
$cookie = 'BDUSS='.$bduss[1].';';
$userInfo = $this->getUserInfo($cookie);
return array('code'=>0,'uid'=>$userInfo['id'],'user'=>$userInfo['name'],'displayname'=>$userInfo['name_show'],'face'=>$userInfo['portrait_url'],'bduss'=>$bduss[1],'ptoken'=>$ptoken[1],'stoken'=>$stoken[1]);
}else{
preg_match('/<span class=\"highlight\">(.*?)<\/span>/',$data,$match);
if($match[1]){
return array('code'=>-1,'msg'=>$match[1]);
}else{
return array('code'=>-1,'msg'=>'登录失败,原因未知');
}
}
}elseif(array_key_exists('message',$arr)){
return array('code'=>$arr['code'],'msg'=>$arr['message']);
}else{
return array('code'=>-1,'msg'=>'验证失败,原因未知');
}*/
$url = 'https://wappass.baidu.com/passport/authwidget?v='.time().'000&vcode='.$vcode.'&token='.urlencode($token).'&action=check&type='.$type.'&u='.urlencode($lurl).'&ori_u=&lstr=&ltoken=&tpl=tb&skin=&clientfrom=&adapter=0&updatessn=&bindToSmsLogin=&isnew=true&finance=&callback=jsonp1';
$data = $this->get_curl($url,0,$this->referrer,$cookie);
preg_match("/jsonp1\((.*?)\)/is", $data, $match);
$arr=json_decode(str_replace("''","null",$match[1]),true);
if(array_key_exists('errInfo',$arr) && $arr['errInfo']['no']=='0'){
$data = $this->get_curl($arr['data']['u'],0,$this->referrer,$cookie,1);
preg_match('!BDUSS=(.*?);!i',$data,$bduss);
preg_match('!PTOKEN=(.*?);!i',$data,$ptoken);
preg_match('!STOKEN=(.*?);!i',$data,$stoken);
$cookie = 'BDUSS='.$bduss[1].';';
$userInfo = $this->getUserInfo($cookie);
return array('code'=>0,'uid'=>$userInfo['id'],'user'=>$userInfo['name'],'displayname'=>$userInfo['name_show'],'face'=>$userInfo['portrait_url'],'bduss'=>$bduss[1],'ptoken'=>$ptoken[1],'stoken'=>$stoken[1]);
}elseif(array_key_exists('errInfo',$arr)){
return array('code'=>$arr['errInfo']['no'],'msg'=>$arr['errInfo']['msg']);
}else{
return array('code'=>-1,'msg'=>'登录失败,原因未知');
}
}
//检测是否需要验证码
public function checkvc($user){
if(empty($user))return array('saveOK'=>-1,'msg'=>'请先输入用户名');
$url='https://wappass.baidu.com/wp/api/login/check?tt='.time().'9117&username='.$user.'&countrycode=&clientfrom=wap&sub_source=leadsetpwd&tpl=tb';
$data = $this->get_curl($url,0,$this->referrer,0,1);
preg_match("/BAIDUID=(.*?);/", $data, $BAIDUID);
$arr=json_decode(substr($data,strpos($data,'{')),true);
if($arr['errInfo'] && $arr['errInfo']['no']=='0' && empty($arr['data']['codeString'])){
return array('code'=>0, 'BAIDUID'=>$BAIDUID[1]);
}elseif($arr['errInfo'] && $arr['errInfo']['no']=='0'){
return array('code'=>1,'vcodestr'=>$arr['data']['codeString'], 'BAIDUID'=>$BAIDUID[1]);
}else{
return array('code'=>$arr['errInfo']['no'],'msg'=>$arr['errInfo']['msg'], 'BAIDUID'=>$BAIDUID[1]);
}
}
//手机验证码登录,获取手机号是否存在
public function getphone($phone){
if(empty($phone))return array('saveOK'=>-1,'msg'=>'请先输入手机号');
if(strlen($phone)!=11)return array('saveOK'=>-1,'msg'=>'请输入正确的手机号');
$phone2='';
for($i=0;$i<11;$i++){
$phone2.=$phone[$i];
if($i==2||$i==6)$phone2.='+';
}
$url='https://wappass.baidu.com/wp/api/security/getphonestatus?v='.time().'0000';
$post='mobilenum='.$phone2.'&clientfrom=&tpl=tb&login_share_strategy=&client=&adapter=0&t='.time().'0000&act=bind_mobile&loginLink=0&smsLoginLink=1&lPFastRegLink=0&fastRegLink=1&lPlayout=0&lang=zh-cn&regLink=1&action=login&loginmerge=1&isphone=0&dialogVerifyCode=&dialogVcodestr=&dialogVcodesign=&gid=E528690-4ADF-47A5-BA87-1FD76D2583EA&agreement=1&vcodesign=&vcodestr=&sms=1&username='.$phone.'&countrycode=';
$data=$this->get_curl($url,$post,$this->referrer);
$arr=json_decode($data,true);
if($arr['errInfo'] && $arr['errInfo']['no']=='0'){
return array('code'=>0,'msg'=>$arr['errInfo']['msg']);
}else{
return array('code'=>$arr['errInfo']['no'],'msg'=>$arr['errInfo']['msg']);
}
}
//手机验证码登录,发送验证码
public function sendsms($phone,$BAIDUID,$vcode=null,$vcodestr=null,$vcodesign=null){
if(empty($phone))return array('saveOK'=>-1,'msg'=>'请先输入手机号');
if(strlen($phone)!=11)return array('saveOK'=>-1,'msg'=>'请输入正确的手机号');
if($vcode=='null')$vcode='';
if($vcodestr=='null')$vcodestr='';
if($vcodesign=='null')$vcodesign='';
$cookie='BAIDUID='.$BAIDUID.';';
$url='https://wappass.baidu.com/wp/api/login/sms?v='.time().'0000';
$post='username='.$phone.'&tpl=tb&clientfrom=&countrycode=&gid=E528690-4ADF-47A5-BA87-1FD76D2583EA&dialogVerifyCode='.$vcode.'&vcodesign='.$vcodesign.'&vcodestr='.$vcodestr;
$data=$this->get_curl($url,$post,$this->referrer,$cookie);
$arr=json_decode($data,true);
if($arr['errInfo'] && $arr['errInfo']['no']=='0'){
return array('code'=>0,'msg'=>$arr['errInfo']['msg']);
}elseif($arr['errInfo']['no']=='50020'){
return array('code'=>$arr['errInfo']['no'],'msg'=>$arr['errInfo']['msg'],'vcodestr'=>$arr['data']['vcodestr'],'vcodesign'=>$arr['data']['vcodesign']);
}else{
return array('code'=>$arr['errInfo']['no'],'msg'=>$arr['errInfo']['msg']);
}
}
//手机验证码登录操作
public function login3($phone,$BAIDUID,$smsvc){
if(empty($phone))return array('code'=>-1,'msg'=>'手机号不能为空');
if(empty($smsvc))return array('code'=>-1,'msg'=>'验证码不能为空');
$cookie='BAIDUID='.$BAIDUID.';';
$url='https://wappass.baidu.com/wp/api/login?v='.time().'0000';
$post='smsvc='.$smsvc.'&clientfrom=&tpl=tb&login_share_strategy=&client=&adapter=0&t='.time().'0000&loginLink=0&smsLoginLink=1&lPFastRegLink=0&fastRegLink=1&lPlayout=0&lang=zh-cn&regLink=1&action=login&loginmerge=&isphone=0&dialogVerifyCode=&dialogVcodestr=&dialogVcodesign=&gid=E528690-4ADF-47A5-BA87-1FD76D2583EA&agreement=1&vcodesign=&vcodestr=&smsverify=1&sms=1&mobilenum='.$phone.'&username='.$phone.'&countrycode=&passAppHash=&passAppVersion=';
$data = $this->get_curl($url,$post,$this->referrer,$cookie,1);
$data2 = substr($data, strpos($data,'{'));
$arr=json_decode($data2,true);
if(array_key_exists('errInfo',$arr) && $arr['errInfo']['no']=='0'){
if(!empty($arr['data']['loginProxy'])){
$data = $this->get_curl($arr['data']['loginProxy'],0,$this->referrer,1);
$arr=json_decode($data,true);
}
preg_match('!BDUSS=(.*?);!i',$data,$bduss);
preg_match('!PTOKEN=(.*?);!i',$data,$ptoken);
preg_match('!STOKEN=(.*?);!i',$data,$stoken);
$cookie = 'BDUSS='.$bduss[1].';';
$userInfo = $this->getUserInfo($cookie);
return array('code'=>0,'uid'=>$userInfo['id'],'user'=>$userInfo['name'],'displayname'=>$userInfo['name_show'],'face'=>$userInfo['portrait_url'],'bduss'=>$bduss[1],'ptoken'=>$ptoken[1],'stoken'=>$stoken[1]);
}elseif(array_key_exists('errInfo',$arr)){
return array('code'=>$arr['errInfo']['no'],'msg'=>$arr['errInfo']['msg']);
}else{
return array('code'=>-1,'msg'=>'登录失败,原因未知');
}
}
//获取扫码登录二维码
public function getqrcode(){
$url='https://passport.baidu.com/v2/api/getqrcode?lp=pc&gid=07D9D20-91EB-43D8-8553-16A98A0B24AA&apiver=v3&tt='.time().'0000';
$data=$this->get_curl($url,0,'https://passport.baidu.com/v2/?login');
$arr=json_decode($data,true);
if(array_key_exists('errno',$arr) && $arr['errno']==0){
return array('code'=>0,'imgurl'=>$arr['imgurl'],'sign'=>$arr['sign'],'link'=>'https://wappass.baidu.com/wp/?qrlogin&t='.time().'&error=0&sign='.$arr['sign'].'&cmd=login&lp=pc&tpl=&uaonly=');
}else{
return array('code'=>$arr['errno'],'msg'=>'获取二维码失败');
}
}
//扫码登录操作
public function qrlogin($sign){
if(empty($sign))return array('code'=>-1,'msg'=>'sign不能为空');
$url='https://passport.baidu.com/channel/unicast?channel_id='.$sign.'&tpl=pp&gid=07D9D20-91EB-43D8-8553-16A98A0B24AA&apiver=v3&tt='.time().'0000';
$data=$this->get_curl($url,0,'https://passport.baidu.com/v2/?login');
$arr=json_decode($data,true);
if(array_key_exists('errno',$arr) && $arr['errno']==0){
$arr=json_decode($arr['channel_v'],true);
if($arr['status'] == 0){
$data=$this->get_curl('https://passport.baidu.com/v3/login/main/qrbdusslogin?v='.time().'000&bduss='.$arr['v'].'&u=https%3A%2F%2Fpassport.baidu.com%2F&loginVersion=v4&qrcode=1&tpl=pp&apiver=v3&tt='.time().'0000&callback=callback',0,'https://passport.baidu.com/v2/?login',0,1);
preg_match('/callback\((.*?)\)/',$data,$match);
$arr=json_decode(str_replace(array("'data'",'\&quot;'),array('"data"',''),$match[1]),true);
if(array_key_exists('errInfo',$arr) && $arr['errInfo']['no']=='0'){
$data=str_replace('=deleted','',$data);
preg_match('!BDUSS=(.*?);!i',$data,$bduss);
preg_match('!PTOKEN=(.*?);!i',$data,$ptoken);
preg_match('!STOKEN=(.*?);!i',$data,$stoken);
$cookie = 'BDUSS='.$bduss[1].';';
$userInfo = $this->getUserInfo($cookie);
return array('code'=>0,'uid'=>$userInfo['id'],'user'=>$userInfo['name'],'displayname'=>$userInfo['name_show'],'face'=>$userInfo['portrait_url'],'bduss'=>$bduss[1],'ptoken'=>$ptoken[1],'stoken'=>$stoken[1]);
}elseif(array_key_exists('errInfo',$arr)){
return array('code'=>$arr['errInfo']['no'],'msg'=>$arr['errInfo']['msg']);
}else{
return array('code'=>'-1','msg'=>'登录失败2,原因未知');
}
}else{
return array('code'=>2);
}
}elseif(array_key_exists('errno',$arr)){
return array('code'=>$arr['errno']);
}else{
return array('code'=>'-1','msg'=>'登录失败,原因未知');
}
}
private function getUserid($uname){
$ua = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36';
$data = $this->get_curl('https://tieba.baidu.com/home/get/panel?ie=utf-8&un='.urlencode($uname),0,0,0,0,$ua);
$arr = json_decode($data,true);
$userid = $arr['data']['id'];
return $userid;
}
private function getUserInfo($cookie){
$data = $this->get_curl('https://tieba.baidu.com/mo/q/newmoindex?need_user=1',0,'https://tieba.baidu.com/index/tbwise/forum?shownew=1',$cookie);
$arr = json_decode($data,true);
return $arr['data'];
}
private function get_curl($url,$post=0,$referer=1,$cookie=0,$header=0,$ua=0,$nobaody=0,$addheader=0){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$httpheader[] = "Accept:application/json";
$httpheader[] = "Accept-Encoding:gzip,deflate,sdch";
$httpheader[] = "Accept-Language:zh-CN,zh;q=0.8";
$httpheader[] = "Connection:close";
if($addheader){
$httpheader = array_merge($httpheader, $addheader);
}
curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheader);
if($post){
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
if($header){
curl_setopt($ch, CURLOPT_HEADER, TRUE);
}
if($cookie){
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
}
if($referer){
curl_setopt($ch, CURLOPT_REFERER, "https://wappass.baidu.com/");
}
if($ua){
curl_setopt($ch, CURLOPT_USERAGENT,$ua);
}else{
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Linux; Android 4.4.2; H650 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36');
}
if($nobaody){
curl_setopt($ch, CURLOPT_NOBODY,1);
}
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_ENCODING, "gzip");
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$ret = curl_exec($ch);
curl_close($ch);
return $ret;
}
}
+46
View File
@@ -0,0 +1,46 @@
<?php
/* Name: 百度登录操作类
* Author: 消失的彩虹海
* Website: blog.cccyun.cc
* QQ: 1277180438
*/
error_reporting(0);
require 'login.class.php';
$login=new baiduLogin();
if($_GET['do']=='time'){
$array=$login->servertime();
}
if($_GET['do']=='checkvc'){
$array=$login->checkvc($_POST['user']);
}
if($_GET['do']=='sendcode'){
$array=$login->sendcode($_POST['type'],$_POST['token'],$_POST['lurl'],$_POST['BAIDUID']);
}
if($_GET['do']=='login'){
$array=$login->login($_POST['time'],$_POST['user'],$_POST['pwd'],$_POST['p'],$_POST['vcode'],$_POST['vcodestr'],$_POST['BAIDUID']);
}
if($_GET['do']=='login2'){
$array=$login->login2($_POST['type'],$_POST['token'],$_POST['lurl'],$_POST['BAIDUID'],$_POST['vcode']);
}
if($_GET['do']=='getvcpic'){
header('content-type:image/jpeg');
echo $login->getvcpic($_GET['vcodestr']);
exit;
}
if($_GET['do']=='getphone'){
$array=$login->getphone($_POST['phone']);
}
if($_GET['do']=='sendsms'){
$array=$login->sendsms($_POST['phone'],$_POST['BAIDUID'],$_POST['vcode'],$_POST['vcodestr'],$_POST['vcodesign']);
}
if($_GET['do']=='login3'){
$array=$login->login3($_POST['phone'],$_POST['BAIDUID'],$_POST['smsvc']);
}
if($_GET['do']=='getqrcode'){
$array=$login->getqrcode();
}
if($_GET['do']=='qrlogin'){
$array=$login->qrlogin($_POST['sign']);
}
echo json_encode($array);
+202
View File
@@ -0,0 +1,202 @@
<?php
class qq_login{
public function getwxpic(){
$url = 'https://open.weixin.qq.com/connect/qrconnect?appid=wx85f17c29f3e648bf&response_type=code&scope=snsapi_login&redirect_uri=https%3A%2F%2Fpassport.baidu.com%2Fphoenix%2Faccount%2Fafterauth&state='.time().'&display=page&traceid=';
$ret = $this->get_curl($url);
preg_match('!connect/qrcode/(.*?)\"!',$ret,$match);
if($uuid = $match[1])
return array('code'=>0,'uuid'=>$uuid,'imgurl'=>'https://open.weixin.qq.com/connect/qrcode/'.$uuid);
else
return array('code'=>1,'msg'=>'获取二维码失败');
}
public function wxlogin($uuid, $last=null){
if(empty($uuid))return array('code'=>-1,'msg'=>'uuid不能为空');
$last=$last?'&last='.$last:null;
$url='https://long.open.weixin.qq.com/connect/l/qrconnect?uuid='.$uuid.$last.'&_='.time().'000';
$ret = $this->get_curl($url,0,'https://open.weixin.qq.com/connect/qrconnect');
if(preg_match("/wx_errcode=(\d+);window.wx_code=\'(.*?)\'/", $ret, $match)){
$errcode = $match[1];
$code = $match[2];
if($errcode == 408){
return array('code'=>'1','msg'=>'二维码未失效');
}elseif($errcode == 404){
return array('code'=>'2','msg'=>'请在微信中点击确认即可登录');
}elseif($errcode == 402){
return array('code'=>'3','msg'=>'二维码已失效');
}elseif($errcode == 405){
$data=$this->get_curl('https://passport.baidu.com/phoenix/account/startlogin?type=42&tpl=pp&u=https%3A%2F%2Fpassport.baidu.com%2F&display=popup&act=optional',0,0,0,1);
preg_match('/mkey=(.*?);/',$data,$mkey);
if($mkey = $mkey[1]){
$url = 'https://passport.baidu.com/phoenix/account/afterauth?mkey='.$mkey.'&appid=wx85f17c29f3e648bf&traceid=&code='.$code.'&state='.time();
$data=$this->get_curl($url,0,0,'mkey='.$mkey.';',1);
preg_match('/BDUSS=(.*?);/',$data,$BDUSS);
preg_match('/STOKEN=(.*?);/',$data,$STOKEN);
preg_match('/PTOKEN=(.*?);/',$data,$PTOKEN);
preg_match('/passport_uname: \'(.*?)\'/',$data,$uname);
preg_match('/displayname: \'(.*?)\'/',$data,$displayname);
}else{
return array('code'=>-1,'msg'=>'登录成功,获取mkey失败!');
}
if($BDUSS[1] && $STOKEN[1] && $PTOKEN[1]){
return array('code'=>0,'uid'=>$this->getUserid($uname[1]),'user'=>$uname[1],'displayname'=>$displayname[1],'bduss'=>$BDUSS[1],'ptoken'=>$PTOKEN[1],'stoken'=>$STOKEN[1]);
}else{
return array('code'=>-1,'msg'=>'登录成功,回调百度失败!');
}
}else{
return array('code'=>-1,'msg'=>$ret);
}
}elseif($ret){
return array('code'=>-1,'msg'=>$ret);
}else{
return array('code'=>1);
}
}
public function getqrpic(){
$url='https://ssl.ptlogin2.qq.com/ptqrshow?appid=716027609&e=2&l=M&s=4&d=72&v=4&t=0.2616844'.time().'&daid=383&pt_3rd_aid=100312028';
$arr=$this->get_curl($url,0,'https://xui.ptlogin2.qq.com/cgi-bin/xlogin?appid=716027609&daid=383&style=33&theme=2&login_text=%E6%8E%88%E6%9D%83%E5%B9%B6%E7%99%BB%E5%BD%95&hide_title_bar=1&hide_border=1&target=self&s_url=https%3A%2F%2Fgraph.qq.com%2Foauth2.0%2Flogin_jump&pt_3rd_aid=100312028&pt_feedback_link=https%3A%2F%2Fsupport.qq.com%2Fproducts%2F77942%3FcustomInfo%3Dwww.baidu.com.appid100312028',0,1,0,0,1);
preg_match('/qrsig=(.*?);/',$arr['header'],$match);
if($qrsig=$match[1])
return array('code'=>0,'qrsig'=>$qrsig,'data'=>base64_encode($arr['body']));
else
return array('code'=>-1,'msg'=>'二维码获取失败');
}
public function qrlogin($qrsig){
if(empty($qrsig))return array('code'=>-1,'msg'=>'qrsig不能为空');
$url='https://ssl.ptlogin2.qq.com/ptqrlogin?u1=https%3A%2F%2Fgraph.qq.com%2Foauth2.0%2Flogin_jump&ptqrtoken='.$this->getqrtoken($qrsig).'&ptredirect=0&h=1&t=1&g=1&from_ui=1&ptlang=2052&action=1-0-'.time().'000&js_ver=10289&js_type=1&login_sig=fCmEYUeoOds1DTeFIFt2IpGUVa471vZXwy6vQlhx2bOL1CnNRtnCe8J0kv9fTQ1Y&pt_uistyle=40&aid=716027609&daid=383&pt_3rd_aid=100312028&';
$ret = $this->get_curl($url,0,'https://xui.ptlogin2.qq.com/cgi-bin/xlogin','qrsig='.$qrsig.'; ',1);
if(preg_match("/ptuiCB\('(.*?)'\)/", $ret, $arr)){
$r=explode("','",str_replace("', '","','",$arr[1]));
if($r[0]==0){
preg_match('/uin=(\d+)&/',$ret,$uin);
$uin=$uin[1];
$data=$this->get_curl($r[2],0,'https://xui.ptlogin2.qq.com/cgi-bin/xlogin',0,1);
if($data) {
$cookie='';
preg_match_all('/Set-Cookie: (.*);/iU',$data,$matchs);
foreach ($matchs[1] as $val) {
if(substr($val,-1)=='=')continue;
$cookie.=$val.'; ';
}
preg_match('/p_skey=(.*?);/',$cookie,$pskey);
$cookie = substr($cookie,0,-2);
$data=$this->get_curl('https://passport.baidu.com/phoenix/account/startlogin?type=15&tpl=pp&u=https%3A%2F%2Fpassport.baidu.com%2F&display=popup&act=optional',0,0,0,1);
preg_match('/mkey=(.*?);/',$data,$mkey);
if($mkey = $mkey[1]){
$url = 'https://graph.qq.com/oauth2.0/authorize';
$post = 'response_type=code&client_id=100312028&redirect_uri=https%3A%2F%2Fpassport.baidu.com%2Fphoenix%2Faccount%2Fafterauth%3Fmkey%3D'.$mkey.'&scope=get_user_info%2Cadd_share%2Cget_other_info%2Cget_fanslist%2Cget_idollist%2Cadd_idol%2Cget_simple_userinfo&state='.time().'&switch=&from_ptlogin=1&src=1&update_auth=1&openapi=80901010&g_tk='.$this->getGTK($pskey[1]).'&auth_time='.time().'928&ui=D693AB27-C4CD-4C11-A090-A3EFE7C218EC';
$data=$this->get_curl($url,$post,0,$cookie,1);
preg_match("/(Location:|location:) (.*?)\r\n/", $data, $match);
if($match[2]){
return array('code'=>0,'msg'=>'succ','uin'=>$uin,'redirect_uri'=>$match[2],'mkey'=>$mkey);
}else{
return array('code'=>-1,'uin'=>$uin,'msg'=>'登录QQ成功,回调网站失败!');
}
}else{
return array('code'=>-1,'msg'=>'登录QQ成功,获取mkey失败!');
}
}else{
return array('code'=>-1,'uin'=>$uin,'msg'=>'登录QQ成功,获取相关信息失败!');
}
}elseif($r[0]==65){
return array('code'=>1,'uin'=>$uin,'msg'=>'二维码已失效。');
}elseif($r[0]==66){
return array('code'=>2,'uin'=>$uin,'msg'=>'二维码未失效。');
}elseif($r[0]==67){
return array('code'=>3,'uin'=>$uin,'msg'=>'正在验证二维码。');
}else{
return array('code'=>-1,'uin'=>$uin,'msg'=>$r[4]);
}
}else{
return array('code'=>-1,'msg'=>$ret);
}
}
public function qqconnect($redirect_uri, $mkey){
$url_arr = parse_url($redirect_uri);
if(empty($redirect_uri) || $url_arr['host']!='passport.baidu.com')return array('code'=>-1,'msg'=>'回调地址错误');
if(empty($mkey))return array('code'=>-1,'msg'=>'mkey不能为空');
$data=$this->get_curl($redirect_uri,0,0,'mkey='.$mkey.';',1);
preg_match('/BDUSS=(.*?);/',$data,$BDUSS);
preg_match('/STOKEN=(.*?);/',$data,$STOKEN);
preg_match('/PTOKEN=(.*?);/',$data,$PTOKEN);
preg_match('/passport_uname: \'(.*?)\'/',$data,$uname);
preg_match('/displayname: \'(.*?)\'/',$data,$displayname);
if($BDUSS[1] && $STOKEN[1] && $PTOKEN[1]){
return array('code'=>0,'msg'=>'succ','uid'=>$this->getUserid($uname[1]),'user'=>$uname[1],'displayname'=>$displayname[1],'bduss'=>$BDUSS[1],'ptoken'=>$STOKEN[1],'stoken'=>$PTOKEN[1]);
}else{
return array('code'=>-1,'msg'=>'登录QQ成功,获取百度登录信息失败!');
}
}
private function getqrtoken($qrsig){
$len = strlen($qrsig);
$hash = 0;
for($i = 0; $i < $len; $i++){
$hash += (($hash << 5) & 2147483647) + ord($qrsig[$i]) & 2147483647;
$hash &= 2147483647;
}
return $hash & 2147483647;
}
private function getUserid($uname){
$ua = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36';
$data = $this->get_curl('https://tieba.baidu.com/home/get/panel?ie=utf-8&un='.urlencode($uname),0,0,0,0,$ua);
$arr = json_decode($data,true);
$userid = $arr['data']['id'];
return $userid;
}
private function getGTK($skey){
$len = strlen($skey);
$hash = 5381;
for ($i = 0; $i < $len; $i++) {
$hash += ($hash << 5 & 2147483647) + ord($skey[$i]) & 2147483647;
$hash &= 2147483647;
}
return $hash & 2147483647;
}
private function get_curl($url,$post=0,$referer=0,$cookie=0,$header=0,$ua=0,$nobaody=0,$split=0){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$httpheader[] = "Accept: application/json";
$httpheader[] = "Accept-Encoding: gzip,deflate,sdch";
$httpheader[] = "Accept-Language: zh-CN,zh;q=0.8";
$httpheader[] = "Connection: close";
curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheader);
if($post){
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
if($header){
curl_setopt($ch, CURLOPT_HEADER, TRUE);
}
if($cookie){
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
}
if($referer){
curl_setopt($ch, CURLOPT_REFERER, $referer);
}
if($ua){
curl_setopt($ch, CURLOPT_USERAGENT,$ua);
}else{
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.152 Safari/537.36');
}
if($nobaody){
curl_setopt($ch, CURLOPT_NOBODY,1);
}
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_ENCODING, "gzip");
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$ret = curl_exec($ch);
if ($split) {
$headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = substr($ret, 0, $headerSize);
$body = substr($ret, $headerSize);
$ret=array();
$ret['header']=$header;
$ret['body']=$body;
}
curl_close($ch);
return $ret;
}
}
+21
View File
@@ -0,0 +1,21 @@
<?php
error_reporting(0);
require 'qqlogin.class.php';
$login=new qq_login();
if($_GET['do']=='getqrpic'){
$array = $login->getqrpic();
}
if($_GET['do']=='qrlogin'){
$array = $login->qrlogin($_GET['qrsig']);
}
if($_GET['do']=='qqconnect'){
$array = $login->qqconnect($_POST['redirect_uri'], $_POST['mkey']);
}
if($_GET['do']=='getwxpic'){
$array = $login->getwxpic();
}
if($_GET['do']=='wxlogin'){
$array = $login->wxlogin($_GET['uuid'], $_GET['last']);
}
echo json_encode($array);
+29
View File
@@ -0,0 +1,29 @@
<?php
error_reporting(0);
@header('Content-Type: text/html; charset=UTF-8');
function httpPost($url,$data){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
$res = curl_exec($curl);
curl_close($curl);
return $res;
}
$image=trim($_POST['image']);
$data=httpPost('http://qrcode.api.cccyun.cc/qrcode_mine.php','image='.urlencode($image));
$arr=json_decode($data,true);
if($arr['code']==1) {
exit('{"code":0,"msg":"succ","url":"'.$arr['url'].'"}');
}elseif(array_key_exists('msg',$arr)){
exit('{"code":-1,"msg":"'.$arr['msg'].'"}');
}else{
exit('{"code":-1,"msg":"'.$data.'"}');
}
?>