给入账号密码
登陆以后并提交数据
<?php if (!array_key_exists('account', $_GET)) die('Account Request'); if (!array_key_exists('password', $_GET)) die('Password Request'); if (!array_key_exists('words', $_GET)) die('Words Request'); $split = '-'; $account = $_GET['account']; $password = $_GET['password']; $words = $_GET['words']; $ch = curl_init(); $cookie = dirname(__FILE__).'/'.uniqid().'.txt'; curl_setopt_array($ch, array( CURLOPT_URL=>'http://www.shanbay.com/accounts/login/', CURLOPT_HEADER=>0, CURLOPT_RETURNTRANSFER=>1, CURLOPT_COOKIEJAR => $cookie )); $data = curl_exec($ch); if (curl_errno($ch)){ curl_close($ch); echo curl_error($ch); die(); } // 解析token preg_match('/<input type=\'hidden\' name=\'(.*)\' value=\'(.*)\' \/>/', $data, $tokenArray); if (is_array($tokenArray) && count($tokenArray)>1){ $loginKey = $tokenArray[1]; $loginToken = $tokenArray[2]; // 执行登陆 curl_setopt_array($ch, array( CURLOPT_URL=>'http://www.shanbay.com/accounts/login/', CURLOPT_HEADER=>0, CURLOPT_RETURNTRANSFER=>1, CURLOPT_COOKIEJAR => $cookie, CURLOPT_COOKIEFILE => $cookie, CURLOPT_POST => 1, CURLOPT_POSTFIELDS=>$loginKey.'='.$loginToken.'&username='.$account.'&password='.$password.'&token=&token=' )); $data = curl_exec($ch); if (curl_errno($ch)){ curl_close($ch); echo curl_error($ch); die(); } // 检查头部 $header = curl_getinfo($ch); if ($header['http_code'] == 302){ // 登陆成功 添加单词 $wordURLFormat = 'http://www.shanbay.com/bdc/vocabulary/add/batch/?words=%s&_=%s'; $wordURL = sprintf($wordURLFormat,str_replace($split, '', $words), time()*1000+mt_rand(0, 1000)); $headerArray = array( 'X-Requested-With: XMLHttpRequest' ); $verbose = fopen(dirname(__FILE__).'/error.txt', 'w+'); curl_setopt_array($ch, array( CURLOPT_URL=>$wordURL, CURLOPT_HEADER=>0, CURLOPT_RETURNTRANSFER=>1, CURLOPT_COOKIEJAR => $cookie, CURLOPT_COOKIEFILE => $cookie, CURLOPT_HTTPHEADER=>$headerArray, CURLOPT_REFERER=>'http://www.shanbay.com/bdc/vocabulary/add/batch/', CURLOPT_VERBOSE=>1, CURLOPT_STDERR=>$verbose, CURLOPT_CUSTOMREQUEST=>"GET" )); $data = curl_exec($ch); if (curl_errno($ch)){ curl_close($ch); echo curl_error($ch); die(); } curl_close($ch); $dataJSON = json_decode($data, true); if (count($dataJSON['notfound_words'])){ $errorString = array(); foreach ($dataJSON['notfound_words'] as $v) $errorString[] = $v; echo "Not found for those words:".implode(' ', $errorString); die(); } unlink($cookie); echo 'success'; } die(); } echo 'Token parse error';