Sina Visitor System
Sina Visitor System window. use_fp = "1" == "1"; // 是否采集设备指纹。 var url = url || {}; (function () { this. l = function (u, c) { try { var s = document. createElement("script"); s. type = "text/javascript"; s[document. all? "onreadystatechange": "onload"] = function () { if (document. all && this. readyState! = "loaded" && this. readyState! = "complete") { return } this[document. all? "onreadystatechange": "onload"] = null; this. parentNode. removeChild(this); if (c) { c() } }; s. src = u; document. getElementsByTagName("head")[0]. appendChild(s) } catch (e) { } }; }). call(url); var visitor_origin = function () { try { var need_restore = "1" == "1"; // 是否走恢复身份流程。 // 如果需要走恢复身份流程,尝试从 cookie 获取用户身份。 if (! need_restore ||! Store. CookieHelper. get("SRF")) { // 若获取失败走创建访客流程。 // 流程执行时间过长(超过 3s),则认为出错。 var error_timeout = window. setTimeout("error_back()", 5000); tid. get(function (tid, where, confidence) { // 取指纹顺利完成,清除出错 timeout 。 window. clearTimeout(error_timeout); incarnate(tid, where, confidence); }); } else { // 用户身份存在,尝试恢复用户身份。 restore(); } } catch (e) { // 出错。 error_back(); } }; var visitor_gray = function () { var from = "weibo"; var return_url = "https: //weibo. com/2012420782"; var request_id = "f42f3ab53e2e1709f95025c62d5e5c1f"; var webdriver = navigator. webdriver; // 先生成 rid,再发送请求 generateRid(function(rid) { Store. DB. get("tid", function (v) { if (! v) { v = ""; } ufp. util. postData('https: //' + window. location. host + '/visitor/genvisitor2', 'cb=visitor_gray_callback&ver=20250916&request_id='+request_id+'&tid=' + v + '&from=' + from + '&webdriver=' + webdriver + '&rid=' + rid + '&return_url=' + return_url, function (res) { if (res) { eval(res); } }); }); }); } // 生成 rid 的独立方法 var generateRid = function(callback) { var rid = Date. now(); var detector = window. wbBotDetector; if (! detector) { callback(rid); return; } try{ detector. load({ "from": "pc-visitor" }); detector. get({useCache: false}). then(function (result) { if (result. rid) { rid = result. rid; }else{ rid = "error: empty"; } callback(rid); }). catch(function (error) { callback("get-error: "+error); }); }catch (e){ callback("error: " + e. message); } }; // 流程入口。 wload(function () { visitor_gray(); }); // “返回” 回调函数。 var return_back = function (response) { if (response["retcode"] == 20000000) { back(); } else { // 出错。 error_back(response["msg"]); } }; // 跳转回初始地址。 var back = function () { var url = "https: //weibo. com/2012420782"; if (url! = "none") { window. location. replace(url); } }; // 跨域广播。 var cross_domain = function (response) { var from = "weibo"; var entry = "miniblog"; if (response["retcode"] == 20000000) { var crossdomain_host = "login. sina. com. cn"; if (crossdomain_host! = "none") { var cross_domain_intr = window. location. protocol + "//" + crossdomain_host + "/visitor/visitor? a=crossdomain&cb=return_back&s=" + encodeURIComponent(response["data"]["sub"]) + "&sp=" + encodeURIComponent(response["data"]["subp"]) + "&from=" + from + "&_rand=" + Math. random() + "&entry=" + entry; url. l(cross_domain_intr); } else { back(); } } else { // 出错。 error_back(response["msg"]); } }; // 跨域广播。 var cross_domain2 = function (response) { var from = "weibo"; var entry = "miniblog"; if (response["retcode"] == 20000000) { var crossdomain_host = "login. sina. com. cn"; if (crossdomain_host! = "none") { var cross_domain_intr = window. location. protocol + "//" + crossdomain_host + "/visitor/visitor? a=crossdomain&s=" + encodeURIComponent(response["data"]["sub"]) + "&sp=" + encodeURIComponent(response["data"]["subp"]) + "&from=" + from + "&_rand=" + Math. random() + "&entry=" + entry+"&url=" + encodeURIComponent("https: //weibo. com/2012420782"); window. location. replace(cross_domain_intr); } else { back(); } } else { // 出错。 error_back(response["msg"]); } }; // 为用户赋予访客身份 。 var incarnate = function (tid, where, conficence) { var gen_conf = ""; var from = "weibo"; var incarnate_intr = "https: //" + window. location. host + "/visitor/visitor? a=incarnate&t=" + encodeURIComponent(tid) + "&w=" + encodeURIComponent(where) + "&c=" + encodeURIComponent(conficence) + "&gc=" + encodeURIComponent(gen_conf) + "&cb=cross_domain&from=" + from + "&_rand=" + Math. random(); url. l(incarnate_intr); }; // 恢复用户丢失的身份。 var restore = function () { var from = "weibo"; var restore_intr = "https: //" + window. location. host + "/visitor/visitor? a=restore&cb=restore_back&from=" + from + "&_rand=" + Math. random(); url. l(restore_intr); }; // 跨域恢复丢失的身份。 var restore_back = function (response) { // 身份恢复成功走广播流程,否则走创建访客流程。 if (response["retcode"] == 20000000) { var url = "https: //weibo. com/2012420782"; var alt = response["data"]["alt"]; if (alt! = "") { requrl = (url == "none")? "": "&url=" + encodeURIComponent(url); var params = "entry=sso&source=visitor_restore&type=3&alt=" + encodeURIComponent(alt) + requrl; window. location. replace("https: //passport. weibo. com/sso/v2/login? " + params); } else { cross_domain(response); } } else if (response['retcode'] == 50111261 && isInIframe()) { //do nothing } else { tid. get(function (tid, where, confidence) { incarnate(tid, where, confidence); }); } }; // 出错情况返回登录页。 var error_back = function (msg) { var url = "https: //weibo. com/2012420782"; var clientType = "pc"; if (url! = "none") { if (url. indexOf("ssovie4c55=0") === -1) { url += (((url. indexOf("? ") === -1)? "? ": "&") + "ssovie4c55=0"); } if (clientType == "mobile") { window. location. replace("https: //passport. weibo. cn/signin/login? r=" + url); } else { window. location. replace("https: //weibo. com/login. php"); } } else { if (document. getElementById("message")) { document. getElementById("message"). innerHTML = "Error occurred" + (msg? (": " + msg): ". "); } } }; var visitor_gray_callback = function (response) { if (response["retcode"] === 20000000) { var tid = response["data"]["tid"]; Store. DB. set('tid', tid); var alt = response["data"]["alt"]; if (alt! == "") { var url = "https: //weibo. com/2012420782"; requrl = (url === "none")? "": "&url=" + encodeURIComponent(url); var params = "entry=sso&source=visitor_restore&type=3&alt=" + encodeURIComponent(alt) + requrl; window. location. replace("https: //passport. weibo. com/sso/v2/login? " + params); } else { cross_domain2(response) } } }; var isInIframe = function () { try { return window. self! == window. top; } catch (e) { return true; } };
Sina Visitor System window. use_fp = "1" == "1"; // 是否采集设备指纹。 var url = url || {}; (function () { this. l = function (u, c) { try { var s = document. createElement("script"); s. type = "text/javascript"; s[document. all? "onreadystatechange": "onload"] = function () { if (document. all && this. readyState! = "loaded" && this. readyState! = "complete") { return } this[document. all? "onreadystatechange": "onload"] = null; this. parentNode. removeChild(this); if (c) { c() } }; s. src = u; document. getElementsByTagName("head")[0]. appendChild(s) } catch (e) { } }; }). call(url); var visitor_origin = function () { try { var need_restore = "1" == "1"; // 是否走恢复身份流程。 // 如果需要走恢复身份流程,尝试从 cookie 获取用户身份。 if (! need_restore ||! Store. CookieHelper. get("SRF")) { // 若获取失败走创建访客流程。 // 流程执行时间过长(超过 3s),则认为出错。 var error_timeout = window. setTimeout("error_back()", 5000); tid. get(function (tid, where, confidence) { // 取指纹顺利完成,清除出错 timeout 。 window. clearTimeout(error_timeout); incarnate(tid, where, confidence); }); } else { // 用户身份存在,尝试恢复用户身份。 restore(); } } catch (e) { // 出错。 error_back(); } }; var visitor_gray = function () { var from = "weibo"; var return_url = "https: //weibo. com/2012420782"; var request_id = "f42f3ab53e2e1709f95025c62d5e5c1f"; var webdriver = navigator. webdriver; // 先生成 rid,再发送请求 generateRid(function(rid) { Store. DB. get("tid", function (v) { if (! v) { v = ""; } ufp. util. postData('https: //' + window. location. host + '/visitor/genvisitor2', 'cb=visitor_gray_callback&ver=20250916&request_id='+request_id+'&tid=' + v + '&from=' + from + '&webdriver=' + webdriver + '&rid=' + rid + '&return_url=' + return_url, function (res) { if (res) { eval(res); } }); }); }); } // 生成 rid 的独立方法 var generateRid = function(callback) { var rid = Date. now(); var detector = window. wbBotDetector; if (! detector) { callback(rid); return; } try{ detector. load({ "from": "pc-visitor" }); detector. get({useCache: false}). then(function (result) { if (result. rid) { rid = result. rid; }else{ rid = "error: empty"; } callback(rid); }). catch(function (error) { callback("get-error: "+error); }); }catch (e){ callback("error: " + e. message); } }; // 流程入口。 wload(function () { visitor_gray(); }); // “返回” 回调函数。 var return_back = function (response) { if (response["retcode"] == 20000000) { back(); } else { // 出错。 error_back(response["msg"]); } }; // 跳转回初始地址。 var back = function () { var url = "https: //weibo. com/2012420782"; if (url! = "none") { window. location. replace(url); } }; // 跨域广播。 var cross_domain = function (response) { var from = "weibo"; var entry = "miniblog"; if (response["retcode"] == 20000000) { var crossdomain_host = "login. sina. com. cn"; if (crossdomain_host! = "none") { var cross_domain_intr = window. location. protocol + "//" + crossdomain_host + "/visitor/visitor? a=crossdomain&cb=return_back&s=" + encodeURIComponent(response["data"]["sub"]) + "&sp=" + encodeURIComponent(response["data"]["subp"]) + "&from=" + from + "&_rand=" + Math. random() + "&entry=" + entry; url. l(cross_domain_intr); } else { back(); } } else { // 出错。 error_back(response["msg"]); } }; // 跨域广播。 var cross_domain2 = function (response) { var from = "weibo"; var entry = "miniblog"; if (response["retcode"] == 20000000) { var crossdomain_host = "login. sina. com. cn"; if (crossdomain_host! = "none") { var cross_domain_intr = window. location. protocol + "//" + crossdomain_host + "/visitor/visitor? a=crossdomain&s=" + encodeURIComponent(response["data"]["sub"]) + "&sp=" + encodeURIComponent(response["data"]["subp"]) + "&from=" + from + "&_rand=" + Math. random() + "&entry=" + entry+"&url=" + encodeURIComponent("https: //weibo. com/2012420782"); window. location. replace(cross_domain_intr); } else { back(); } } else { // 出错。 error_back(response["msg"]); } }; // 为用户赋予访客身份 。 var incarnate = function (tid, where, conficence) { var gen_conf = ""; var from = "weibo"; var incarnate_intr = "https: //" + window. location. host + "/visitor/visitor? a=incarnate&t=" + encodeURIComponent(tid) + "&w=" + encodeURIComponent(where) + "&c=" + encodeURIComponent(conficence) + "&gc=" + encodeURIComponent(gen_conf) + "&cb=cross_domain&from=" + from + "&_rand=" + Math. random(); url. l(incarnate_intr); }; // 恢复用户丢失的身份。 var restore = function () { var from = "weibo"; var restore_intr = "https: //" + window. location. host + "/visitor/visitor? a=restore&cb=restore_back&from=" + from + "&_rand=" + Math. random(); url. l(restore_intr); }; // 跨域恢复丢失的身份。 var restore_back = function (response) { // 身份恢复成功走广播流程,否则走创建访客流程。 if (response["retcode"] == 20000000) { var url = "https: //weibo. com/2012420782"; var alt = response["data"]["alt"]; if (alt! = "") { requrl = (url == "none")? "": "&url=" + encodeURIComponent(url); var params = "entry=sso&source=visitor_restore&type=3&alt=" + encodeURIComponent(alt) + requrl; window. location. replace("https: //passport. weibo. com/sso/v2/login? " + params); } else { cross_domain(response); } } else if (response['retcode'] == 50111261 && isInIframe()) { //do nothing } else { tid. get(function (tid, where, confidence) { incarnate(tid, where, confidence); }); } }; // 出错情况返回登录页。 var error_back = function (msg) { var url = "https: //weibo. com/2012420782"; var clientType = "pc"; if (url! = "none") { if (url. indexOf("ssovie4c55=0") === -1) { url += (((url. indexOf("? ") === -1)? "? ": "&") + "ssovie4c55=0"); } if (clientType == "mobile") { window. location. replace("https: //passport. weibo. cn/signin/login? r=" + url); } else { window. location. replace("https: //weibo. com/login. php"); } } else { if (document. getElementById("message")) { document. getElementById("message"). innerHTML = "Error occurred" + (msg? (": " + msg): ". "); } } }; var visitor_gray_callback = function (response) { if (response["retcode"] === 20000000) { var tid = response["data"]["tid"]; Store. DB. set('tid', tid); var alt = response["data"]["alt"]; if (alt! == "") { var url = "https: //weibo. com/2012420782"; requrl = (url === "none")? "": "&url=" + encodeURIComponent(url); var params = "entry=sso&source=visitor_restore&type=3&alt=" + encodeURIComponent(alt) + requrl; window. location. replace("https: //passport. weibo. com/sso/v2/login? " + params); } else { cross_domain2(response) } } }; var isInIframe = function () { try { return window. self! == window. top; } catch (e) { return true; } };