アナログログインcnzzキャプチャクリック数
phpコードは以下のように実現される.
function getCnzzStatData($curl_date, $cur_hour, $login_url, $login_pwd, $cnzz_log='cnzz_oel.log')
{
if(!extension_loaded('curl'))
{
$error_log = $login_url.':'.$curl_date.' '.$cur_hour."- curl <br/>
";
file_put_contents($cnzz_log, $error_log."\r
", FILE_APPEND);
return false;
}
$base_url = 'http://rdcnzz.com';
preg_match('#rdcnzz.com/v1/login.php\?siteid=(\d+)#', $login_url, $match_arr);
//$this->get('widget')->P($match_arr);exit;
if(empty($match_arr))
{
$error_log = $login_url.':'.$curl_date.' '.$cur_hour."- <br/>
";
file_put_contents($cnzz_log, $error_log."\r
", FILE_APPEND);
return false;
}
$siteid = $match_arr[1];
$login_url = $base_url .'/v1/login.php?t=login&siteid='.$siteid;
$get_url = $base_url .'/v1/index.php?siteid='.$siteid.'&a=view&c=time_flux&st='.$curl_date.'&et='.$curl_date;
$cookie_file = tempnam('./temp','cnz');
$post_fields = 'password='.$login_pwd;
$ch = curl_init($login_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0");
curl_setopt($ch, CURLOPT_ENCODING, "gzip");
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
$login_result = curl_exec($ch);
$respone_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
//$this->get('widget')->P($respone_status);exit;
if($respone_status != 302)
{
$error_log = $login_url.':'.$curl_date.' '.$cur_hour."- -".$respone_status."<br/>
";
file_put_contents($cnzz_log, $error_log."\r
", FILE_APPEND);
return false;
}
if(preg_match('#<script>alert\(#', $login_result))
{
$error_log = $login_url.':'.$curl_date.' '.$cur_hour."-js <br/>
";
file_put_contents($cnzz_log, $error_log."\r
", FILE_APPEND);
return false;
}
$ch = curl_init($get_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
$content = curl_exec($ch);
$respone_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
unlink($cookie_file);
if($respone_status != 200)
{
$error_log = $login_url.':'.$curl_date.' '.$cur_hour."- -".$respone_status."<br/>
";
file_put_contents($cnzz_log, $error_log."\r
", FILE_APPEND);
return false;
}
preg_match_all('#<td width="100" height="25" align="center">(.*)</td>\s*<td width="150" height="25" align="center" class="red12">(.*)</td>\s*<td width="150" height="25" align="center" class="red12">(.*)</td>#i',$content,$stat_html);
$cnzz_stat_data = array();
if(!empty($stat_html) && !empty($stat_html[1]) && !empty($stat_html[2]) && !empty($stat_html[3]))
{
foreach($stat_html[1] as $k => $hour)
{
if($k > 0)
{
$cnzz_stat_data[] = array('hour'=>$hour, 'pv'=>$stat_html[2][$k], 'ip'=>$stat_html[3][$k]);
}
}
return json_encode($cnzz_stat_data);
}
else
{
$error_log = $login_url.':'.$curl_date.' '.$cur_hour."- <br/>
";
file_put_contents($cnzz_log, $error_log."\r
", FILE_APPEND);
return false;
}
}