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


Posted in PHP onOctober 14, 2016

本文实例讲述了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);
// ?抽??URL浼?璇?
}
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 相关文章推荐
用PHP制作静态网站的模板框架(四)
Oct 09 PHP
轻松修复Discuz!数据库
May 03 PHP
PHP 实现多服务器共享 SESSION 数据
Aug 15 PHP
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
Apr 23 PHP
php 定界符格式引起的错误
May 24 PHP
浅析php学习的路线图
Jul 10 PHP
php获取表单中多个同名input元素的值
Mar 20 PHP
支持生僻字且自动识别utf-8编码的php汉字转拼音类
Jun 27 PHP
javascript数组与php数组的地址传递及值传递用法实例
Jan 22 PHP
分享一则PHP定义函数代码
Feb 26 PHP
详解PHP字符串替换str_replace()函数四种用法
Oct 13 PHP
php使用curl伪造浏览器访问操作示例
Sep 30 PHP
php生成与读取excel文件
Oct 14 #PHP
基于PHP实现用户注册登录功能
Oct 14 #PHP
PHP基于curl后台远程登录正方教务系统的方法
Oct 14 #PHP
php车辆违章查询数据示例
Oct 14 #PHP
基于PHPexecl类生成复杂的报表表头示例
Oct 14 #PHP
php+jQuery递归调用POST循环请求示例
Oct 14 #PHP
php实现将HTML页面转换成word并且保存的方法
Oct 14 #PHP
You might like
PHP简洁函数小结
2011/08/12 PHP
WordPress自定义时间显示格式
2015/03/27 PHP
php中照片旋转 (orientation) 问题的正确处理
2017/02/16 PHP
PHP封装的分页类与简单用法示例
2019/02/25 PHP
PHP判断是否微信访问的方法示例
2019/03/27 PHP
Thinkphp 框架扩展之数据库驱动常用方法小结
2020/04/23 PHP
爆炸式的JS圆形浮动菜单特效代码
2010/03/03 Javascript
网页图片延时加载的js代码
2010/04/22 Javascript
为JavaScript类型增加方法的实现代码(增加功能)
2011/12/29 Javascript
js实现多选项切换导航菜单的方法
2015/02/06 Javascript
JavaScript判断是否为数组的3种方法及效率比较
2015/04/01 Javascript
js实现仿Windows风格选项卡和按钮效果实例
2015/05/13 Javascript
js实现控制textarea输入字符串的个数,鼠标按下抬起判断输入字符数
2016/10/25 Javascript
解析ajaxFileUpload 异步上传文件简单使用
2016/12/30 Javascript
原生JS实现图片左右轮播
2016/12/30 Javascript
ES6 Promise对象概念与用法分析
2017/04/01 Javascript
React Js 微信禁止复制链接分享禁止隐藏右上角菜单功能
2017/05/26 Javascript
微信小程序如何实现在线客服功能
2019/10/16 Javascript
[01:54]TI珍贵瞬间系列(五):压力
2020/08/29 DOTA
python小技巧之批量抓取美女图片
2014/06/06 Python
在Python程序中操作MySQL的基本方法
2015/07/29 Python
Python 数据处理库 pandas进阶教程
2018/04/21 Python
Python 项目转化为so文件实例
2019/12/23 Python
python 实现在无序数组中找到中位数方法
2020/03/03 Python
Flask中jinja2的继承实现方法及实例
2021/03/03 Python
公司市场部岗位职责
2013/12/02 职场文书
学校岗位设置方案
2014/01/16 职场文书
法定代表人授权委托书
2014/04/04 职场文书
爱护草坪标语
2014/06/24 职场文书
有子女的离婚协议书怎么写(范本)
2014/09/29 职场文书
党的群众路线教育实践活动个人自我剖析材料
2014/10/07 职场文书
2014年客服工作总结与计划
2014/12/09 职场文书
争先创优个人总结
2015/03/04 职场文书
社区志愿者服务心得体会
2016/01/22 职场文书
《莫泊桑拜师》教学反思
2016/02/22 职场文书
2016年清明节期间群众祭祀活动工作总结
2016/04/01 职场文书