load->model('dms/dms_clues_model','dms_clues_model'); $this->log_dir = 'dms'; } public function index() { //登录态缓存文件 $loginResultFile = APPPATH . "cache/loginRes.txt"; $autoLogin = new CurlAutoLogin(); //已有登录态,则直接读取登录态,避免多次重复登录 if (!file_exists($loginResultFile)) { $resArr = $this->doLogin($autoLogin, $loginResultFile); } else { echo "有登录态,自动登录...\n"; debug_log("有登录态,自动登录...\n", 'dms.txt', $this->log_dir); $resArr = json_decode(file_get_contents($loginResultFile), true); } if (empty($resArr['username'])) { debug_log("未登录成功...\n", 'dms.txt', $this->log_dir); exit("未登录成功\n"); } $token = $resArr['token']; $pageIndex = 1; $pageSize = 30; $dollor = '$'; $createdDateStart = date("Y-m-d H:i:s", strtotime("-1 minute")); $createdDateEnd = date("Y-m-d H:i:s", strtotime("now")); debug_log("开始时间: ".$createdDateStart." ", 'dms.txt', $this->log_dir); debug_log("截止时间: ".$createdDateEnd." ", 'dms.txt', $this->log_dir); $curl = <<execCurl($curl); $resArr = json_decode($content, true); if (!$resArr['result']) { $this->doLogin($autoLogin, $loginResultFile); } if(!$resArr['data']['clueServerQueryFromDlr']['rows']){ debug_log("无新增数据\n", 'dms.txt', $this->log_dir); exit; } else{ debug_log("共 ".$resArr['data']['clueServerQueryFromDlr']['records']." 新增数据\n", 'dms.txt', $this->log_dir); } foreach ($resArr['data']['clueServerQueryFromDlr']['rows'] as $k => $v) { $add = array( 'c_id' => $v['serverOrder'], 'name' => $v['custName'], 'mobile' => $v['contactTel'], 'cfrom1' => $v['infoChanMName'], 'cfrom2' => $v['infoChanDName'], 'jsondata' => json_encode($v, JSON_UNESCAPED_UNICODE), 'c_time' => strtotime($v['createdDate']) ); $this->dms_clues_model->add($add); } } public function doLogin($autoLogin, $loginResultFile) { echo "无登录态,模拟登录...\n"; debug_log("无登录态,模拟登录...\n", 'dms.txt', $this->log_dir); $curl = <<execCurl($curl); $resArr = json_decode($content, true); file_put_contents($loginResultFile, $content); //存储登录结果 return $resArr; } public function test() { $url = 'http://dms.dna-nev.com.cn/mp/login/validlogin.do'; $header = array ( 0 => 'Accept: application/json, text/plain, */*', 1 => 'Accept-Language: zh-CN,zh;q=0.9', 2 => 'Connection: keep-alive', 3 => 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8', 4 => 'Origin: http://dms.dna-nev.com.cn', 5 => 'Referer: http://dms.dna-nev.com.cn/', 6 => 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36', ); $postData = 'reuestParas=vrdCxWqmC6nNDXrxEyNCX5sThLElae5I%2FznYqpsieYmu3oIOQecGrZpH%2Bhpntm%2Bnb10K23tP9k9i2sqCxHESj1Leu%2BkGr2FYklTI%2BwwdCn2KZNQ7zrgAZ%2FzR9jd5XQEQzwyUCcwxllqqZWKDNMoWSJCLAYbMf0p%2FuqiVE105v%2Fi7yStvG5q7pE6lk%2B9g7oDsAHBbSqn21c6TpJyXHprF766eukiB4b5urdLilNsNQikR6rU2pY5dfymx5S2ytZzlnIE4pE2GHVV9VW6jzLot1w%3D%3D'; // $postData = array( // 'reuestParas' => 'vrdCxWqmC6nNDXrxEyNCX5sThLElae5I/znYqpsieYnyP9dYSVqrnNbryed0peXaee4199dAmuV61oHp3hUaIveISmjsLLKviH0eoWO1+5WKZNQ7zrgAZ/zR9jd5XQEQVyCBtq6canDPslkbJJaqBBqDnXrTNfDkp/nCJWdfJaoYGaQma/2+6KOacVm3jq6DAHBbSqn21c6TpJyXHprF766eukiB4b5urdLilNsNQimy2E6KL8vBaa+L4mnRHsEAU3RYz8uFJO2ZRHl9aPfJCA==' // ); $cookie = 'Cookie: pwRKey=1'; //需要cookie的话去掉这行的注释 $timeout = 10; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回数据不直接输出 curl_setopt($ch, CURLOPT_ENCODING, "gzip"); //指定gzip压缩 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //302/301 //SSL if(substr($url, 0, 8) === 'https://') { curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //error:14077458:SSL routines:SSL23_GET_SERVER_HELLO:reason(1112)解决 //值有0-6,请参考手册,值1不行试试其他值 //curl_setopt($ch, CURLOPT_SSLVERSION, 1); } //post数据 if(!empty($postData)) { curl_setopt($ch, CURLOPT_POST, 1); //发送POST类型数据 curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); //POST数据,$post可以是数组(multipart/form-data),也可以是拼接参数串(application/x-www-form-urlencoded) } if(!empty($cookie)) { $header[] = $cookie; } if(!empty($header)) { curl_setopt($ch, CURLOPT_HTTPHEADER, $header); //使用header头信息 } //超时时间 curl_setopt($ch, CURLOPT_TIMEOUT, (int)$timeout); //执行 $content = curl_exec($ch); if($error = curl_error($ch)) { //log error error_log($error); } curl_close($ch); print_r($content); return $content; } }