qzone.class.php,php使用curl抓取qq空间的访客信息示例

config.php

复制代码 代码如下:

define("APP_DIR", dirname(__FILE__));

define("COOKIE_FILE", APP_DIR . "/app.cookie.txt"); //会话记录文件

define("VISITOR_CAPTURE_INTERVAL", 3); //QQ采集间隔

define("VISITOR_DATA_UPLOAD_INTERVAL", "");

define("THIS_TIME", time());

define("REQUEST_TIMEOUT", 20); //请求超时20秒

define("END_LINE", "");

define("DEBUG", true); //开启调试

$login_users = array(

array("user" => "2064556526", "password" => "909124951"),

array("user" => "483258700", "password" => "909124951"),

array("user" => "1990270522", "password" => "909124951"),

array("user" => "2718711637", "password" => "909124951"),

array("user" => "2841076562", "password" => "909124951"),

);

qy.visitor.php

复制代码 代码如下:

include("./config.php");

include(APP_DIR . "/qy.visitor.php");

$sessions = array();

$user = $login_users[array_rand($login_users)];

$visitor_capture = new QQVisitorCapture($user["user"], $user["password"], COOKIE_FILE, REQUEST_TIMEOUT, DEBUG, END_LINE);

$visitors = $visitor_capture->getVisitorInfo();

if (empty($visitors)) {

$this->clearCookies(true);

} else {

$cckf_service = new CCKFService(SECURITY_KEY,SERVICE_ID,SERVICE_ADDRESS,"", REQUEST_TIMEOUT, DEBUG, END_LINE);

}

qy.class.php

复制代码 代码如下:

class Trace

{

public static function nl($num = 1)

{

$str = "";

for ($i = 0; $i < $num; $i++) {

$str .= "";

}

return $str;

}

public static function br($num = 1)

{

$str = "";

for ($i = 0; $i < $num; $i++) {

$str .= "
";

}

return $str;

}

public static function write($content, $end_line, $title = null)

{

$close = "^^^^^^^^^^^^^^^^^";

if ($title) {

$start = "--------" . $title . "---------";

} else {

$start = "-----------------";

}

echo $start . $end_line;

if (is_array($content)) {

print_r($content);

echo $end_line;

} else {

echo $content;

echo $end_line;

}

if (empty($content)) {

echo $end_line;

} else {

echo $close . $end_line;

}

}

}

class Utils

{

public static function getMicroTime()

{

list($mic, $time) = explode(" ", microtime());

return intval($time) + floatval(sprintf("%.3f", $mic));

}

public static function getUTCMilliseconds()

{

return round(rand(1, 9) / 10 * 2147483647) * round(1, 999) % 10000000000;

}

public static function decodeURIComponent($content)

{

return urldecode(preg_replace("/\\x([0-9a-z]{2,3})/i", "%$1", $content));

}

public static function  jsRandom()

{

list($mic, $time) = explode(" ", microtime());

return $mic;

}

function loginJsTime()

{

list($mic, $time) = explode(" ", microtime());

return $time . sprintf("%3d", $mic * 1000);

}

protected static function utf8_unicode($c)

{

switch (strlen($c)) {

case 1:

return ord($c);

case 2:

$n = (ord($c[0]) & 0x3f) << 6;

$n += ord($c[1]) & 0x3f;

return $n;

case 3:

$n = (ord($c[0]) & 0x1f) << 12;

$n += (ord($c[1]) & 0x3f) << 6;

$n += ord($c[2]) & 0x3f;

return $n;

case 4:

$n = (ord($c[0]) & 0x0f) << 18;

$n += (ord($c[1]) & 0x3f) << 12;

$n += (ord($c[2]) & 0x3f) << 6;

$n += ord($c[3]) & 0x3f;

return $n;

}

}

public static function  getGTK($str)

{

$hash = 5381;

for ($i = 0, $len = strlen($str); $i < $len; ++$i) {

$hash += ($hash << 5) + self::utf8_unicode($str[$i]);

}

return $hash & 2147483647;

}

protected static function hexchar2bin($str)

{

$arr = "";

$temp = null;

for ($i = 0; $i < strlen($str); $i = $i + 2) {

$arr .= "\x" . substr($str, $i, 2);

}

eval("$temp="" . $arr . "";");

return $temp;

}

protected static function getUid($uid)

{

$temp = null;

eval("$temp="" . $uid . "";");

return $temp;

}

public static function getEncryption($password, $uin, $vcode)

{

$uin = self::getUid($uin);

$str1 = self::hexchar2bin(strtoupper(md5($password)));

$str2 = strtoupper(md5($str1 . $uin));

return strtoupper(md5($str2 . strtoupper($vcode)));

}

}

class CookieFileExtract

{

protected $cookie_file;

protected $cookie_list;

protected function  __construct($cookie_file)

{

$this->cookie_file = $cookie_file;

$this->cookie_list = $this->extractFile();

}

protected function isValidateCookieFile()

{

if ($this->cookie_file && file_exists($this->cookie_file)) {

return true;

} else {

return false;

}

}

protected function extractFile()

{

$cookie_list = array();

if ($this->isValidateCookieFile($this->cookie_file)) {

$content = file($this->cookie_file);

if (is_array($content)) {

foreach ($content as $line) {

$line = trim($line);

if (strlen($line) > 0 && $line[0] != "#") {

$cookie = (preg_split("/s+/", $line));

if (count($cookie) == 7) {

$cookie_list[$cookie[5]] = $cookie[6];

} else {

$cookie_list[$cookie[5]] = "";

}

}

}

}

}

return $cookie_list;

}

protected function buildCookieStr($cookies)

{

$arr = array();

if (is_array($cookies)) {

foreach ($cookies as $k => $cookie) {

$line = $cookie["domain"] . "" . "TRUE" . "" . $cookie["path"] . "" . "FALSE" . "" . $cookie["expires"] . "" . $k . "" . $cookie["value"];

$arr[] = $line;

}

}

return $arr;

}

protected function __setCookies($cookies)

{

$new_line = array();

if (is_array($cookies)) {

if ($this->isValidateCookieFile($this->cookie_file)) {

$content = file($this->cookie_file);

if (is_array($content)) {

foreach ($content as $line) {

$line = trim($line);

if (strlen($line) > 0 && $line[0] != "#") {

$cookie = (preg_split("/s+/", $line));

if (!in_array($cookie[5], $cookies)) {

$new_line[] = $line;

}

} else {

$new_line[] = $line;

}

}

}

}

file_put_contents($this->cookie_file, implode("", array_merge($new_line, $this->buildCookieStr($cookies))));

}

}

protected function __getAllCookies($refresh = false)

{

if ($refresh) {

$this->cookie_list = $this->extractFile();

}

return $this->cookie_list;

}

protected function __getCookie($cookie_name, $refresh = false)

{

$cookie_list = $this->__getAllCookies($refresh);

if (is_array($cookie_list) && array_key_exists($cookie_name, $cookie_list)) {

return $cookie_list[$cookie_name];

} else {

return null;

}

}

protected function __clearAllCookies()

{

$this->cookie_list = null;

@unlink($this->cookie_file);

}

}

class BaseRequest extends CookieFileExtract

{

protected $curl_instance;

protected $request_timeout;

protected $debug;

protected $end_line;

protected $user_agent = "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:26.0) Gecko/20100101 Firefox/26.0";

protected function __construct($cookie_file, $request_timeout, $debug, $end_line)

{

parent::__construct($cookie_file);

$this->request_timeout = $request_timeout;

$this->debug = $debug;

$this->end_line = $end_line;

$this->initInstance();

}

protected function initInstance()

{

$this->curl_instance = curl_init();

if ($this->isValidateCookieFile()) {

curl_setopt($this->curl_instance, CURLOPT_COOKIEJAR, $this->cookie_file);

curl_setopt($this->curl_instance, CURLOPT_COOKIEFILE, $this->cookie_file);

}

curl_setopt($this->curl_instance, CURLOPT_TIMEOUT, $this->request_timeout);

curl_setopt($this->curl_instance, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($this->curl_instance, CURLOPT_HEADER, 1);

curl_setopt($this->curl_instance, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($this->curl_instance, CURLOPT_SSL_VERIFYHOST, 0);

curl_exec($this->curl_instance);

}

function setCookies($cookies)

{

$this->closeInstance();

$this->__setCookies($cookies);

$this->initInstance();

}

protected function getAllCookies($refresh = false)

{

$this->closeInstance();

$cookies = $this->__getAllCookies($refresh);

$this->initInstance();

return $cookies;

}

protected function clearAllCookies($refresh = false)

{

$this->closeInstance();

$this->__clearAllCookies();

if ($refresh) {

$this->initInstance();

}

}

protected function getCookie($name, $refresh = false)

{

$this->closeInstance();

$cookie = $this->__getCookie($name, $refresh);

$this->initInstance();

return $cookie;

}

protected function getRequestInstance()

{

return $this->curl_instance;

}

protected function closeInstance()

{

if (is_resource($this->curl_instance)) {

curl_close($this->curl_instance);

}

}

protected function resetInstance()

{

$this->closeInstance();

@unlink($this->cookie_file);

$this->initInstance();

}

protected function requestExec($option)

{

curl_setopt_array($this->getRequestInstance(), $option);

//if ($this->debug) {

//    $result = curl_exec($this->getRequestInstance());

//    Trace::write($result, $this->end_line, "request output");

//} else {

return curl_exec($this->getRequestInstance());

//}

}

}

class QQVisitorRequest extends BaseRequest

{

protected $user;

protected $password;

protected function __construct($user, $password, $cookie_file, $request_timeout, $debug, $end_line)

{

parent::__construct(dirname($cookie_file) . "/" . $user . "." . basename($cookie_file), $request_timeout, $debug, $end_line);

$this->user = $user;

$this->password = $password;

}

}

class ResultExtract

{

public static function  getCoreJsInfo($content, $user)

{

$arr = array();

preg_match("/cfgs*=s*{(.*?)s*}s*,s*URL_PARAM_HASH/s", $content, $m);

if (count($m) > 0) {

$f = preg_replace("/s*/", "", $m[1]);

$f = preg_replace("/"+g\_iLoginUin+"/", $user, $f);

$f = preg_replace("/$j.cookie.get("hotfeeds_closed")==1?"":/", "", $f);

$f = explode(",", $f);

if (count($f) > 0) {

foreach ($f as $t) {

$t = trim($t);

$p = strpos($t, ":");

$key = trim(substr($t, 0, $p), """);

$value = trim(substr($t, $p + 1), """);

if ($key) {

$arr[$key] = $value;

}

}

if (count($arr) > 0) {

$arr["visitor"] = $arr;

}

}

}

return $arr;

}

public static function  enterQzoneSuccess($content)

{

$arr = array();

$arr2 = array();

preg_match("/g_Datas*=s*{s*feedsPart1s*:s*(.*?)s*,s*feedsPart2/s", $content, $m);

if (count($m) > 0) {

$f = preg_replace("/s*/", "", $m[1]);

$f = preg_replace("/([{,])([^,]*?)(:)/", "$1"$2"$3", $f);

$f = preg_replace("/:"(.*?)"([,}])/", ":"$1"$2", $f);

$arr = json_decode($f, true);

$arr = $arr["main"];

}

preg_match("/g_type.*?g_IZone_Flag/s", $content, $m);

if (count($m) > 0) {

$f = preg_replace("/s*/", "", $m[0]);

$f = explode(",", $f);

foreach ($f as $t) {

$t = trim($t);

$p = strpos($t, "=");

$key = trim(substr($t, 0, $p));

$value = trim(substr($t, $p + 1), """);

if ($key) {

$arr2[$key] = $value;

}

}

}

return array_merge($arr, $arr2);

}

public static function getLoginJsInfo($content)

{

$s = preg_replace("/.*?pt.plogins*=s*{(.*?)aqScanLink.*/s", "$1", $content);

preg_match("/.*js_types*:s*(d+)s*,.*/", $s, $m);

if (count($m) > 1) {

return array("js_type" => $m[1]);

}

return array();

}

public static function getLoginAddress($content)

{

preg_match("/.*?s*.*?/", $content, $m);

if (count($m) > 1) {

return html_entity_decode($m[1]);

}

return null;

}

public static function checkLoginSuccess($content)

{

preg_match_all("/.*?((.*)).*?/", $content, $match);

if ($match[1][0]) {

$g = explode(",", $match[1][0]);

if (count($g) > 1) {

if (($g[count($g) - 2]) == ""登录成功!"") {

$url_parts = parse_url($g[2]);

parse_str($url_parts["query"], $arr);

if (array_key_exists("ptsig", $arr)) {

$ptsig = $arr["ptsig"];

} else {

$ptsig = null;

}

return array("status" => true, "value" => array("url" => $g[2], "ptsig" => $ptsig));

}

}

}

return array("status" => false);

}

public static function rightFrameVisitors($content)

{

$visitor_list = array();

$f = preg_replace("/s*/", "", $content);

$f = preg_replace("/.*?_Callback(({.*?})).*?/", "$1", $f);

$f = json_decode($f, true);

if (is_array($f) && count($f) > 0 && array_key_exists("data", $f)

&& array_key_exists("module_3", $f["data"])

&& array_key_exists("data", $f["data"]["module_3"])

&& array_key_exists("items", $f["data"]["module_3"]["data"])

) {

$visitors = $f["data"]["module_3"]["data"]["items"];

foreach ($visitors as $visitor) {

if (!array_key_exists("loc", $visitor)) {

$visitor_list [] = array(

"uin" => $visitor["uin"], "name" => $visitor["name"], "online" => $visitor["online"], "time" => $visitor["time"],

"img" => $visitor["img"], "yellow" => $visitor["yellow"], "supervip" => $visitor["supervip"],

);

}

}

}

return $visitor_list;

}

public static function getVisitors($content)

{

$f = preg_replace("/s*/", "", $content);

preg_match("/^.*?({.*?}));s*$/", $f, $m);

$visitor_list = array();

if (is_array($m) && count($m) > 1 && strlen($m[1]) > 0) {

$visitors = json_decode(trim($m[1]), true);

if (array_key_exists("data", $visitors) && array_key_exists("items", $visitors["data"])) {

foreach ($visitors["data"]["items"] as $visitor) {

if ($visitor["name"]) {

$_ = array(

"uin" => $visitor["uin"], "name" => $visitor["name"], "time" => $visitor["time"],

"yellow" => $visitor["yellow"], "supervip" => $visitor["supervip"],

);

if (array_key_exists("portraitlabel", $visitor)) {

$_["portraitlabel"] = $visitor["portraitlabel"];

}

$visitor_list[] = $_;

if (array_key_exists("uins", $visitor)) {

foreach ($visitor["uins"] as $uins) {

$_ = array(

"uin" => $uins["uin"], "name" => $uins["name"], "time" => $uins["time"],

"yellow" => $uins["yellow"], "supervip" => $uins["supervip"],

);

if (array_key_exists("portraitlabel", $uins)) {

$_["portraitlabel"] = $uins["portraitlabel"];

}

$visitor_list[] = $_;

}

}

}

}

}

}

return $visitor_list;

}

public static function  checkVC($content)

{

preg_match_all("/.*?((.*)).*?/", $content, $match);

if (strlen($match[1][0]) > 1) {

$m = str_replace(""", "", $match[1][0]);

$g = explode(",", $m);

if (count($g) == 3) {

return array("saltUin" => $g[2], "verifycode" => $g[1], "RSAKey" => $g[2] ? false : true);

}

}

return array();

}

public static function getLoginInfo($content)

{

$s = preg_replace("/.*?pt.ptuis*=s*{(.*?)}s*;.*/s", "$1", $content);

$e = preg_split("/,s*/", trim($s));

$info = array();

foreach ($e as $t) {

$t = trim($t);

$p = strpos($t, ":");

$key = trim(substr($t, 0, $p));

$value = trim(substr($t, $p + 1));

if (preg_match("/encodeURIComponent/", $value)) {

$value = preg_replace("/^encodeURIComponents*(s*"(.*)?"s*)s*,?$/", "$1", $value);

} else {

$value = trim($value, "",");

}

if ($key) {

$info[$key] = urldecode($value);

}

}

return $info;

}

}

class QQVisitorCapture extends QQVisitorRequest

{

public function __construct($user, $password, $cookie_file, $request_timeout, $debug, $end_line)

{

parent:: __construct($user, $password, $cookie_file, $request_timeout, $debug, $end_line);

}

public function trace($content, $title)

{

if ($this->debug = true) {

Trace:: write($content, $this->end_line, $title);

}

}

public function error($message)

{

$this->trace($message, "login error ");

return false;

}

public function success()

{

return true;

}

public function getGTKEncryption()

{

return Utils ::getGTK($this->getCookie("skey", true));

}

public function getCookies($refresh = false)

{

return $this->getAllCookies($refresh);

}

public function clearCookies($refresh = false)

{

return $this->clearAllCookies($refresh);

}

public function login()

{

$login_submit_info_url = null;

$login_submit_info_url = $this->visitQzone();

$this->setCookies(array(

"pgv_pvid" => array(

"value" => Utils::getUTCMilliseconds(), "path" => "/", "domain" => ".qq.com", "expires" => "0"

),

"pgv_info" => array(

"value" => "ssid=s" . Utils::getUTCMilliseconds(), "path" => "/", "domain" => ".qq.com", "expires" => "0"

),

"_qz_referrer" => array(

"value" => "qzone.qq.com", "path" => "/", "domain" => ".qq.com", "expires" => "0"

),

));

//log

$this->trace("", "login begin");

//log

$this->trace($login_submit_info_url, "$login_submit_info_url===");

$login_submit_info = $this->getLoginSubmitInfo($login_submit_info_url);

//log

$this->trace($login_submit_info, "$login_submit_info===");

if (empty($login_submit_info)) {

$this->error("err-001");

}

$this->report();

//log

$this->trace("", "getLoginJs");

$js_arr = $this->getLoginJs();

//log

$this->trace($js_arr, "$getLoginJs===");

if (empty($js_arr)) {

$this->error("err-002");

}

$u = $uin = $this->user;

$r = Utils::jsRandom();

$verifycode = null;

$pt_rsa = null;

$ptredirect = $login_submit_info["target"];

$h = $t = $g = $from_ui = 1;

$p = null;

$regmaster = $login_submit_info["regmaster"];

$u1 = Utils::decodeURIComponent($login_submit_info["s_url"]);

$ptlang = $login_submit_info["lang"];

$action = strval(rand(5, 9)) . "-" . strval(strlen($this->user) + strlen($this->password) + rand(1, 5)) . "-" . Utils::loginJsTime();

$js_ver = $login_submit_info["ptui_version"];

$js_type = $js_arr["js_type"];

$login_sig = $login_submit_info["login_sig"];

$appid = $aid = $login_submit_info["appid"];

$pt_qzone_sig = $login_submit_info["pt_qzone_sig"];

$daid = $login_submit_info["daid"];

//log

$this->trace("", "checkVC");

$check_data = $this->checkVC($regmaster, $appid, $js_ver, $js_type, $login_sig, $u1, $r);

if (count($check_data) !== 3) {

$this->error("err-003");

}

//log

$this->trace($check_data, "$check_data===");

//log

$this->trace(json_encode($check_data), "$check_data===");

$verifycode = $check_data["verifycode"];

if ($check_data["RSAKey"]) {

$this->error("err-004");

} else {

$p = Utils::getEncryption($this->password, $check_data["saltUin"], $verifycode);

$pt_rsa = 0;

}

//log

$this->trace("", "submitLogin");

$this->setCookies(array(

"ptui_loginuin" => array(

"value" => $this->user, "path" => "/", "domain" => ".qq.com", "expires" => "0"

),

));

$login_result = $this->submitLogin($verifycode, $p,

$pt_rsa, $ptredirect, $u1,

$h, $t, $g, $from_ui,

$ptlang, $action, $js_ver, $js_type,

$login_sig, $aid, $daid, $pt_qzone_sig);

if ($login_result["status"]) {

$this->trace("登录成功", "submitLogin");

$this->trace($login_result, "$login_result====");

$this->loginSuccessRedirect($login_result["value"]["url"]);

$this->setCookies(array(

"fnc" => array(

"value" => 1, "path" => "/", "domain" => ".qzone.qq.com", "expires" => "0"

),

));

$enterQzoneInfo = $this->enterQzone($login_result["value"]["url"], $login_result["value"]["ptsig"]);

//log

$this->trace($enterQzoneInfo, "$enterQzoneInfo===");

if ($enterQzoneInfo) {

$this->trace("进入空间", "enterQzone");

//$referer = $login_result["value"]["url"];

//$scope = 0;

//log

$this->trace("", "getCoreJs");

$coreJsInfo = $this->getCoreJs();

$this->trace($coreJsInfo, "getCoreJs===");

$this->setCookies(array(

"qzone_referer" => array(

"value" => $login_result["value"]["url"], "path" => "/", "domain" => ".local.cckf123456789.com", "expires" => "0"

),

"qzone_visitor_param" => array(

"value" => implode("|", array_values($coreJsInfo["visitor"])), "path" => "/", "domain" => ".local.cckf123456789.com", "expires" => "0"

),

));

//log

//$this->trace("", "rightFrameVisitor");

//print_r($this->rightFrameVisitor($referer, implode("|", array_values($coreJsInfo["visitor"]))));

return $this->success();

} else {

$this->error("err-006");

}

} else {

$this->error("err-005");

}

}

protected function visitQzone()

{

$options = array(

CURLOPT_TIMEOUT => $this->request_timeout,

CURLOPT_HEADER => 1,

CURLOPT_RETURNTRANSFER => 1,

CURLOPT_URL => "http://qzone.qq.com",

CURLOPT_HTTPHEADER => array(

"Referer:http://xui.ptlogin2.qq.com/cgi-bin/xlogin?proxy_url=http%3A//qzs.qq.com/qzone/v6/portal/proxy.html&daid=5&pt_qzone_sig=1&hide_title_bar=1&low_login=0&qlogin_auto_login=1&no_verifyimg=1&link_target=blank&appid=549000912&style=22&target=self&s_url=http%3A//qzs.qq.com/qzone/v5/loginsucc.html?para=izone&pt_qr_app=%E6%89%8B%E6%9C%BAQQ%E7%A9%BA%E9%97%B4&pt_qr_link=http%3A//z.qzone.com/download.html&self_regurl=http%3A//qzs.qq.com/qzone/v6/reg/index.html&pt_qr_help_link=http%3A//z.qzone.com/download.html",

"User-Agent:" . $this->user_agent,

"Host:qzone.qq.com",

"Accept-Language:zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3",

"Connection:keep-alive",)

);

return ResultExtract::getLoginAddress($this->requestExec($options));

}

protected function getLoginJs()

{

$options = array(

CURLOPT_TIMEOUT => $this->request_timeout,

CURLOPT_HEADER => 1,

CURLOPT_RETURNTRANSFER => 1,

CURLOPT_URL => "http://imgcache.qq.com/ptlogin/ver/10067/js/c_login_old.js",

CURLOPT_HTTPHEADER => array(

"Referer:http://xui.ptlogin2.qq.com/cgi-bin/xlogin?proxy_url=http%3A//qzs.qq.com/qzone/v6/portal/proxy.html&daid=5&pt_qzone_sig=1&hide_title_bar=1&low_login=0&qlogin_auto_login=1&no_verifyimg=1&link_target=blank&appid=549000912&style=22&target=self&s_url=http%3A//qzs.qq.com/qzone/v5/loginsucc.html?para=izone&pt_qr_app=%E6%89%8B%E6%9C%BAQQ%E7%A9%BA%E9%97%B4&pt_qr_link=http%3A//z.qzone.com/download.html&self_regurl=http%3A//qzs.qq.com/qzone/v6/reg/index.html&pt_qr_help_link=http%3A//z.qzone.com/download.html",

"User-Agent:" . $this->user_agent,

"Host:imgcache.qq.com",

"Connection:keep-alive",)

);

return ResultExtract::getLoginJsInfo($this->requestExec($options));

}

public function checkVC($regmaster, $appid, $js_ver, $js_type, $login_sig, $u1, $r)

{

$options = array(

CURLOPT_TIMEOUT => $this->request_timeout,

CURLOPT_HEADER => 1,

CURLOPT_RETURNTRANSFER => 1,

CURLOPT_URL => "http://check.ptlogin2.qq.com/check?" . http_build_query(array(

"regmaster" => $regmaster,

"uin" => $this->user,

"appid" => $appid,

"js_ver" => $js_ver,

"js_type" => $js_type,

"login_sig" => $login_sig,

"u1" => $u1,

"r" => $r,

)),

CURLOPT_HTTPHEADER => array(

"Referer:http://xui.ptlogin2.qq.com/cgi-bin/xlogin?proxy_url=http%3A//qzs.qq.com/qzone/v6/portal/proxy.html&daid=5&pt_qzone_sig=1&hide_title_bar=1&low_login=0&qlogin_auto_login=1&no_verifyimg=1&link_target=blank&appid=549000912&style=22&target=self&s_url=http%3A//qzs.qq.com/qzone/v5/loginsucc.html?para=izone&pt_qr_app=%E6%89%8B%E6%9C%BAQQ%E7%A9%BA%E9%97%B4&pt_qr_link=http%3A//z.qzone.com/download.html&self_regurl=http%3A//qzs.qq.com/qzone/v6/reg/index.html&pt_qr_help_link=http%3A//z.qzone.com/download.html",

"User-Agent:" . $this->user_agent,

"Host:check.ptlogin2.qq.com",

"Accept-Language:zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3",

"Connection:keep-alive",

)

);

return ResultExtrac

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值