PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
本文实例讲述了PHP实现登录搜狐广告获取广告联盟数据的方法。分享给大家供大家参考,具体如下:
一直有一个想法,每次都要登录去看联盟昨天收益多少?每天都要登录和麻烦,能不能做一个汇总发邮件的功能呢?
可惜了,验证码绕不过去,只能想一个办法。先在服务器手动打一次验证码,然后在通过定时器,每隔10分钟请求一个页面
这样的话Cookies就不会失效,,然后每周只需要跟我汇总数据就Ok了。。
远程提交表单的原理,可以参考:PHP基于curl后台远程登录正方教务系统的方法
参考的代码还是一样的如下
获取验证码Code.php
define("SITE_PATH",$_SERVER['DOCUMENT_ROOT']); $LoginUrl="http://union.sogou.com/"; $url=$LoginUrl."validateCode"; $filedir=SITE_PATH."/TMP/Cookies"; $cookie_file=$filedir."/cookie.txt"; if(!mkdirs($filedir)) { echo"目录创建失败"; exit; } $ch=curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_HEADER,0);//不返回header部分 curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.0)"); curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file); //curl_setopt($ch,CURLOPT_REFERER,"http://125.89.69.234"); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_TIMEOUT,"10"); $response=curl_exec($ch); curl_close($ch); header("Content-type:image/gif"); echo$response; //创建目录 functionmkdirs($dir) { if(!is_dir($dir)) { if(!mkdirs(dirname($dir))){ returnfalse; } if(!mkdir($dir,0777)){ returnfalse; } } returntrue; }
获取数据的页面,这里需要通过表单来提交手动的验证码
define("SITE_PATH",$_SERVER['DOCUMENT_ROOT']); require_onceSITE_PATH.'/class/SimpleHtmlDom.class.php'; classGetData{ private$url; publicfunction__construct(){ $this->url="http://union.sogou.com/index.action?searchBean.timeSegment=yestoday"; $this->LoginUrl="http://union.sogou.com/"; $this->PostData=$this->LoginUrl."loginauth.action"; $this->table="dwz_union"; } publicfunctionpost($code) { $POST['loginFromPage']="homePage"; $POST['username']="xxxxxx"; $POST['password']="xxxxx"; $POST['activecode']=$code; $POST['button.x']="14"; $POST['button.y']="16"; foreach($POSTas$key=>$value) { $tmp[]=$key."=".$value; } $postStr=implode("&",$tmp); $filedir=SITE_PATH."/TMP/Cookies"; $cookie_file=$filedir."/cookie.txt"; $result=$this->curl($this->PostData,"http://union.sogou.com/loginauth.action",$postStr,$cookie_file); $url="http://union.sogou.com/index.action"; $postArr="searchBean.timeSegment=yestoday"; $response=$this->curl($url,"http://union.sogou.com/index.action?pid=dengwz7788",$postArr,$cookie_file); $this->saveData($response); } privatefunctionsaveData($response) { $dom=str_get_html($response); $tmp=$dom->find('div.rtabletabletbodytr',1)->plaintext; $data=preg_split("/\s+/i",$tmp); $this->link(); $date=date('Y-m-d',strtotime('-1day')); $datetime=date('Y-m-dH:i:s'); $money=$data['4']; $shows=$data['2']; $times=$data['3']; $sql="selectsum(money)astotalfrom{$this->table}"; $query=mysql_query($sql); $totaTmp=mysql_fetch_row($query); var_dump($totalTmp); if(empty($totaTmp['0'])) { $total=$money; }else{ $total=$totaTmp['0']+$money; } $sql="insertinto{$this->table}(date,datetime,money,shows,times,total)values('{$date}','{$datetime}','{$money}','{$shows}','{$times}','{$total}')"; mysql_query($sql); } privatefunctionlink() { $link=mysql_connect('localhost','root',''); mysql_select_db('dblog',$link); mysql_query('SETNAMESutf8'); } privatefunctionsaveHtml($infomation,$filedir,$filename) { if(!$this->mkdirs($filedir)) { return0; } $sf=$filedir."/".$filename; $fp=fopen($sf,"w");//写方式打开文件 fwrite($fp,$infomation);//存入内容 fclose($fp);//关闭文件 } //创建目录 privatefunctionmkdirs($dir) { if(!is_dir($dir)) { if(!$this->mkdirs(dirname($dir))){ returnfalse; } if(!mkdir($dir,0777)){ returnfalse; } } returntrue; } publicfunctionlogin() { $filedir=SITE_PATH."/TMP/Cookies"; if(!$this->mkdirs($filedir)) { echo"目录创建失败"; exit; } $cookie_file=$filedir."/cookie.txt"; $ch=curl_init(); curl_setopt($ch,CURLOPT_URL,$this->LoginUrl); curl_setopt($ch,CURLOPT_HEADER,0);//不返回header部分 curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.0)"); curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file); //curl_setopt($ch,CURLOPT_REFERER,"http://125.89.69.234"); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_TIMEOUT,"10"); $response=curl_exec($ch); curl_close($ch); //鍏抽棴CURL浼氳瘽 } privatefunctioncurl($url,$url2,$fields,$cookie_file) { $ch=curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_HEADER,0);//不返回header部分 curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.0)"); curl_setopt($ch,CURLOPT_POST,1); curl_setopt($ch,CURLOPT_POSTFIELDS,$fields); curl_setopt($ch,CURLOPT_COOKIEFILE,$cookie_file); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1); curl_setopt($ch,CURLOPT_HTTPHEADER,array("Host:union.sogou.com")); curl_setopt($ch,CURLOPT_REFERER,$url2); $response=curl_exec($ch); //echocurl_error($ch); curl_close($ch); return$response; } } $GetData=newGetData(); if(isset($_POST['code'])) { $GetData->POST($_POST['code']); }
完整实例代码点击此处本站下载。
更多关于PHP相关内容感兴趣的读者可查看本站专题:《phpcurl用法总结》、《PHP数组(Array)操作技巧大全》、《php排序算法总结》、《PHP常用遍历算法与技巧总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《PHP数学运算技巧总结》、《php正则表达式用法总结》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。