permission->is_admin(false); $this->load->model('InfoKeywords_model', 'Keywords_model'); $this->load->model('InfoKeywordsrank_model', 'Keywordsrank_model'); $this->load->model('InfoKeywordsanalytics_model', 'analytics_model'); $this->load->model('InfoStructures_model'); } public function index($kw_is_id = '') { $this->load->library('Accesscheck'); $this->accesscheck->check_access(); // test-- $this->permission->is_admin(); //查询结构列表信息 $data['keyworldsList'] = $this->Keywords_model->get_structure_list(); if (empty($data['keyworldsList'])) { $this->add(0, false); redirect(site_url("Keyworlds/index")); } $root_key = false; $data['keyworldsList'][0]->id == $kw_is_id ? $kw_is_id = '' : null; if (empty($kw_is_id) || $kw_is_id == 'asc' || $kw_is_id == 'desc') { $root_key = true; $data['order'] = empty($kw_is_id) ? 'asc' : $kw_is_id; $kw_is_id = $data['keyworldsList'][0]->id; } $today = date('Y-m-d', time()); $startdate = strtotime("$today -1 month"); $enddate = time(); if ($this->input->post('startdate') != '') $startdate = strtotime($this->input->post('startdate')); if ($this->input->post('enddate') != '') $enddate = strtotime($this->input->post('enddate')); //查询当前关键词的排名情况 $data['rank_json'] = ''; $data['current_keyworld'] = $this->Keywords_model->get_keyworld_bytreeid($kw_is_id); //如果是根目录,则展示最新关键词排名变化情况 if ($root_key) { $data['compare_rank'] = $this->Keywords_model->get_compare_rank($data['order']); $this->load->view('bootstrap/header', $data); $this->load->view('keyworlds/compare_rank'); $this->load->view('bootstrap/footer'); return; } $data['wordcount'] = 1; if ($data['current_keyworld']) { //获取当前节所有直接子节点 $is_id_string = $data['current_keyworld']->kw_id; $i = 0; foreach ($data['keyworldsList'] as $kw) { if ($i > 9) break; if ($kw->pId == $kw_is_id) { $is_id_string.=',' . $kw->kw_id; $i++; $data['wordcount'] = 2; } } $data['rank_info'] = $this->Keywordsrank_model->get_rank_list($is_id_string, 30, $startdate, $enddate); empty($data['rank_info']) && $data['rank_info'] = $this->Keywordsrank_model->get_rank_list($is_id_string, 30); if (!empty($data['rank_info'])) { $rank_info = $data['rank_info']; asort($rank_info); $data_time = array(); foreach ($rank_info as $key => $r) { if (!in_array(date('Y-m-d', $r->kwr_datetime), $data_time)) $data_time[] = date('Y-m-d', $r->kwr_datetime); $rank_json[$r->kwr_kw_id][date('Y-m-d', $r->kwr_datetime)] = $r; $rank_json2[$r->kwr_kw_id][] = $r; } foreach ($data_time as $d) { foreach ($rank_json as $kw_id => &$value) { if (!isset($pre[$kw_id])) $pre[$kw_id] = $rank_json2[$kw_id][0]; if (!isset($value[$d])) { $value[$d] = $pre[$kw_id]; } else { $pre[$kw_id] = $value[$d]; } } } // print_r($data['wordcount']); // print_r($rank_json); // 拼接highcharts数据格式 $data['rank_json'] = '['; foreach ($rank_json as &$ra) { ksort($ra); // 每条线 $data['rank_json'] .='{"name":"' . $ra[$data_time[0]]->kw_keyworlds . '","data":['; // 每个点 foreach ($ra as $v) { $kwr_rank = $v->kwr_rank; if ($v->kwr_rank == '>150') $kwr_rank = 100; if (strtolower($this->config->item('site_code')) == 'gm') { $data['rank_json'] .=-$kwr_rank . ','; } else { $data['rank_json'] .=$kwr_rank . ','; } } $data['rank_json'] = substr($data['rank_json'], 0, -1); $data['rank_json'] .=']},'; // 叶子节点 显示mobile记录 if ($data['wordcount'] == 1) { $data['rank_json'] .='{"name":"' . $ra[$data_time[0]]->kw_keyworlds . '(mobile)","data":['; foreach ($ra as $v) { $kwr_mobile_rank = $v->kwr_mobile_rank ? $v->kwr_mobile_rank : 'null' ; if ($v->kwr_mobile_rank == '>150') $kwr_mobile_rank = 100; if (strtolower($this->config->item('site_code')) == 'gm') { $data['rank_json'] .=-$kwr_mobile_rank . ','; } else { $data['rank_json'] .=$kwr_mobile_rank . ','; } } $data['rank_json'] = substr($data['rank_json'], 0, -1); $data['rank_json'] .=']},'; } } $data['rank_json'] = substr($data['rank_json'], 0, -1) . ']'; // print_r($data['rank_json']); $data['data_time'] = json_encode($data_time); $data['rank_info'] = ''; isset($rank_json[$data['current_keyworld']->kw_id]) && $data['rank_info'] = $rank_json[$data['current_keyworld']->kw_id]; } } else { redirect(site_url("Keyworlds/index")); } // $data['analytics'] = $this->analytics_model->get_keyword_analytics($data['current_keyworld']->kw_keyworlds, 30); $data['site_code'] = strtolower($this->config->item('site_code')); // print_r($data['rank_info']); // print_r($data["rank_json"]); $this->load->view('bootstrap/header', $data); $this->load->view('keyworlds/index'); $this->load->view('bootstrap/footer'); } //搜索关键词 public function search_keywords() { $keyworlds = $this->input->post('keyworlds'); if (empty($keyworlds)) { echo 0; return; } $data['keyworld'] = $keyworlds; $data['keyworld_info'] = $this->Keywords_model->get_keyworld_by_word($keyworlds); $this->load->view('keyworlds/search', $data); } //添加关键词 public function add($is_parent_id, $is_ajax = true) { $insert_id = $this->InfoStructures_model->Add($is_parent_id); if ($insert_id && $kw_id = $this->Keywords_model->add_keyworlds('New Keywords', $this->config->item('site_code'), time(), $insert_id)) { $data[] = array('name' => 'ok', 'value' => $this->Keywords_model->get_keyworld($kw_id)); } else { $data[] = array('name' => 'no', 'value' => $this->lang->line('form_info_error')); } if ($is_ajax) { echo json_encode($data); return TRUE; } return $insert_id; } //编辑关键词 public function edit() { $this->form_validation->set_rules('keyworlds', 'lang:kw_keyworlds', 'required'); $this->form_validation->set_rules('kw_id', 'lang:kw_id', 'required'); if ($this->form_validation->run() == FALSE) { $data = array(); foreach ($this->form_validation->_error_array as $key => $value) { $data[] = array('name' => $key, 'value' => $value); } echo json_encode($data); } else { $isupdate = $this->Keywords_model->edit_keyworlds($this->input->post('keyworlds'), $this->input->post('kw_id'), $this->input->post('status')); if ($isupdate) { $data[] = array('name' => 'ok', 'value' => $this->lang->line('form_keyworlds_success')); echo json_encode($data); } else { $data[] = array('name' => 'no', 'value' => $this->lang->line('form_keyworlds_error')); echo json_encode($data); } } } //删除某个排名 public function delete_one_rank($kwr_id) { $this->Keywordsrank_model->delete_one_rank($kwr_id); header("Location:" . $_SERVER['HTTP_REFERER']); } //删除关键词 public function delete_keyworlds() { $this->form_validation->set_rules('kw_id', 'lang:kw_id', 'required'); $this->form_validation->set_rules('kw_is_id', 'lang:kw_is_id', 'required'); if ($this->form_validation->run() == FALSE) { $data = array(); foreach ($this->form_validation->_error_array as $key => $value) { $data[] = array('name' => $key, 'value' => $value); } echo json_encode($data); } else { $isdelete = $this->Keywords_model->delete($this->input->post('kw_id')); if ($isdelete) { $this->Keywordsrank_model->delete($this->input->post('kw_id')); $this->InfoStructures_model->Delete($this->input->post('kw_is_id')); $data[] = array('name' => 'ok', 'value' => site_url('keyworlds/index')); echo json_encode($data); } else { $data[] = array('name' => 'no', 'value' => $this->lang->line('form_keyworlds_error')); echo json_encode($data); } } } //移动关键词排序顺序 public function move() { //网站会提交一个同级节点id列表字符串,按照这个去排序 $parent_id = $this->input->post('pid'); $idsStr = $this->input->post('ids'); $idsArray = explode(',', $idsStr); foreach ($idsArray as $key => $value) { if ($value) { //设置排序 $this->InfoStructures_model->set_sort($value, $key); //设置path $this->InfoStructures_model->set_path($parent_id, $value); } } $data[] = array('name' => 'ok', 'value' => $this->lang->line('structures_success_move')); echo json_encode($data); return TRUE; } public function get_google_rank() { $keyworlds = $this->input->post('keyworlds'); //搜索关键字 $kw_id = $this->input->post('kw_id'); $site_url = $this->config->item('site_url'); $engines = array( 'cht' => 'get_search_content_by_google', 'gm' => 'get_search_content_by_google', 'vc' => 'get_search_content_by_google', 'jp' => 'get_search_content_by_google', 'vac' => 'get_search_content_by_google', 'it' => 'get_search_content_by_google', 'ru' => 'get_search_content_by_google', 'wt' => 'get_search_content_by_baidu', 'tbt' => 'get_search_content_by_google', 'sht' => 'get_search_content_by_google', 'yz' => 'get_search_content_by_google', 'gl' => 'get_search_content_by_google', 'mbj' => 'get_search_content_by_google', 'ct' => 'get_search_content_by_google', 'mct' => 'get_search_content_by_google', 'dct' => 'get_search_content_by_google', 'cits' => 'get_search_content_by_baidu', 'ah' => 'get_search_content_by_google' ); $site_code = $this->config->item('site_code'); $method = $engines[$site_code]; if ($site_code == 'wt') $site_url = 'www.iiiyooo.com'; if ($site_code == 'cits') $site_url = 'www.guilincits.c'; $last_rank = $this->Keywordsrank_model->get_rank_list($kw_id, $top = 1); if (isset($last_rank[0]->kwr_datetime) and ( time() - $last_rank[0]->kwr_datetime) < 300) { $data[] = array('name' => 'rank', 'value' => '查询过于频繁,请等待三分钟!'); echo json_encode($data); return TRUE; } //获取排名详细情况,排名超过150的停止搜索 for ($i = 1; $i <= 15; $i++) { $j = $i; $rank = $this->$method($keyworlds, $site_url, $j, $site_code); if ($rank['rank'] != 0) { if ($rank['rank'] > 150) $rank['rank'] = '151'; break; }elseif ($i == 15) { $rank['rank'] = '151'; break; } elseif ($rank['rank'] == -2) { break; } } //保存排名数据 if ($rank['rank'] == '151') { //超过151的排名则不记录 $this->Keywords_model->update_time($kw_id); } elseif (isset($last_rank[0]->kwr_datetime) and $last_rank[0]->kwr_datetime > strtotime(date('Y-m-d'))) { if ($rank['rank'] != -1 and $rank['rank'] != -2 and $this->Keywordsrank_model->update_rank($last_rank[0]->kwr_id, $rank['rank'], $rank['rank_m'], $rank['source'], $rank['source_m'])) { $this->Keywords_model->update_time($kw_id); } } else { if ($rank['rank'] != -1 and $rank['rank'] != -2 and $this->Keywordsrank_model->add_rank($kw_id, $rank['rank'], $rank['rank_m'], $rank['source'], $rank['source_m'], $rank['engines'])) { $this->Keywords_model->update_time($kw_id); } } $data[] = array('name' => 'rank', 'value' => ($rank['rank'] . " -- " . $rank["rank_m"])); echo json_encode($data); return TRUE; } //自动爬取排名 public function get_auto_rank($engines = '', $fix_site_code = '') { $rank = array(); $site_config = $this->config->item('site'); $engines = trim($engines); //取出需要更新排名的关键词 $worldsList = $this->Keywords_model->get_keyworld_list(1, $engines, $fix_site_code); //print_r($worldsList);die(); //如果没有需要更新的则返回 if (empty($worldsList)) { echo 'all done'; return; } $last_rank = $this->Keywordsrank_model->get_rank_list($worldsList[0]->kw_id); //获取排名并保存 foreach ($worldsList as $v) { $site_config = $site_config[$v->kw_sitecode]; $site_url = $site_config['site_url']; $site_code = $site_config['site_code']; for ($i = 1; $i <= 15; $i++) { if ($engines == '' || $engines == 'en' || $engines == 'eu') {//没有输入搜索引擎的时候根据站点自动分配获取排名的搜索引擎 $rank = $this->get_search_content_by_google($v->kw_keyworlds, $site_url, $i, $site_code); } else if ($engines == 'yandex') {//俄语站的yangdex $rank = $this->get_search_content_by_yandex($v->kw_keyworlds, $site_url, $i - 1); } if ($rank['rank'] != 0) { if ($rank['rank'] > 150) $rank['rank'] = '151'; break; }elseif ($i == 15) { $rank['rank'] = '151'; } elseif ($rank['rank'] == -2) { break; } } if ($rank['rank'] == '151') { //超过151的排名则不记录 $this->Keywords_model->update_time($v->kw_id); }else if ($rank['rank'] != -1 and $rank['rank'] != -2 and $this->Keywordsrank_model->add_rank($v->kw_id, $rank['rank'], $rank['rank_m'], $rank['source'], $rank['source_m'], $rank['engines'])) { $this->load->model('InfoSMS_model'); $last_rank = isset($last_rank[0]) ? $last_rank[0]->kwr_rank : $rank['rank']; $this->InfoSMS_model->readed_for_info($v->kw_id, 'keywords_rank'); $this->InfoSMS_model->add('keywords_rank', $v->kw_id, $rank['rank'], $last_rank, (string) ($rank['rank'] - $last_rank)); if ($engines != 'yandex') $this->Keywords_model->update_time($v->kw_id); } } var_dump($worldsList[0]->kw_keyworlds, $rank); } //计算关键词在google搜索引擎的排名 public function get_search_content_by_google($keyworlds, $site_url, $page, $site_code) { $rank['rank'] = 0; $rank['source'] = $site_url; $rank['rank_m'] = 0; $rank['source_m'] = $site_url; $rank['engines'] = 'google'; if ($page > 3) { $rank['rank'] = 151; $rank['rank_m'] = 151; return $rank; } $search_worlds = urlencode($keyworlds); //拼接搜索url链接 $start = ($page - 1) * 50; $google_url = 'google.com'; $google_domain = array( 'gm' => 'google.de', 'vc' => 'google.fr', 'vac' => 'google.es', 'ru' => 'google.ru', 'it' => 'google.it', 'jp' => 'google.co.jp' ); if (!empty($google_domain[$site_code])) $google_url = $google_domain[$site_code]; //搜索使用的语种,默认是英语 $language = 'en'; $language_array = array('gm' => 'de', 'vc' => 'fr', 'vac' => 'es', 'ru' => 'ru', 'it' => 'it', 'jp' => 'jp'); if (!empty($language_array[$site_code])) $language = $language_array[$site_code]; //抓取google搜索结果 $url = "https://www.$google_url/search?q=$search_worlds&start=$start&num=50&hl=$language"; $response = $this->curl($url); if ($response) { //分析google搜索结果,计算排名 if (false !== stripos($response, '

302 Moved

')) { $rank['rank'] = -2; } elseif (false !== stripos($response, $site_url)) { preg_match_all('/

(.*)<\/h3>/smUi', $response, $store); foreach ($store[1] as $k => $v) { $ismatch = stripos($v, $site_url); if (false !== $ismatch) { //计算排名 $rank['rank'] = $start + $k + 1; //抓取关键词来源 $end = strpos($v, '"', $ismatch); $source = substr($v, $ismatch, $end); $source = explode('"', $source); $rank['source'] = $source[0]; break; } } } else { // log_message('error','google search response not found CH'); } } else { $rank['rank'] = -1; } // 移动端 $response_m = $this->curl($url,"m"); if ($response_m) { if (false !== stripos($response_m, '

302 Moved

')) { $rank['rank_m'] = -2; } elseif (false !== stripos($response_m, $site_url)) { preg_match_all('/ $vm) { $ismatch_m = stripos($vm, $site_url); if (false !== $ismatch_m) { //计算排名 $rank['rank_m'] = $start + $km + 1; //抓取关键词来源 $end_m = strpos($vm, '"', $ismatch_m); $source_m = substr($vm, $ismatch_m, $end_m); $source_m = explode('"', $source_m); $rank['source_m'] = $source_m[0]; break; } } } } else { $rank['rank_m'] = -1; } // ---- 移动端 end ---- return $rank; } public function test() { $ranks = $this->get_search_content_by_yandex('Путеводитель по городу гуйлинь', 'www.chinahighlights.ru'); var_dump($ranks); } //计算关键词在yandex搜索引擎的排名 public function get_search_content_by_yandex($keyworlds, $site_url, $page = 0, $sitecode = false) { $rank['rank'] = 0; $rank['rank_m'] = 0; $rank['source'] = $site_url; $rank['source_m'] = $site_url; $rank['engines'] = 'yandex'; if ($page > 3) { $rank['rank'] = 151; $rank['rank_m'] = 151; return $rank; } $startrank = $page * 10; $search_worlds = urlencode($keyworlds); //抓取搜索结果数据 $url = "https://www.yandex.ru/yandsearch?p=$page&text=$search_worlds&lr=21436"; $refer = "https://www.yandex.ru/"; $response = $this->curl($url,'PC',$refer); if ($response) { // log_message('error','yandex 1'); //分析YANDEX搜索结果,计算排名 if (false !== stripos($response, '

302 Found

') || false !== stripos($response, 'капчей') || false !== stripos($response, 'captcha')) { $rank['rank'] = -2; } elseif (false !== stripos($response, $site_url)) { preg_match_all("/
$v) { $start_s = stripos($v, $site_url); if (false !== $start_s) { $rank['rank'] = $startrank + $k + 1; $end_s = stripos($v, '" ', $start_s); $source = substr($v, $start_s, $end_s); $sources = explode('" ', $source); $rank['source'] = $sources[0]; break; } } } } else { $rank['rank'] = -1; } // 移动端 $response_m = $this->curl($url,"m",$refer); if ($response_m) { if (false !== stripos($response_m, '

302 Found

') || false !== stripos($response, 'капчей') || false !== stripos($response, 'captcha')) { $rank['rank_m'] = -2; } elseif (false !== stripos($response_m, $site_url)) { preg_match_all('/
$vm) { $ismatch_m = stripos($vm, $site_url); if (false !== $ismatch_m) { //计算排名 $rank['rank_m'] = $startrank + $km + 1; //抓取关键词来源 $end_m = strpos($vm, '"', $ismatch_m); $source_m = substr($vm, $ismatch_m, $end_m); $source_m = explode('"', $source_m); $rank['source_m'] = $source_m[0]; break; } } } } else { $rank['rank_m'] = -1; } // ---- 移动端 end ---- return $rank; } //从cvs文件导入关键词 public function hand_add($parentid, $bookname) { $row = 1; //第一行开始 $filename = APPPATH . $bookname . '.csv'; if (($handle = fopen($filename, "r")) !== false) { while (($dataSrc = fgetcsv($handle)) !== false) { $num = count($dataSrc); for ($c = 0; $c < $num; $c++) {//列 column if ($row === 1) {//第一行作为字段 $dataName[] = $dataSrc[$c]; //字段名称 } else { foreach ($dataName as $k => $v) { if ($k == $c) {//对应的字段 $dataRtn[$v] = @iconv('GBK', 'UTF-8', $dataSrc[$c]); } } } } if (!empty($dataRtn)) { $insert_id = $this->InfoStructures_model->Add($parentid); if ($insert_id && $kw_id = $this->Keywords_model->add_keyworlds($dataRtn['keyword'], $dataRtn['site'], time() - 24 * 60 * 60, $insert_id, 1)) { $datas[] = array('name' => 'ok', 'value' => $this->Keywords_model->get_keyworld($kw_id)); } else { $datas[] = array('name' => 'no', 'value' => $this->lang->line('form_info_error')); } echo $insert_id; $data[] = $dataRtn; } $row++; } fclose($handle); var_dump($data); echo 'ok'; } } //收录查询结果 public function check_embody() { $this->load->model('InfoMetas_model'); $this->load->model('InfoSMS_model'); //获取未收录的数据 $today_date = date('Y-m-d', time() - 3 * 24 * 60 * 60); $embody = $this->InfoMetas_model->get_unembody_content($today_date); if (empty($embody)) { return false; } //页面url $embody = $embody[0]; if ($embody->ic_url == '') return false; $site = $this->config->item('site'); $site_url = $site[$embody->ic_sitecode]['site_url']; $site_url = $site_url . $embody->ic_url; //收录查询搜索url $search_worlds = 'site:' . $site_url; $search_worlds; $google_url = 'google.com'; $language = 'en'; $language_array = array('gm' => 'de', 'vc' => 'fr', 'vac' => 'es', 'ru' => 'ru', 'it' => 'it', 'jp' => 'jp'); if (!empty($language_array[$embody->ic_sitecode])) $language = $language_array[$embody->ic_sitecode]; //抓取google搜索结果 $this->load->library('Snoopy'); $snoopy = $this->snoopy; $snoopy->maxredirs = 0; $snoopy->agent = '(compatible; MSIE 9; MSN 8; AOL 4.0; Windows 98)'; //模拟浏览器 if ($snoopy->fetch("http://www.$google_url/search?q=$search_worlds&start=0&num=10&hl=$language")) { $response = $snoopy->results; if (false !== stripos($response, '

302 Moved

')) { echo 302; return false; } preg_match_all('/

(.*)<\/h3>/smUi', $response, $store); if (isset($store[1][0]) && false !== stripos($store[1][0], $site_url)) { $ismatch = stripos($store[1][0], $site_url); $end = stripos($store[1][0], '&', $ismatch); $source = substr($store[1][0], $ismatch, $end); $source = explode('&', $source); $source = $source[0]; if ($source == $site_url) { $this->InfoMetas_model->update($embody->im_ic_id, 'meta_embody', '1'); $this->InfoSMS_model->add('info', $embody->im_ic_id, $embody->ic_author, 'lyy', '已收录'); echo 'ok'; } else { $this->InfoMetas_model->update($embody->im_ic_id, 'meta_embody', date('Y-m-d H:i:s')); $this->InfoSMS_model->add('info', $embody->im_ic_id, $embody->ic_author, 'lyy', '未被收录'); echo 'no'; } } else { $this->InfoMetas_model->update($embody->im_ic_id, 'meta_embody', date('Y-m-d H:i:s')); $this->InfoSMS_model->add('info', $embody->im_ic_id, $embody->ic_author, 'lyy', '未被收录'); echo 'no'; } } echo '
end'; } //定时批量更新CDN public function update_cdn() { $this->load->model('Logs_model'); $last_update = $this->Logs_model->get_last_cdn_update_info(); if (empty($last_update)) { $last_log = $this->Logs_model->get_last_log(); $this->Logs_model->write('update_cdn', $last_log->log_id); $last_update->log_res_id = $last_log->log_id; } $last_update_id = $last_update->log_res_id; $list = $this->Logs_model->get_uncdn_list($last_update_id); if (empty($list)) { echo 'updated'; die(); } //设置需要更新的url路径 $site_path = array(); $path_array = array(); $site_array = array('vac', 'ru', 'it'); //需要更新的站点 foreach ($list as $v) { if (in_array($v->is_sitecode, $site_array)) { if (!isset($site_path[$v->is_sitecode])) { $site_path[$v->is_sitecode] = ''; $path_array[$v->is_sitecode] = array(); } if (!in_array($v->ic_url, $path_array[$v->is_sitecode])) { $site_path[$v->is_sitecode].="&path=" . $v->ic_url; $path_array[$v->is_sitecode][] = $v->ic_url; } } } //已经给是最新的了 if (empty($site_path)) { echo 'updated.'; die(); } //更新CDN缓存 $notice = array(); $flag = false; $siteconfig = $this->config->item('site'); foreach ($site_path as $k => $cdn) { $pad = str_replace('http://', '', $siteconfig[$k]['site_url']); $result = file_get_contents('https://openapi.us.cdnetworks.com/purge/rest/doPurge?user=ycc@chinahighlights.com&pass=cXi2UbsTrw9Urv&pad=' . $pad . '&type=item' . $cdn . '&output=json'); $result = json_decode($result, true); if ($result['resultCode'] != 200) { $notice[] = $k . ':' . $result['notice'] . $result['details']; } else { $notice[] = $k . ':' . $result['resultCode'] . '
' . $cdn; $flag = TRUE; } } //修改最近更新的信息的log_id,方便下次更新读取数据 if ($flag) { $lastinfo = end($list); $this->Logs_model->update('update_cdn', $lastinfo->log_id); } var_dump($notice); } public function mobile_friendly_test() { set_time_limit(60); $url = $this->input->post('pageurl'); $googleapis = 'https://www.googleapis.com/pagespeedonline/v3beta1/mobileReady?url=' . $url; $ch = curl_init(); curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22'); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_URL, $googleapis); $response2 = curl_exec($ch); $response = json_decode($response2); $data['pageurl'] = $url; $data['score'] = 60; $data['pass'] = false; isset($response->ruleGroups->USABILITY->score) && $data['score'] = $response->ruleGroups->USABILITY->score; isset($response->ruleGroups->USABILITY->pass) && $data['pass'] = $response->ruleGroups->USABILITY->pass; if (empty($response2)) { $pass_text = '请求超时'; $title = '请求超时,请稍后再试!'; $link_color = 'text-error'; $data['score'] = '-'; } elseif ($data['pass']) { $pass_text = 'OK'; $link_color = 'text-info'; $title = 'Awesome! This page is mobile-friendly (友好度' . $data['score'] . ', 总分100分)'; } else { $pass_text = 'No'; $title = 'Not mobile-friendly (友好度' . $data['score'] . ', 总分100分)'; $link_color = 'text-error'; } $html = '
' . $pass_text . ',友好度:' . $data['score'] . ''; echo $html; } protected function curl($url, $useragent = 'PC', $referer = false) { if ($useragent == 'PC') { $useragent = "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22"; } else { $useragent = "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Mobile Safari/537.36"; } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_FAILONERROR, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // curl_setopt($ch, CURLOPT_SSLVERSION, 1); // 2,3 // curl_setopt($ch, CURLOPT_SSLVERSION, 'CURL_SSLVERSION_SSLv3'); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_USERAGENT, $useragent); curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME); curl_setopt($ch, CURLOPT_PROXY, "202.103.68.28:11111"); if ($referer) { curl_setopt($ch, CURLOPT_REFERER, $referer); } $headers = array('content-type: application/x-www-form-urlencoded;charset=UTF-8'); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $reponse = curl_exec($ch); if (curl_errno($ch)) { log_message('error', "search engines curl error code: ".curl_error($ch).";"); } else { $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); if (200 !== $httpStatusCode) { log_message('error', "search engines Request html Status Code: ".$httpStatusCode.";"); } } curl_close($ch); return $reponse; } }