%PDF- %PDF-
Direktori : /home/nailstv/public_html/notapproved-usrKEY/8f1586839f30b14ae2d2a643289f620b/Bots/Anti/out/Crawler/src/ |
Current File : /home/nailstv/public_html/notapproved-usrKEY/8f1586839f30b14ae2d2a643289f620b/Bots/Anti/out/Crawler/src/CrawlerDetect.php |
<?php namespace Jaybizzle\CrawlerDetect; require('Fixtures/AbstractProvider.php'); require('Fixtures/Headers.php'); require('Fixtures/Crawlers.php'); require('Fixtures/Exclusions.php'); /* * This file is part of Crawler Detect - the web crawler detection library. * * (c) Mark Beech <m@rkbee.ch> * * This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */ use Jaybizzle\CrawlerDetect\Fixtures\Headers; use Jaybizzle\CrawlerDetect\Fixtures\Crawlers; use Jaybizzle\CrawlerDetect\Fixtures\Exclusions; class CrawlerDetect { /** * The user agent. * * @var null */ protected $userAgent = null; /** * Headers that contain a user agent. * * @var array */ protected $httpHeaders = array(); /** * Store regex matches. * * @var array */ protected $matches = array(); /** * Crawlers object. * * @var \Jaybizzle\CrawlerDetect\Fixtures\Crawlers */ protected $crawlers; /** * Exclusions object. * * @var \Jaybizzle\CrawlerDetect\Fixtures\Exclusions */ protected $exclusions; /** * Headers object. * * @var \Jaybizzle\CrawlerDetect\Fixtures\Headers */ protected $uaHttpHeaders; /** * The compiled regex string. * * @var string */ protected $compiledRegex; /** * The compiled exclusions regex string. * * @var string */ protected $compiledExclusions; /** * Class constructor. */ public function __construct(array $headers = null, $userAgent = null) { $this->crawlers = new Crawlers(); $this->exclusions = new Exclusions(); $this->uaHttpHeaders = new Headers(); $this->compiledRegex = $this->compileRegex($this->crawlers->getAll()); $this->compiledExclusions = $this->compileRegex($this->exclusions->getAll()); $this->setHttpHeaders($headers); $this->userAgent = $this->setUserAgent($userAgent); } /** * Compile the regex patterns into one regex string. * * @param array * * @return string */ public function compileRegex($patterns) { return '('.implode('|', $patterns).')'; } /** * Set HTTP headers. * * @param array|null $httpHeaders */ public function setHttpHeaders($httpHeaders) { // Use global _SERVER if $httpHeaders aren't defined. if (! is_array($httpHeaders) || ! count($httpHeaders)) { $httpHeaders = $_SERVER; } // Clear existing headers. $this->httpHeaders = array(); // Only save HTTP headers. In PHP land, that means // only _SERVER vars that start with HTTP_. foreach ($httpHeaders as $key => $value) { if (strpos($key, 'HTTP_') === 0) { $this->httpHeaders[$key] = $value; } } } /** * Return user agent headers. * * @return array */ public function getUaHttpHeaders() { return $this->uaHttpHeaders->getAll(); } /** * Set the user agent. * * @param string $userAgent */ public function setUserAgent($userAgent) { if (is_null($userAgent)) { foreach ($this->getUaHttpHeaders() as $altHeader) { if (isset($this->httpHeaders[$altHeader])) { $userAgent .= $this->httpHeaders[$altHeader].' '; } } } return $userAgent; } /** * Check user agent string against the regex. * * @param string|null $userAgent * * @return bool */ public function isCrawler($userAgent = null) { $agent = $userAgent ?: $this->userAgent; $agent = preg_replace('/'.$this->compiledExclusions.'/i', '', $agent); if (strlen(trim($agent)) == 0) { return false; } $result = preg_match('/'.$this->compiledRegex.'/i', trim($agent), $matches); if ($matches) { $this->matches = $matches; } return (bool) $result; } /** * Return the matches. * * @return string|null */ public function getMatches() { return isset($this->matches[0]) ? $this->matches[0] : null; } }