1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
| <?php class Control {
public static function getEntryData($servertime, $nonce, $password) { return self::curlRequest('http://xxx.xxx.xxx.xxx:8006/weibo?servertime=' . $servertime . '&nonce=' . $nonce . '&password=' . $password, '', ''); }
public static function curlRequest($url, $data = '', $cookieFile = '') { $ch = curl_init(); $option = [ CURLOPT_URL => $url, CURLOPT_HEADER => 0, CURLOPT_RETURNTRANSFER => 1, CURLOPT_HTTPHEADER => ['Expect:'], CURLOPT_SSL_VERIFYPEER => false, CURLOPT_USERAGENT => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4', ]; if ($cookieFile) { $option[CURLOPT_COOKIEJAR] = $cookieFile; $option[CURLOPT_COOKIEFILE] = $cookieFile; } if ($data) { $option[CURLOPT_POST] = 1; $option[CURLOPT_POSTFIELDS] = $data; }
curl_setopt_array($ch, $option); $response = curl_exec($ch); if (curl_errno($ch) > 0) { } curl_close($ch); return $response; }
public static function loginWeibo($username, $password, $cookie_file) {
if (!empty($username) && !empty($password)) { $preLoginData = self::curlRequest('http://login.sina.com.cn/sso/prelogin.php?entry=account&callback=sinaSSOController.preloginCallBack&su=' . base64_encode($username) . '&rsakt=mod&checkpin=1&client=ssologin.js(v1.4.5)', '', $cookie_file);
preg_match('/sinaSSOController.preloginCallBack\((.*)\)/', $preLoginData, $preArr); $jsonArr = json_decode($preArr[1], true);
if (is_array($jsonArr)) { $postArr = [ 'entry' => 'weibo', 'gateway' => 1, 'from' => '', 'savestate' => 7, 'useticket' => 1, 'pagerefer' => '', 'vsnf' => 1, 'su' => base64_encode(urlencode($username)), 'service' => 'sso', 'servertime' => $jsonArr['servertime'], 'nonce' => $jsonArr['nonce'], 'pwencode' => 'rsa2', 'rsakv' => $jsonArr['rsakv'], 'prelt' => 0, 'sp' => self::getEntryData($jsonArr['servertime'], $jsonArr['nonce'], $password), 'encoding' => 'UTF-8', 'url' => 'http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack', 'returntype' => 'META', ];
$loginData = self::curlRequest('http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.5)', $postArr, $cookie_file);
if ($loginData) { $matchs = []; preg_match('/replace\([\'|\"](.*?)[\'|\"]\)/', $loginData, $matchs);
$loginResult = self::curlRequest($matchs[1], '', $cookie_file);
$loginResultArr = []; preg_match('/feedBackUrlCallBack\((.*?)\)/', $loginResult, $loginResultArr);
if (!empty($loginResultArr[1])) { $userInfo = json_decode($loginResultArr[1]);
if ($userInfo->result) { } } else { } } else { } } else { } } else { } } }
|