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 相关文章推荐
第十三节--对象串行化
Nov 16 PHP
php 动态执行带有参数的类方法
Apr 10 PHP
php 操作excel文件的方法小结
Dec 31 PHP
php将时间差转换为字符串提示
Sep 07 PHP
PHP 动态生成静态HTML页面示例代码
Jan 15 PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
Apr 18 PHP
PHP下通过QRCode类库创建中间带网站LOGO的二维码
Jul 12 PHP
PHP判断数据库中的记录是否存在的方法
Nov 14 PHP
PHP简单获取视频预览图的方法
Mar 12 PHP
Zend Framework动作助手Redirector用法实例详解
Mar 05 PHP
Symfony2学习笔记之模板用法详解
Mar 17 PHP
基于thinkPHP类的插入数据库操作功能示例
Jan 06 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 在线打包_支持子目录
2008/06/28 PHP
PHP 时间日期操作实战
2011/08/26 PHP
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
2012/05/16 PHP
启用Csrf后POST数据时出现的400错误
2015/07/05 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
2016/03/01 PHP
php生成Android客户端扫描可登录的二维码
2016/05/13 PHP
PHP+Redis开发的书签案例实战详解
2019/07/09 PHP
理解JavaScript中的事件
2006/09/23 Javascript
分享十五个最佳jQuery 幻灯插件和教程
2010/03/27 Javascript
JavaScript arguments 多参传值函数
2010/10/24 Javascript
IE6下opacity与JQuery的奇妙结合
2013/03/01 Javascript
jquery实现瀑布流效果分享
2014/03/26 Javascript
JavaScript搜索字符串并将搜索结果返回到字符串的方法
2015/04/06 Javascript
jQuery+ajax实现无刷新级联菜单示例
2015/05/21 Javascript
AngularJS入门教程中SQL实例详解
2016/07/27 Javascript
javascript对浅拷贝和深拷贝的详解
2016/10/14 Javascript
JavaScript实现跟随滚动缓冲运动广告框
2017/07/15 Javascript
js+html5实现复制文字按钮
2017/07/15 Javascript
浅析Vue.js 中的条件渲染指令
2018/11/19 Javascript
vue实现随机验证码功能的实例代码
2019/04/30 Javascript
微信小程序自定义组件实现环形进度条
2020/11/17 Javascript
基于layui内置模块(element常用元素的操作)
2019/09/20 Javascript
javascript绘制简单钟表效果
2020/04/07 Javascript
Python设置默认编码为utf8的方法
2016/07/01 Python
Python使用回溯法子集树模板解决迷宫问题示例
2017/09/01 Python
numpy中实现二维数组按照某列、某行排序的方法
2018/04/04 Python
20行python代码的入门级小游戏的详解
2019/05/05 Python
CSS3制作皮卡丘动画壁纸的示例
2020/11/02 HTML / CSS
Skyscanner新西兰:全球领先的旅游搜索网站
2019/08/26 全球购物
介绍一下Ruby中的对象,属性和方法
2012/07/11 面试题
夜大毕业自我鉴定
2013/10/11 职场文书
洗手间标语
2014/06/23 职场文书
大学生逃课检讨书
2015/05/04 职场文书
选对餐饮营销策略,营业额才会上涨
2019/08/27 职场文书
Java中try catch处理异常示例
2021/12/06 Java/Android
SQL Server中使用表变量和临时表
2022/05/20 SQL Server