首页 > 语言 > PHP > 正文

PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】

2024-05-04 23:51:05
字体:
来源:转载
供稿:网友

本文实例讲述了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; MSIE 6.0; Windows NT 5.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; //创建目录 function mkdirs($dir) {   if(!is_dir($dir))  {   if(!mkdirs(dirname($dir))){    return false;   }   if(!mkdir($dir,0777)){    return false; } }  return true;}

获取数据的页面,这里需要通过表单来提交手动的验证码

define("SITE_PATH", $_SERVER['DOCUMENT_ROOT']);require_once SITE_PATH.'/class/SimpleHtmlDom.class.php';class GetData{private $url ;public function __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";}public function post($code){$POST['loginFromPage'] = "homePage";$POST['username'] = "xxxxxx";$POST['password'] = "xxxxx";$POST['activecode'] = $code;$POST['button.x']="14";$POST['button.y']="16";foreach($POST as $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);}private function saveData($response){$dom = str_get_html($response);$tmp = $dom->find('div.rtable table tbody tr',1)->plaintext;$data = preg_split("//s+/i", $tmp);$this->link();$date = date('Y-m-d',strtotime('-1 day'));$datetime = date('Y-m-d H:i:s');$money = $data['4'];$shows = $data['2'];$times = $data['3'];$sql = "select sum(money) as total from {$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 = "insert into {$this->table}(date,datetime,money,shows,times,total) values('{$date}','{$datetime}','{$money}','{$shows}','{$times}','{$total}')";mysql_query($sql);}private function link(){$link = mysql_connect('localhost', 'root', '');mysql_select_db('dblog', $link);mysql_query('SET NAMES utf8');}private function saveHtml($infomation,$filedir,$filename){if(!$this->mkdirs($filedir)){return 0;}$sf = $filedir."/".$filename;$fp=fopen($sf,"w"); //写方式打开文件fwrite($fp,$infomation); //存入内容fclose($fp); //关闭文件}//创建目录private function mkdirs($dir){if(!is_dir($dir)){if(!$this->mkdirs(dirname($dir))){return false;}if(!mkdir($dir,0777)){return false;}}return true;}public function login(){$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; MSIE 6.0; Windows NT 5.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浼氳瘽}private function curl($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; MSIE 6.0; Windows NT 5.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);//echo curl_error($ch);curl_close($ch);return $response;}}$GetData = new GetData();if(isset($_POST['code'])){$GetData->POST($_POST['code']);}

完整实例代码点击此处本站下载

希望本文所述对大家PHP程序设计有所帮助。


注:相关教程知识阅读请移步到PHP教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选