function verifyTiezi_send($uid, $tid, $pid, $water = 'StusGame Tieba Cloud Sign Plugin "verifyTiezi"', $device = 4) { if (empty($uid) || empty($tid) || empty($pid)) { return array('status' => '1', 'msg' => ''); } $ck = misc::GetCookie($pid); $xs = verifyTiezi_gettie($tid, $ck); $x = array('BDUSS' => $ck, '_client_id' => 'wappc_136' . rand_int(10) . '_' . rand_int(3), '_client_type' => $device, '_client_version' => '5.0.0', '_phone_imei' => md5(rand_int(16)), 'anonymous' => '0', 'content' => $water, 'fid' => $xs['fid'], 'kw' => $xs['word'], 'net_type' => '3', 'tbs' => $xs['tbs'], 'tid' => $tid, 'title' => ''); $y = ''; foreach ($x as $key => $value) { $y .= $key . '=' . $value; } $x['sign'] = strtoupper(md5($y . 'tiebaclient!!!')); $c = new wcurl('http://c.tieba.baidu.com/c/c/post/add', array('Content-Type: application/x-www-form-urlencoded')); /* //Note:普通的 $x = verifyTiezi_gettie($tid,$ck); $c = new wcurl('http://tieba.baidu.com'.$x['__formurl']); unset($x['__formurl']); $x['co'] = $water; */ $c->addcookie('BDUSS=' . $ck); $return = json_decode($c->post($x), true); $c->close(); if (!empty($return['error_code']) && $return['error_code'] != '1') { return array('status' => $return['error_code'], 'msg' => $return['error_msg']); } else { return array('status' => '1', 'msg' => ''); } }
function cron_mok_zdwk() { //如果今天签到过了直接返回日志 if (option::get('mok_zdwk_run') == date('d')) { return option::get('mok_zdwk_log'); } global $m; $prefix = DB_PREFIX; //选出用户的options和bduss $res = $m->query("SELECT {$prefix}users_options.`name` , {$prefix}users_options.`value` , {$prefix}baiduid.`bduss` \nFROM {$prefix}baiduid\nINNER JOIN {$prefix}users_options ON {$prefix}users_options.uid = {$prefix}baiduid.uid\nWHERE {$prefix}users_options.`name` = 'mok_zdwk_wk'\nOR {$prefix}users_options.`name` = 'mok_zdwk_zd'"); $wk = $zd = 0; $bduss = array(); if ($m->num_rows($res) != 0) { while ($row = $res->fetch_array()) { //判断该选项是否开启 if ($row['value'] == 'on') { //记录bduss(数量),如果bduss数组内没有该bduss,则加入数组 if (!in_array($row['bduss'], $bduss)) { $bduss[] = $row['bduss']; } if ($row['name'] === 'mok_zdwk_wk') { $wk++; $head = array('Accept:*/*', 'Accept-Encoding:gzip, deflate, sdch', 'Accept-Language:zh-CN,zh;q=0.8', 'Connection:keep-alive', 'Host:wenku.baidu.com', 'Referer:http://wenku.baidu.com/task/browse/daily', 'User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36', 'X-Requested-With:XMLHttpRequest'); $c = new wcurl('http://wenku.baidu.com/task/submit/signin', $head); $c->addCookie('BDUSS=' . $row['bduss']); $c->exec(); $c->close(); } else { if ($row['name'] === 'mok_zdwk_zd') { $zd++; $c = new wcurl('http://zhidao.baidu.com/'); $c->addCookie('BDUSS=' . $row["bduss"]); $stoken = $c->get(); $c->close(); $stoken = textMiddle($stoken, '"stoken":"', '",'); if ($stoken != "") { $c = new wcurl('http://zhidao.baidu.com/submit/user'); $c->addCookie('BDUSS=' . $row["bduss"]); $c->post(array('cm' => '100509', 'utdata' => '90,90,102,96,107,101,99,97,96,90,98,103,103,99,127,106,99,99,14138554765830', 'stoken' => $stoken)); $c->close(); } } } } } } $log = "知道、文库签到完毕<br/>" . date("Y-m-d H:i:s") . "<br/>共计百度账号: " . count($bduss) . " 个<br/>知道签到: {$zd} 个<br/>文库签到: {$wk} 个"; option::set('mok_zdwk_run', date('d')); option::set('mok_zdwk_log', $log); return $log; }
function wmzz_zan_do($kw, $pid, $tid, $b) { $pda = array('BDUSS' => $b, '_client_id' => 'wappc_1396611108603_817', '_client_type' => '2', '_client_version' => '5.7.0', '_phone_imei' => '642b43b58d21b7a5814e1fd41b08e2a6', 'action' => 'like', 'from' => 'tieba', 'kw' => $kw, 'post_id' => $pid, 'thread_id' => $tid); $ex = ''; foreach ($pda as $k => $v) { $ex .= $k . '=' . $v; } $pda['sign'] = md5($ex . 'tiebaclient!!!'); //!! $x = new wcurl('http://c.tieba.baidu.com/c/c/zan/like', array('Content-Type: application/x-www-form-urlencoded')); $x->addcookie('BDUSS=' . $b); $x->set(CURLOPT_TIMEOUT, 1); return $x->post($pda); //$x->close(); }
function cron_wmzz_ban() { global $m; $s = unserialize(option::get('plugin_wmzz_ban')); $now = strtotime(date('Y-m-d')); $y = $m->query("SELECT * FROM `" . DB_PREFIX . "wmzz_ban` WHERE `nextdo` <= '{$now}' LIMIT {$s['limit']}"); while ($x = $m->fetch_array($y)) { $r = wmzz_ban_getTime($x['date']); if ($r != '-1') { $bduss = misc::getCookie($x['pid']); $c = new wcurl('http://tieba.baidu.com/pmc/blockid'); $c->addcookie('BDUSS=' . $bduss); $c->post(array('user_name[]' => $x['user'], 'day' => $r, 'fid' => misc::getFid($x['tieba']), 'tbs' => misc::getTbs($x['uid'], $bduss), 'ie' => 'utf-8', 'reason' => $s['msg'])); $next = $now + $r * 86400; $m->query("UPDATE `" . DB_PREFIX . "wmzz_ban` SET `nextdo` = '{$next}' WHERE `id` = '{$x['id']}'"); } else { $m->query("DELETE FROM `" . DB_PREFIX . "wmzz_ban` WHERE `id` = '{$x['id']}'"); } } }
/** * 登录百度 * @param 百度用户名 * @param 百度密码 * @param 验证码 * @param $vcodestr * @return 登录完成的页面 */ public static function loginBaidu($bd_name, $bd_pw, $verifycode, $vcodestr) { $x = new wcurl('http://wappass.baidu.com/passport/?verifycode=' . $verifycode, array('User-Agent: Phone' . mt_rand())); $x->set(CURLOPT_HEADER, true); return $x->post(array('username' => $bd_name, 'password' => $bd_pw, 'verifycode' => $verifycode, 'login_save' => '3', 'vcodestr' => $vcodestr, 'aaa' => '%E7%99%BB%E5%BD%95', 'login' => 'yes', 'can_input' => '0', 'u' => 'http%3A%2F%2Fm.baidu.com%2F%3Faction%3Dlogin', 'tn', 'tpl', 'ssid' => '000000', 'form' => '0', 'bd_page_type' => '1', 'uid' => 'wiaui_1316933575_9548', 'isPhone' => 'isPhone')); }
/** * 执行一个网络请求而不等待返回结果 * @param string $url URL * @param string $post post数据包,留空为get * @param string $cookie cookies * @return bool fsockopen是否成功 */ function sendRequest($url, $post = '', $cookie = '') { if (function_exists('fsockopen')) { $matches = parse_url($url); $host = $matches['host']; if (substr($url, 0, 8) == 'https://') { $host = 'ssl://' . $host; } $path = $matches['path'] ? $matches['path'] . ($matches['query'] ? '?' . $matches['query'] : '') : '/'; $port = !empty($matches['port']) ? $matches['port'] : 80; if (!empty($post)) { $out = "POST {$path} HTTP/1.1\r\n"; $out .= "Content-Type: application/x-www-form-urlencoded\r\n"; $out .= "Host: {$host}\r\n"; $out .= "Connection: Close\r\n\r\n"; $out .= $post; } else { $out = "GET {$path} HTTP/1.1\r\n"; $out .= "Host: {$host}\r\n"; $out .= "Connection: Close\r\n\r\n"; } $fp = fsockopen($host, $port); if (!$fp) { return false; } else { stream_set_blocking($fp, 0); stream_set_timeout($fp, 0); fwrite($fp, $out); fclose($fp); return true; } } else { $x = new wcurl($url); $x->set(CURLOPT_CONNECTTIMEOUT, 1); $x->set(CURLOPT_TIMEOUT, 1); $x->addcookie($cookie); if (empty($post)) { $x->post($post); } else { $x->exec(); } return true; } }
if($json['version'] > SYSTEM_VER){ //每次主版本号变动必须有更新脚本,数据库中主版本号由更新脚本修改 $updatefile = '<br/><br/>本次升级需要运行升级脚本。请点击运行: <a href="setup/update'.SYSTEM_VER.'to'.$json['version'].'.php">update'.SYSTEM_VER.'to'.$json['version'].'.php</a><br/>如果升级脚本不存在,可能是由于您本次更新跨越了多个版本,您需要依次运行每一个脚本。<br/>'; msg('恭喜您!您已成功升级到 V'.$json['version'].'.'.$json['revision'].$updatefile,false); } msg('恭喜您!您已成功升级到 V'.$json['version'].'.'.$json['revision'], SYSTEM_URL); break; */ case 'admin:update:changeServer': if (isset($_GET['server'])) { option::set('update_server', $_GET['server']); } break; case 'baiduid:getverify': $x = new wcurl('http://wappass.baidu.com/passport/', array('User-Agent: fxxxx phone')); $r = $x->post(array('login_username' => $_POST['bd_name'], 'login_loginpass' => $_POST['bd_name'])); preg_match('/\\<img src=\\"(.*)\\" alt=\\"wait...\\" \\/\\>/', $r, $out); if (empty($out[1])) { echo '<b>无需验证码,请直接点击 [ 点击绑定 ] 继续</b>'; } else { echo '<img onclick="addbdid_getcode();" src="' . $out[1] . '"style="float:left;"> 请在下面输入左图中的字符<br> 点击图片更换验证码'; echo '<br/><br/><div class="input-group"><span class="input-group-addon">验证码</span>'; echo '<input type="text" class="form-control" id="bd_v" name="bd_v" placeholder="请输入上图的字符" required></div><br/>'; } preg_match('/\\<input type=\\"hidden\\" id=\\"vcodeStr\\" name=\\"vcodestr\\" value=\\"(.*)\\"\\/\\>/', $r, $outt); echo '<input type="hidden" id="vcodeStr" name="vcodestr" value="' . $outt['1'] . '"/>'; break; case 'baiduid:bdid': //多次循环有助于解决验证码问题 for ($e = 0; $e < 2; $e++) { $x = misc::loginBaidu($_POST['bd_name'], $_POST['bd_pw'], $_POST['bd_v'], $_POST['vcodestr']);
/** * 登录百度 * @param string $bd_name 百度用户名 * @param string $bd_pw百度密码 * @param string $verifycode 验证码 * @param string $vcodestr 验证字符 * @return array [0成功|-1网络请求失败|-2json解析失败|-3表示需要验证码或验证码错误|2表示登陆失败|其他为百度提供的错误代码, 成功为BDUSS|需要验证码则返回vcodestr|其他错误返回百度提供的错误信息, 如果登陆成功,返回百度用户名|如果需要验证码,则此处返回验证图片地址 ] */ public static function loginBaidu($bd_name, $bd_pw, $verifycode = '', $vcodestr = '') { $x = new wcurl('http://c.tieba.baidu.com/c/s/login'); $p = array('passwd' => base64_encode($bd_pw), 'timestamp' => time() . '156', 'un' => $bd_name); if (!empty($verifycode) && !empty($vcodestr)) { $p['vcode'] = $verifycode; $p['vcode_md5'] = $vcodestr; } self::addTiebaSign($p); //print_r($p); if (!($data = $x->post($p))) { return array(-1, '网络请求失败'); } if (!($v = json_decode($data, true))) { return array(-2, 'json解析失败'); } $md5pos = strpos($v['user']['BDUSS'], '|'); if (!empty($md5pos)) { $bduss = substr($v['user']['BDUSS'], 0, $md5pos); } else { $bduss = $v['user']['BDUSS']; } if ($v['error_code'] == '0') { return array(0, $bduss, $v['user']['name']); } else { switch ($v['error_code']) { case '5': //需要验证码或验证码输入错误 //需要验证码或验证码输入错误 case '6': return array(-3, $v['anti']['vcode_md5'], $v['anti']['vcode_pic_url']); break; default: //其他错误 return array((int) $v['error_code'], $v['error_msg']); break; } } }
public static function getTieba($userid, $bduss, $pn) { $head = array(); $head[] = 'Content-Type: application/x-www-form-urlencoded'; $head[] = 'User-Agent: Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaE72-1/021.021; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.1.16352'; $tl = new wcurl('http://c.tieba.baidu.com/c/f/forum/like', $head); $data = array('_client_id' => 'wappc_' . time() . '_' . '258', '_client_type' => 2, '_client_version' => '6.5.8', '_phone_imei' => '357143042411618', 'from' => 'baidu_appstore', 'is_guest' => 1, 'model' => 'H60-L01', 'page_no' => $pn, 'page_size' => 200, 'timestamp' => time() . '903', 'uid' => $userid); $sign_str = ''; foreach ($data as $k => $v) { $sign_str .= $k . '=' . $v; } $sign = strtoupper(md5($sign_str . 'tiebaclient!!!')); $data['sign'] = $sign; $tl->addCookie(array('BDUSS' => $bduss)); $tl->set(CURLOPT_RETURNTRANSFER, true); $rt = $tl->post($data); return $rt; }