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
一段防盗连的PHP代码
Dec 06 PHP
php xml-rpc远程调用
Dec 19 PHP
php简单对象与数组的转换函数代码(php多层数组和对象的转换)
May 18 PHP
php防止网站被刷新的方法汇总
Dec 01 PHP
php通过获取头信息判断图片类型的方法
Jun 26 PHP
PHP读取mssql json数据中文乱码的解决办法
Apr 11 PHP
PHP中抽象类和抽象方法概念与用法分析
May 24 PHP
使用PHP连接数据库_实现用户数据的增删改查的整体操作示例
Sep 01 PHP
PHP分页显示的方法分析【附PHP通用分页类】
May 10 PHP
详解关于php的xdebug配置(编辑器vscode)
Jan 29 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
Nov 23 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发送get、post请求的6种方法简明总结
2014/07/08 PHP
简单谈谈php中ob_flush和flush的区别
2014/11/27 PHP
AJAX PHP无刷新form表单提交的简单实现(推荐)
2016/09/09 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
PHP常见的几种攻击方式实例小结
2019/04/29 PHP
jquery photoFrame 图片边框美化显示插件
2010/06/28 Javascript
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
2011/01/12 Javascript
Textarea根据内容自适应高度
2013/10/28 Javascript
jquery选择器之层级过滤选择器详解
2014/01/27 Javascript
jQuery实现当按下回车键时绑定点击事件
2014/01/28 Javascript
js的image onload事件使用遇到的问题
2014/07/15 Javascript
jQuery实现二级下拉菜单效果
2016/01/05 Javascript
使用 stylelint检查CSS_StyleLint
2016/04/28 Javascript
Ztree新增角色和编辑角色回显问题的解决
2016/10/25 Javascript
vue中使用heatmapjs的示例代码(结合百度地图)
2018/09/05 Javascript
Vue中通过Vue.extend动态创建实例的方法
2019/08/13 Javascript
python快速排序代码实例
2013/11/21 Python
Python反射用法实例简析
2017/12/22 Python
Python引用计数操作示例
2018/08/23 Python
opencv python 图像去噪的实现方法
2018/08/31 Python
一篇文章搞懂Python的类与对象名称空间
2018/12/10 Python
Django 拆分model和view的实现方法
2019/08/16 Python
python 3.6.7实现端口扫描器
2019/09/04 Python
Python定时发送天气预报邮件代码实例
2019/09/09 Python
PyTorch的SoftMax交叉熵损失和梯度用法
2020/01/15 Python
Python实现捕获异常发生的文件和具体行数
2020/04/25 Python
matplotlib subplot绘制多个子图的方法示例
2020/07/28 Python
香蕉共和国工厂店:Banana Republic Factory
2018/06/09 全球购物
什么是java序列化,如何实现java序列化
2012/11/14 面试题
别名指示符是什么
2012/10/08 面试题
小学教师的个人自我鉴定
2013/10/26 职场文书
理发店策划方案
2014/06/05 职场文书
2015年车间主任工作总结
2015/05/21 职场文书
经销商会议开幕词
2016/03/04 职场文书
mysql连接查询中and与where的区别浅析
2021/07/01 MySQL
mysql数据库如何转移到oracle
2022/12/24 MySQL