REDROOM
PHP 8.3.31
Path:
Logout
Edit File
Size: 4.19 KB
Close
/proc/thread-self/root/home/getspomw/itechservicellc.com/vendor/jaybizzle/crawler-detect/src/CrawlerDetect.php
Text
Base64
<?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 = []; /** * Store regex matches. * * @var array */ protected $matches = []; /** * 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 = []; // 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 === '') { $this->matches = []; 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; } }
Save
Close
Exit & Reset
Text mode: syntax highlighting auto-detects file type.
Directory Contents
Dirs: 1 × Files: 1
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
Fixtures
DIR
-
drwxr-xr-x
2025-11-18 19:23:52
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
CrawlerDetect.php
4.19 KB
lrw-r--r--
2025-10-28 20:22:16
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).