PHP PHP AdSense帐户监控器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP PHP AdSense帐户监控器相关的知识,希望对你有一定的参考价值。

//---------------------------------------------------------------------------------------------------------------------
//Source code for AdSense.php:
//---------------------------------------------------------------------------------------------------------------------


 
/**
 * PHP class ment to collect AdSense account data
 * It can return various data for different periods of time
 *
 * @copyright	Copyright © 2007
 * @package		AdSense
 */
class AdSense {
 
 
	/**
	 * Stores curl connection handle
	 *
	 * @var resource
	 */
	var $curl = null;
 
 
	/**
	 * Stores TMP folder path
	 * This folder must be writeble
	 *
	 * @var string
	 */
	var $tmpPath = '/tmp';
 
 
	/**
	 * AdSense::AdSense()
	 * AdSense class constructor
	 */
	function AdSense(){
		$this->coockieFile = tempnam($this->tmpPath, 'cookie');
 
		$this->curl = curl_init();
		curl_setopt($this->curl, CURLOPT_HEADER, false);
		curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($this->curl, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($this->curl, CURLOPT_SSL_VERIFYHOST, false);
		curl_setopt($this->curl, CURLOPT_FOLLOWLOCATION, true);
		curl_setopt($this->curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7");
		curl_setopt($this->curl, CURLOPT_COOKIEFILE, $cookieFile);
		curl_setopt($this->curl, CURLOPT_COOKIEJAR, $cookieFile);
 
		register_shutdown_function(array(&$this, '__destructor'));
	}
 
 
	/**
	 * AdSense::__destructor()
	 * AdSense class destructor
	 */
	function __destructor(){
		@curl_close($this->curl);
		@unlink($this->coockieFile);
	}
 
 
	/**
	 * AdSense::connect()
	 * Connects to AdSense account using supplied credentials
	 * Returns true on unsuccessful connection, false otherwise
	 *
	 * @param string $username AdSense username
	 * @param string $password AdSense password
	 * @return boolean
	 */
	function connect($username, $password){
		// phase 1
		curl_setopt($this->curl, CURLOPT_URL, "https://www.google.com/accounts/ServiceLoginAuth?service=adsense&hl=en-US&ltmpl=login&ifr=true&passive=true&rm=hide&nui=3&alwf=true&continue=https%3A%2F%2Fwww.google.com%2Fadsense%2Fgaiaauth&followup=https%3A%2F%2Fwww.google.com%2Fadsense%2Fgaiaauth");
		preg_match_all('<input type="hidden" name="(.*?)" value="(.*?)">', curl_exec($this->curl), $out);
		$params = array();
		foreach($out[1] as $key=>$name) { $params[] = $name . '=' . urlencode($out[2][$key]); }
		$params[] = 'Email=' . urlencode($username);
		$params[] = 'Passwd=' . urlencode($password);
		$params[] = 'null=' . urlencode('Sign in');
 
		// phase 2
		curl_setopt($this->curl, CURLOPT_POST, true);
		curl_setopt($this->curl, CURLOPT_URL, "https://www.google.com/accounts/ServiceLoginAuth");
		curl_setopt($this->curl, CURLOPT_POSTFIELDS, join('&', $params));
		preg_match("/.*<a target=\"_top\" href=\"(.*)\" style.*/", curl_exec($this->curl), $matches);
 
		// phase 3
		curl_setopt($this->curl, CURLOPT_POST, false);
		curl_setopt($this->curl, CURLOPT_URL, $matches[1]);
 
		// did we login ?
		if (eregi("Log out",  curl_exec($this->curl))) {
			return true;
		} else {
			return false;
		};
	}
 
 
	/**
	 * AdSense::parse()
	 * Parses AdSense page and gets all stats
	 * Returns associative array with collected data
	 *
	 * @param string $content AdSense page content
	 * @return array
	 */
	function parse($content){
		preg_match_all('/<td nowrap valign="top" style="text-align:right" class="">(.*?)<\/td>/', $content, $matches);
		return array(
			"impressions" => $matches[1][0],
			"clicks" => $matches[1][1],
			"ctr" => $matches[1][2],
			"ecpm" => $matches[1][3],
			"earnings" => $matches[1][4]
		);
 
	}
 
 
	/**
	 * AdSense::today()
	 * Gets AdSense data for the period: today
	 * Returns associative array with collected data
	 *
	 * @return array
	 */
	function today(){
		curl_setopt($this->curl, CURLOPT_URL, "https://www.google.com/adsense/report/overview?timePeriod=today");
		return $this->parse(curl_exec($this->curl));
	}
 
 
	/**
	 * AdSense::yesterday()
	 * Gets AdSense data for the period: yesterday
	 * Returns associative array with collected data
	 *
	 * @return array
	 */
	function yesterday(){
		curl_setopt($this->curl, CURLOPT_URL, "https://www.google.com/adsense/report/overview?timePeriod=yesterday");
		return $this->parse(curl_exec($this->curl));
	}
 
 
	/**
	 * AdSense::last7days()
	 * Gets AdSense data for the period: last7days
	 * Returns associative array with collected data
	 *
	 * @return array
	 */
	function last7days(){
		curl_setopt($this->curl, CURLOPT_URL, "https://www.google.com/adsense/report/overview?timePeriod=last7days");
		return $this->parse(curl_exec($this->curl));
	}
 
 
	/**
	 * AdSense::lastmonth()
	 * Gets AdSense data for the period: lastmonth
	 * Returns associative array with collected data
	 *
	 * @return array
	 */
	function lastmonth(){
		curl_setopt($this->curl, CURLOPT_URL, "https://www.google.com/adsense/report/overview?timePeriod=lastmonth");
		return $this->parse(curl_exec($this->curl));
	}
 
 
	/**
	 * AdSense::thismonth()
	 * Gets AdSense data for the period: thismonth
	 * Returns associative array with collected data
	 *
	 * @return array
	 */
	function thismonth(){
		curl_setopt($this->curl, CURLOPT_URL, "https://www.google.com/adsense/report/overview?timePeriod=thismonth");
		return $this->parse(curl_exec($this->curl));
	}
 
 
	/**
	 * AdSense::sincelastpayment()
	 * Gets AdSense data for the period: sincelastpayment
	 * Returns associative array with collected data
	 *
	 * @return array
	 */
	function sincelastpayment(){
		curl_setopt($this->curl, CURLOPT_URL, "https://www.google.com/adsense/report/overview?timePeriod=sincelastpayment");
		return $this->parse(curl_exec($this->curl));
	}
 
}
 



//---------------------------------------------------------------------------------------------------------------------
//Source code for example.php
//---------------------------------------------------------------------------------------------------------------------


 
include('AdSense.php');
 
$adsense = new AdSense();
if ($adsense->connect('username', 'password')) {
	$data = $adsense->sincelastpayment();
} else {
	die('Could not login to AdSense account.');
};

以上是关于PHP PHP AdSense帐户监控器的主要内容,如果未能解决你的问题,请参考以下文章

AdMob帐户迁移和AdSense帐户

在 Google adsense 中创建的新单元不起作用

Admob与AdSense之间的主要区别是什么?

博客错误无法保存收入设置

内容安全政策能否与 Google Analytics 和 AdSense 兼容?

Wordpress 博客 + Google AdSense [关闭]