Регистрация Войти
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Скрипт получает информацию от Google о сайте
Класс позволяет получать различную полезную информацию о сайте через сервисы Google.
/**
* This file contains the googledancer class that checks if Google is "dancing".
*
* @package googledancer
*/
/**
* googledancer class
*
* This class allows to check if Google is "dancing".
*
* @package googledancer
* @author Setec Astronomy
* @version 1.0
* @abstract Check if Google. is "dancing".
* @copyright 2004
* @example sample.php A sample code.
* @link http://setecastronomy.stufftoread.com
*/
class googledancer {
/* @access private */
var $main_server = '';
var $alt_servers = array ();
var $domains = array ();
/* Default constructor of googledancer class. */
// public function __construct ()
function googledancer () {
if (!function_exists ('fsockopen')) {
die ('googledancer class needs the fsockopen function!');
}
$this->main_server = 'www.google.com';
$this->alt_servers = array ('www.google.ch', 'www.google.at');
$this->domains = array ('yahoo.com', 'cnn.com', 'amazon.com');
}
/* @access private */
// private safe_set (&$var_true, $var_false = '') {
function safe_set (&$var_true, $var_false = '') {
if (!isset ($var_true)) {
$var_true = $var_false;
}
return $var_true;
}
/* @access private */
// private queryHTTP ($url, $timeout = 10) {
function queryHTTP ($url, $timeout = 10) {
$parsed = parse_url ($url);
$this->safe_set ($parsed['host']);
$this->safe_set ($parsed['port'], 80);
$this->safe_set ($parsed['path']);
$this->safe_set ($parsed['query']);
$fp = fsockopen ($parsed['host'], $parsed['port'], $errno, $errstr, $timeout);
if ($fp !== false) {
fputs ($fp, "GET " . $parsed['path'] . "?" . $parsed['query'] . " HTTP/1.0\r\n");
fputs ($fp, "Accept: */*\r\n");
fputs ($fp, "Referer: http://setecastronomy.stufftoread.com/\r\n");
fputs ($fp, "Accept-Language: en\r\n");
fputs ($fp, "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\r\n");
fputs ($fp, "Host: " . $parsed['host'] . "\r\n");
fputs($fp, "Connection: close\r\n\r\n");
$result = '';
while (!feof ($fp)) {
$result .= fgets ($fp, 128);
}
fclose ($fp);
return $result;
}
return false;
}
/**
* The getBackLinks method
*
* This method returns an array with the backlinks count about some important websites.
* @param integer $timeout the timeout value used in the fsockopen function.
* @return mixed it returns an array or false if it fails
*/
// public function getBackLinks ($timeout = 10) {
function getBackLinks ($timeout = 10) {
$result = array ();
$servers[] = $this->main_server;
$servers = array_merge ($servers, $this->alt_servers);
foreach ($this->domains as $domain) {
foreach ($servers as $server) {
$url = 'http://' . $server . '/search?hl=en&ie=UTF-8&q=link%3A' . urlencode ($domain);
$content = $this->queryHTTP ($url);
if ($content !== false) {
if (preg_match ('/ of about <b>([\d,]*?)<\/b> linking /si', $content, $matches)) {
$result[$domain][$server] = str_replace (',', '', $matches[1]);
} else {
$result[$domain][$server] = 0;
}
}
}
}
return $result;
}
/**
* The analizeBackLinks method
*
* This method analyse the {@link googledancer::getBackLinks() googledancer::getBackLinks()} return value and
* returns a float with the percentage probability that Google is dancing.
* @param array $results {@link googledancer::getBackLinks() googledancer::getBackLinks()} return value
* @return mixed it returns a float value with the percentage or false if it fails
*/
function analizeBackLinks ($results) {
if (!is_array ($results)) {
return false;
}
$diff_count = 0;
foreach ($results as $domain => $values) {
if (is_array ($values) && isset ($values[$this->main_server])) {
foreach ($this->alt_servers as $server) {
if (isset ($values[$server]) && is_numeric ($values[$server]) && ($values[$server] > 0)) {
$diff_count += abs ($values[$this->main_server] - $values[$server]) / $values[$server];
} else {
return false;
}
}
} else {
return false;
}
}
return $diff_count * 100;
}
/**
* The getIndexedPages method
*
* This method returns an array with the indexed pages count about some important websites.
* @param integer $timeout the timeout value used in the fsockopen function.
* @return mixed it returns an array or false if it fails
*/
// public function getIndexedPages ($timeout = 10) {
function getIndexedPages ($timeout = 10) {
$result = array ();
$servers[] = $this->main_server;
$servers = array_merge ($servers, $this->alt_servers);
foreach ($this->domains as $domain) {
foreach ($servers as $server) {
$url = 'http://' . $server . '/search?hl=en&ie=UTF-8&q=site%3A' . urlencode ($domain);
$content = $this->queryHTTP ($url);
if ($content !== false) {
if (preg_match ('/ of about <b>([\d,]*?)<\/b> from /si', $content, $matches)) {
$result[$domain][$server] = str_replace (',', '', $matches[1]);
} else {
$result[$domain][$server] = 0;
}
}
}
}
return $result;
}
/**
* The analizeIndexedPages method
*
* This method analyse the {@link googledancer::getIndexedPages() googledancer::getIndexedPages()} return value and
* returns a float with the percentage probability that Google is dancing.
* @param array $results {@link googledancer::getIndexedPages() googledancer::getIndexedPages()} return value
* @return mixed it returns a float value with the percentage or false if it fails
*/
function analizeIndexedPages ($results) {
if (!is_array ($results)) {
return false;
}
$diff_count = 0;
foreach ($results as $domain => $values) {
if (is_array ($values) && isset ($values[$this->main_server])) {
foreach ($this->alt_servers as $server) {
if (isset ($values[$server]) && is_numeric ($values[$server]) && ($values[$server] > 0)) {
$diff_count += abs ($values[$this->main_server] - $values[$server]) / $values[$server];
} else {
return false;
}
}
} else {
return false;
}
}
return $diff_count * 100;
}
/**
* The getResults method
*
* This method returns an array with the results of the given query.
* @param string $keywords the keyword used for the query.
* @param integer $resultcount the number fo results to grab (10, 20, 50, 100).
* @param integer $timeout the timeout value used in the fsockopen function.
* @return mixed it returns an array or false if it fails
*/
function getResults ($keywords = '', $resultcount = 10, $timeout = 10) {
$result = array ();
$servers[] = $this->main_server;
$servers = array_merge ($servers, $this->alt_servers);
foreach ($servers as $server) {
$url = 'http://' . $server . '/search?hl=en&ie=UTF-8&q=' . urlencode ($keywords);
$content = $this->queryHTTP ($url);
if ($content !== false) {
if (preg_match_all ('/<p class=g><a href=(.*?) /si', $content, $matches)) {
$result[$server] = $matches[1];
} else {
$result[$server] = array ();
}
}
}
return $result;
}
/**
* The analizeResults method
*
* This method analyse the {@link googledancer::getResults() googledancer::getResults()} return value and
* returns a float with the percentage probability that Google is dancing.
* @param array $results {@link googledancer::getResults() googledancer::getResults()} return value
* @return mixed it returns a float value with the percentage or false if it fails
*/
function analizeResults ($results) {
if (!is_array ($results) || !isset ($results[$this->main_server])) {
return false;
}
$result_count = 0;
$diff_result_count = 0;
$diff_index_count = 0;
foreach ($this->alt_servers as $server) {
if (isset ($results[$server])) {
$diff_result_count += count ($results[$server]) - count (array_intersect ($results[$this->main_server], $results[$server]));
$diff_index_count += count ($results[$server]) - count (array_intersect_assoc ($results[$this->main_server], $results[$server]));
$result_count += count ($results[$server]) * 2;
} else {
return false;
}
}
if ($result_count == 0) {
$result = 0;
} else {
$result = ($diff_result_count + $diff_index_count) / $result_count * 100;
}
return $result;
}
}
.
Прокомментировать/Отблагодарить