Server IP : / Your IP : 10.244.4.16 [ Web Server : nginx/1.25.3 System : Linux escuela-portal-app-54f56585bc-kst6g 5.15.0-1084-azure #93-Ubuntu SMP Sat Mar 15 14:12:29 UTC 2025 x86_64 User : root ( 0) PHP Version : 8.2.13 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, Domains : 0 Domains MySQL : OFF | cURL : ON | WGET : OFF | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /proc/449/cwd/app/vendor/jaybizzle/crawler-detect/src/ |
Upload File : |
<?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. */ namespace Jaybizzle\CrawlerDetect; use Jaybizzle\CrawlerDetect\Fixtures\Crawlers; use Jaybizzle\CrawlerDetect\Fixtures\Exclusions; use Jaybizzle\CrawlerDetect\Fixtures\Headers; class CrawlerDetect { /** * The user agent. * * @var string|null */ protected $userAgent; /** * 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->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|null $userAgent */ public function setUserAgent($userAgent) { if (is_null($userAgent)) { foreach ($this->getUaHttpHeaders() as $altHeader) { if (isset($this->httpHeaders[$altHeader])) { $userAgent .= $this->httpHeaders[$altHeader].' '; } } } return $this->userAgent = $userAgent; } /** * Check user agent string against the regex. * * @param string|null $userAgent * * @return bool */ public function isCrawler($userAgent = null) { $agent = trim(preg_replace( "/{$this->compiledExclusions}/i", '', $userAgent ?: $this->userAgent ?: '' )); if ($agent === '') { return false; } return (bool) preg_match("/{$this->compiledRegex}/i", $agent, $this->matches); } /** * Return the matches. * * @return string|null */ public function getMatches() { return isset($this->matches[0]) ? $this->matches[0] : null; } /** * @return string|null */ public function getUserAgent() { return $this->userAgent; } }