forked from friendica/friendica-addons
Merge pull request #846 from nupplaphil/features/6948-bot_detection
New Addon Bot detection
This commit is contained in:
commit
cf741fe3e9
27 changed files with 3793 additions and 0 deletions
32
blockbot/blockbot.php
Normal file
32
blockbot/blockbot.php
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Name: blockbot
|
||||||
|
* Description: Blocking bots based on detecting bots/crawlers/spiders via the user agent and http_from header.
|
||||||
|
* Version: 0.1
|
||||||
|
* Author: Philipp Holzer <admin@philipp.info>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
use Friendica\App;
|
||||||
|
use Friendica\Core\Hook;
|
||||||
|
use Friendica\Core\System;
|
||||||
|
use Jaybizzle\CrawlerDetect\CrawlerDetect;
|
||||||
|
|
||||||
|
require_once __DIR__ . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
|
||||||
|
|
||||||
|
function blockbot_install() {
|
||||||
|
Hook::register('init_1', __FILE__, 'blockbot_init_1');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function blockbot_uninstall() {
|
||||||
|
Hook::unregister('init_1', __FILE__, 'blockbot_init_1');
|
||||||
|
}
|
||||||
|
|
||||||
|
function blockbot_init_1(App $a) {
|
||||||
|
$crawlerDetect = new CrawlerDetect();
|
||||||
|
|
||||||
|
if ($crawlerDetect->isCrawler()) {
|
||||||
|
System::httpExit(403, 'Bots are not allowed');
|
||||||
|
}
|
||||||
|
}
|
||||||
24
blockbot/composer.json
Normal file
24
blockbot/composer.json
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
{
|
||||||
|
"name": "friendica-addons/blockbot",
|
||||||
|
"description": "Blocking bots based on detecting bots/crawlers/spiders via the user agent and http_from header.",
|
||||||
|
"type": "friendica-addon",
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Philipp Holzer",
|
||||||
|
"email": "admin@philipp.info",
|
||||||
|
"homepage": "https://friendica.philipp.info/profile/nupplaphil",
|
||||||
|
"role": "Developer"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.6.0",
|
||||||
|
"jaybizzle/crawler-detect": "1.*"
|
||||||
|
},
|
||||||
|
"license": "3-clause BSD license",
|
||||||
|
"minimum-stability": "stable",
|
||||||
|
"config": {
|
||||||
|
"optimize-autoloader": true,
|
||||||
|
"autoloader-suffix": "BlockBotAddon",
|
||||||
|
"preferred-install": "dist"
|
||||||
|
}
|
||||||
|
}
|
||||||
69
blockbot/composer.lock
generated
Normal file
69
blockbot/composer.lock
generated
Normal file
|
|
@ -0,0 +1,69 @@
|
||||||
|
{
|
||||||
|
"_readme": [
|
||||||
|
"This file locks the dependencies of your project to a known state",
|
||||||
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
|
"This file is @generated automatically"
|
||||||
|
],
|
||||||
|
"content-hash": "814fd867d00e99f84d12304e8e244aae",
|
||||||
|
"packages": [
|
||||||
|
{
|
||||||
|
"name": "jaybizzle/crawler-detect",
|
||||||
|
"version": "v1.2.80",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/JayBizzle/Crawler-Detect.git",
|
||||||
|
"reference": "af6a36e6d69670df3f0a3ed8e21d4b8cc67a7847"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/JayBizzle/Crawler-Detect/zipball/af6a36e6d69670df3f0a3ed8e21d4b8cc67a7847",
|
||||||
|
"reference": "af6a36e6d69670df3f0a3ed8e21d4b8cc67a7847",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.3.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^4.8|^5.5|^6.5",
|
||||||
|
"satooshi/php-coveralls": "1.*"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Jaybizzle\\CrawlerDetect\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Mark Beech",
|
||||||
|
"email": "m@rkbee.ch",
|
||||||
|
"role": "Developer"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "CrawlerDetect is a PHP class for detecting bots/crawlers/spiders via the user agent",
|
||||||
|
"homepage": "https://github.com/JayBizzle/Crawler-Detect/",
|
||||||
|
"keywords": [
|
||||||
|
"crawler",
|
||||||
|
"crawler detect",
|
||||||
|
"crawler detector",
|
||||||
|
"crawlerdetect",
|
||||||
|
"php crawler detect"
|
||||||
|
],
|
||||||
|
"time": "2019-04-05T19:52:02+00:00"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"packages-dev": [],
|
||||||
|
"aliases": [],
|
||||||
|
"minimum-stability": "stable",
|
||||||
|
"stability-flags": [],
|
||||||
|
"prefer-stable": false,
|
||||||
|
"prefer-lowest": false,
|
||||||
|
"platform": {
|
||||||
|
"php": ">=5.6.0"
|
||||||
|
},
|
||||||
|
"platform-dev": []
|
||||||
|
}
|
||||||
7
blockbot/vendor/autoload.php
vendored
Normal file
7
blockbot/vendor/autoload.php
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// autoload.php @generated by Composer
|
||||||
|
|
||||||
|
require_once __DIR__ . '/composer/autoload_real.php';
|
||||||
|
|
||||||
|
return ComposerAutoloaderInitBlockBotAddon::getLoader();
|
||||||
445
blockbot/vendor/composer/ClassLoader.php
vendored
Normal file
445
blockbot/vendor/composer/ClassLoader.php
vendored
Normal file
|
|
@ -0,0 +1,445 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of Composer.
|
||||||
|
*
|
||||||
|
* (c) Nils Adermann <naderman@naderman.de>
|
||||||
|
* Jordi Boggiano <j.boggiano@seld.be>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Composer\Autoload;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
|
||||||
|
*
|
||||||
|
* $loader = new \Composer\Autoload\ClassLoader();
|
||||||
|
*
|
||||||
|
* // register classes with namespaces
|
||||||
|
* $loader->add('Symfony\Component', __DIR__.'/component');
|
||||||
|
* $loader->add('Symfony', __DIR__.'/framework');
|
||||||
|
*
|
||||||
|
* // activate the autoloader
|
||||||
|
* $loader->register();
|
||||||
|
*
|
||||||
|
* // to enable searching the include path (eg. for PEAR packages)
|
||||||
|
* $loader->setUseIncludePath(true);
|
||||||
|
*
|
||||||
|
* In this example, if you try to use a class in the Symfony\Component
|
||||||
|
* namespace or one of its children (Symfony\Component\Console for instance),
|
||||||
|
* the autoloader will first look for the class under the component/
|
||||||
|
* directory, and it will then fallback to the framework/ directory if not
|
||||||
|
* found before giving up.
|
||||||
|
*
|
||||||
|
* This class is loosely based on the Symfony UniversalClassLoader.
|
||||||
|
*
|
||||||
|
* @author Fabien Potencier <fabien@symfony.com>
|
||||||
|
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||||
|
* @see http://www.php-fig.org/psr/psr-0/
|
||||||
|
* @see http://www.php-fig.org/psr/psr-4/
|
||||||
|
*/
|
||||||
|
class ClassLoader
|
||||||
|
{
|
||||||
|
// PSR-4
|
||||||
|
private $prefixLengthsPsr4 = array();
|
||||||
|
private $prefixDirsPsr4 = array();
|
||||||
|
private $fallbackDirsPsr4 = array();
|
||||||
|
|
||||||
|
// PSR-0
|
||||||
|
private $prefixesPsr0 = array();
|
||||||
|
private $fallbackDirsPsr0 = array();
|
||||||
|
|
||||||
|
private $useIncludePath = false;
|
||||||
|
private $classMap = array();
|
||||||
|
private $classMapAuthoritative = false;
|
||||||
|
private $missingClasses = array();
|
||||||
|
private $apcuPrefix;
|
||||||
|
|
||||||
|
public function getPrefixes()
|
||||||
|
{
|
||||||
|
if (!empty($this->prefixesPsr0)) {
|
||||||
|
return call_user_func_array('array_merge', $this->prefixesPsr0);
|
||||||
|
}
|
||||||
|
|
||||||
|
return array();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getPrefixesPsr4()
|
||||||
|
{
|
||||||
|
return $this->prefixDirsPsr4;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getFallbackDirs()
|
||||||
|
{
|
||||||
|
return $this->fallbackDirsPsr0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getFallbackDirsPsr4()
|
||||||
|
{
|
||||||
|
return $this->fallbackDirsPsr4;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getClassMap()
|
||||||
|
{
|
||||||
|
return $this->classMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array $classMap Class to filename map
|
||||||
|
*/
|
||||||
|
public function addClassMap(array $classMap)
|
||||||
|
{
|
||||||
|
if ($this->classMap) {
|
||||||
|
$this->classMap = array_merge($this->classMap, $classMap);
|
||||||
|
} else {
|
||||||
|
$this->classMap = $classMap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers a set of PSR-0 directories for a given prefix, either
|
||||||
|
* appending or prepending to the ones previously set for this prefix.
|
||||||
|
*
|
||||||
|
* @param string $prefix The prefix
|
||||||
|
* @param array|string $paths The PSR-0 root directories
|
||||||
|
* @param bool $prepend Whether to prepend the directories
|
||||||
|
*/
|
||||||
|
public function add($prefix, $paths, $prepend = false)
|
||||||
|
{
|
||||||
|
if (!$prefix) {
|
||||||
|
if ($prepend) {
|
||||||
|
$this->fallbackDirsPsr0 = array_merge(
|
||||||
|
(array) $paths,
|
||||||
|
$this->fallbackDirsPsr0
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$this->fallbackDirsPsr0 = array_merge(
|
||||||
|
$this->fallbackDirsPsr0,
|
||||||
|
(array) $paths
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$first = $prefix[0];
|
||||||
|
if (!isset($this->prefixesPsr0[$first][$prefix])) {
|
||||||
|
$this->prefixesPsr0[$first][$prefix] = (array) $paths;
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ($prepend) {
|
||||||
|
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
||||||
|
(array) $paths,
|
||||||
|
$this->prefixesPsr0[$first][$prefix]
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
||||||
|
$this->prefixesPsr0[$first][$prefix],
|
||||||
|
(array) $paths
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers a set of PSR-4 directories for a given namespace, either
|
||||||
|
* appending or prepending to the ones previously set for this namespace.
|
||||||
|
*
|
||||||
|
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||||
|
* @param array|string $paths The PSR-4 base directories
|
||||||
|
* @param bool $prepend Whether to prepend the directories
|
||||||
|
*
|
||||||
|
* @throws \InvalidArgumentException
|
||||||
|
*/
|
||||||
|
public function addPsr4($prefix, $paths, $prepend = false)
|
||||||
|
{
|
||||||
|
if (!$prefix) {
|
||||||
|
// Register directories for the root namespace.
|
||||||
|
if ($prepend) {
|
||||||
|
$this->fallbackDirsPsr4 = array_merge(
|
||||||
|
(array) $paths,
|
||||||
|
$this->fallbackDirsPsr4
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$this->fallbackDirsPsr4 = array_merge(
|
||||||
|
$this->fallbackDirsPsr4,
|
||||||
|
(array) $paths
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} elseif (!isset($this->prefixDirsPsr4[$prefix])) {
|
||||||
|
// Register directories for a new namespace.
|
||||||
|
$length = strlen($prefix);
|
||||||
|
if ('\\' !== $prefix[$length - 1]) {
|
||||||
|
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
||||||
|
}
|
||||||
|
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
||||||
|
$this->prefixDirsPsr4[$prefix] = (array) $paths;
|
||||||
|
} elseif ($prepend) {
|
||||||
|
// Prepend directories for an already registered namespace.
|
||||||
|
$this->prefixDirsPsr4[$prefix] = array_merge(
|
||||||
|
(array) $paths,
|
||||||
|
$this->prefixDirsPsr4[$prefix]
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
// Append directories for an already registered namespace.
|
||||||
|
$this->prefixDirsPsr4[$prefix] = array_merge(
|
||||||
|
$this->prefixDirsPsr4[$prefix],
|
||||||
|
(array) $paths
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers a set of PSR-0 directories for a given prefix,
|
||||||
|
* replacing any others previously set for this prefix.
|
||||||
|
*
|
||||||
|
* @param string $prefix The prefix
|
||||||
|
* @param array|string $paths The PSR-0 base directories
|
||||||
|
*/
|
||||||
|
public function set($prefix, $paths)
|
||||||
|
{
|
||||||
|
if (!$prefix) {
|
||||||
|
$this->fallbackDirsPsr0 = (array) $paths;
|
||||||
|
} else {
|
||||||
|
$this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers a set of PSR-4 directories for a given namespace,
|
||||||
|
* replacing any others previously set for this namespace.
|
||||||
|
*
|
||||||
|
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||||
|
* @param array|string $paths The PSR-4 base directories
|
||||||
|
*
|
||||||
|
* @throws \InvalidArgumentException
|
||||||
|
*/
|
||||||
|
public function setPsr4($prefix, $paths)
|
||||||
|
{
|
||||||
|
if (!$prefix) {
|
||||||
|
$this->fallbackDirsPsr4 = (array) $paths;
|
||||||
|
} else {
|
||||||
|
$length = strlen($prefix);
|
||||||
|
if ('\\' !== $prefix[$length - 1]) {
|
||||||
|
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
||||||
|
}
|
||||||
|
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
||||||
|
$this->prefixDirsPsr4[$prefix] = (array) $paths;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Turns on searching the include path for class files.
|
||||||
|
*
|
||||||
|
* @param bool $useIncludePath
|
||||||
|
*/
|
||||||
|
public function setUseIncludePath($useIncludePath)
|
||||||
|
{
|
||||||
|
$this->useIncludePath = $useIncludePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Can be used to check if the autoloader uses the include path to check
|
||||||
|
* for classes.
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function getUseIncludePath()
|
||||||
|
{
|
||||||
|
return $this->useIncludePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Turns off searching the prefix and fallback directories for classes
|
||||||
|
* that have not been registered with the class map.
|
||||||
|
*
|
||||||
|
* @param bool $classMapAuthoritative
|
||||||
|
*/
|
||||||
|
public function setClassMapAuthoritative($classMapAuthoritative)
|
||||||
|
{
|
||||||
|
$this->classMapAuthoritative = $classMapAuthoritative;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Should class lookup fail if not found in the current class map?
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function isClassMapAuthoritative()
|
||||||
|
{
|
||||||
|
return $this->classMapAuthoritative;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* APCu prefix to use to cache found/not-found classes, if the extension is enabled.
|
||||||
|
*
|
||||||
|
* @param string|null $apcuPrefix
|
||||||
|
*/
|
||||||
|
public function setApcuPrefix($apcuPrefix)
|
||||||
|
{
|
||||||
|
$this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The APCu prefix in use, or null if APCu caching is not enabled.
|
||||||
|
*
|
||||||
|
* @return string|null
|
||||||
|
*/
|
||||||
|
public function getApcuPrefix()
|
||||||
|
{
|
||||||
|
return $this->apcuPrefix;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers this instance as an autoloader.
|
||||||
|
*
|
||||||
|
* @param bool $prepend Whether to prepend the autoloader or not
|
||||||
|
*/
|
||||||
|
public function register($prepend = false)
|
||||||
|
{
|
||||||
|
spl_autoload_register(array($this, 'loadClass'), true, $prepend);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unregisters this instance as an autoloader.
|
||||||
|
*/
|
||||||
|
public function unregister()
|
||||||
|
{
|
||||||
|
spl_autoload_unregister(array($this, 'loadClass'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads the given class or interface.
|
||||||
|
*
|
||||||
|
* @param string $class The name of the class
|
||||||
|
* @return bool|null True if loaded, null otherwise
|
||||||
|
*/
|
||||||
|
public function loadClass($class)
|
||||||
|
{
|
||||||
|
if ($file = $this->findFile($class)) {
|
||||||
|
includeFile($file);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Finds the path to the file where the class is defined.
|
||||||
|
*
|
||||||
|
* @param string $class The name of the class
|
||||||
|
*
|
||||||
|
* @return string|false The path if found, false otherwise
|
||||||
|
*/
|
||||||
|
public function findFile($class)
|
||||||
|
{
|
||||||
|
// class map lookup
|
||||||
|
if (isset($this->classMap[$class])) {
|
||||||
|
return $this->classMap[$class];
|
||||||
|
}
|
||||||
|
if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (null !== $this->apcuPrefix) {
|
||||||
|
$file = apcu_fetch($this->apcuPrefix.$class, $hit);
|
||||||
|
if ($hit) {
|
||||||
|
return $file;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$file = $this->findFileWithExtension($class, '.php');
|
||||||
|
|
||||||
|
// Search for Hack files if we are running on HHVM
|
||||||
|
if (false === $file && defined('HHVM_VERSION')) {
|
||||||
|
$file = $this->findFileWithExtension($class, '.hh');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (null !== $this->apcuPrefix) {
|
||||||
|
apcu_add($this->apcuPrefix.$class, $file);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (false === $file) {
|
||||||
|
// Remember that this class does not exist.
|
||||||
|
$this->missingClasses[$class] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $file;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function findFileWithExtension($class, $ext)
|
||||||
|
{
|
||||||
|
// PSR-4 lookup
|
||||||
|
$logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
|
||||||
|
|
||||||
|
$first = $class[0];
|
||||||
|
if (isset($this->prefixLengthsPsr4[$first])) {
|
||||||
|
$subPath = $class;
|
||||||
|
while (false !== $lastPos = strrpos($subPath, '\\')) {
|
||||||
|
$subPath = substr($subPath, 0, $lastPos);
|
||||||
|
$search = $subPath . '\\';
|
||||||
|
if (isset($this->prefixDirsPsr4[$search])) {
|
||||||
|
$pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
|
||||||
|
foreach ($this->prefixDirsPsr4[$search] as $dir) {
|
||||||
|
if (file_exists($file = $dir . $pathEnd)) {
|
||||||
|
return $file;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// PSR-4 fallback dirs
|
||||||
|
foreach ($this->fallbackDirsPsr4 as $dir) {
|
||||||
|
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
|
||||||
|
return $file;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// PSR-0 lookup
|
||||||
|
if (false !== $pos = strrpos($class, '\\')) {
|
||||||
|
// namespaced class name
|
||||||
|
$logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
|
||||||
|
. strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
|
||||||
|
} else {
|
||||||
|
// PEAR-like class name
|
||||||
|
$logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($this->prefixesPsr0[$first])) {
|
||||||
|
foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
|
||||||
|
if (0 === strpos($class, $prefix)) {
|
||||||
|
foreach ($dirs as $dir) {
|
||||||
|
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
||||||
|
return $file;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// PSR-0 fallback dirs
|
||||||
|
foreach ($this->fallbackDirsPsr0 as $dir) {
|
||||||
|
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
||||||
|
return $file;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// PSR-0 include paths.
|
||||||
|
if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
|
||||||
|
return $file;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Scope isolated include.
|
||||||
|
*
|
||||||
|
* Prevents access to $this/self from included files.
|
||||||
|
*/
|
||||||
|
function includeFile($file)
|
||||||
|
{
|
||||||
|
include $file;
|
||||||
|
}
|
||||||
21
blockbot/vendor/composer/LICENSE
vendored
Normal file
21
blockbot/vendor/composer/LICENSE
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
|
||||||
|
Copyright (c) Nils Adermann, Jordi Boggiano
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is furnished
|
||||||
|
to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
||||||
|
|
||||||
14
blockbot/vendor/composer/autoload_classmap.php
vendored
Normal file
14
blockbot/vendor/composer/autoload_classmap.php
vendored
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// autoload_classmap.php @generated by Composer
|
||||||
|
|
||||||
|
$vendorDir = dirname(dirname(__FILE__));
|
||||||
|
$baseDir = dirname($vendorDir);
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'Jaybizzle\\CrawlerDetect\\CrawlerDetect' => $vendorDir . '/jaybizzle/crawler-detect/src/CrawlerDetect.php',
|
||||||
|
'Jaybizzle\\CrawlerDetect\\Fixtures\\AbstractProvider' => $vendorDir . '/jaybizzle/crawler-detect/src/Fixtures/AbstractProvider.php',
|
||||||
|
'Jaybizzle\\CrawlerDetect\\Fixtures\\Crawlers' => $vendorDir . '/jaybizzle/crawler-detect/src/Fixtures/Crawlers.php',
|
||||||
|
'Jaybizzle\\CrawlerDetect\\Fixtures\\Exclusions' => $vendorDir . '/jaybizzle/crawler-detect/src/Fixtures/Exclusions.php',
|
||||||
|
'Jaybizzle\\CrawlerDetect\\Fixtures\\Headers' => $vendorDir . '/jaybizzle/crawler-detect/src/Fixtures/Headers.php',
|
||||||
|
);
|
||||||
9
blockbot/vendor/composer/autoload_namespaces.php
vendored
Normal file
9
blockbot/vendor/composer/autoload_namespaces.php
vendored
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// autoload_namespaces.php @generated by Composer
|
||||||
|
|
||||||
|
$vendorDir = dirname(dirname(__FILE__));
|
||||||
|
$baseDir = dirname($vendorDir);
|
||||||
|
|
||||||
|
return array(
|
||||||
|
);
|
||||||
10
blockbot/vendor/composer/autoload_psr4.php
vendored
Normal file
10
blockbot/vendor/composer/autoload_psr4.php
vendored
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// autoload_psr4.php @generated by Composer
|
||||||
|
|
||||||
|
$vendorDir = dirname(dirname(__FILE__));
|
||||||
|
$baseDir = dirname($vendorDir);
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'Jaybizzle\\CrawlerDetect\\' => array($vendorDir . '/jaybizzle/crawler-detect/src'),
|
||||||
|
);
|
||||||
52
blockbot/vendor/composer/autoload_real.php
vendored
Normal file
52
blockbot/vendor/composer/autoload_real.php
vendored
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// autoload_real.php @generated by Composer
|
||||||
|
|
||||||
|
class ComposerAutoloaderInitBlockBotAddon
|
||||||
|
{
|
||||||
|
private static $loader;
|
||||||
|
|
||||||
|
public static function loadClassLoader($class)
|
||||||
|
{
|
||||||
|
if ('Composer\Autoload\ClassLoader' === $class) {
|
||||||
|
require __DIR__ . '/ClassLoader.php';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getLoader()
|
||||||
|
{
|
||||||
|
if (null !== self::$loader) {
|
||||||
|
return self::$loader;
|
||||||
|
}
|
||||||
|
|
||||||
|
spl_autoload_register(array('ComposerAutoloaderInitBlockBotAddon', 'loadClassLoader'), true, true);
|
||||||
|
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
||||||
|
spl_autoload_unregister(array('ComposerAutoloaderInitBlockBotAddon', 'loadClassLoader'));
|
||||||
|
|
||||||
|
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
||||||
|
if ($useStaticLoader) {
|
||||||
|
require_once __DIR__ . '/autoload_static.php';
|
||||||
|
|
||||||
|
call_user_func(\Composer\Autoload\ComposerStaticInitBlockBotAddon::getInitializer($loader));
|
||||||
|
} else {
|
||||||
|
$map = require __DIR__ . '/autoload_namespaces.php';
|
||||||
|
foreach ($map as $namespace => $path) {
|
||||||
|
$loader->set($namespace, $path);
|
||||||
|
}
|
||||||
|
|
||||||
|
$map = require __DIR__ . '/autoload_psr4.php';
|
||||||
|
foreach ($map as $namespace => $path) {
|
||||||
|
$loader->setPsr4($namespace, $path);
|
||||||
|
}
|
||||||
|
|
||||||
|
$classMap = require __DIR__ . '/autoload_classmap.php';
|
||||||
|
if ($classMap) {
|
||||||
|
$loader->addClassMap($classMap);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$loader->register(true);
|
||||||
|
|
||||||
|
return $loader;
|
||||||
|
}
|
||||||
|
}
|
||||||
40
blockbot/vendor/composer/autoload_static.php
vendored
Normal file
40
blockbot/vendor/composer/autoload_static.php
vendored
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// autoload_static.php @generated by Composer
|
||||||
|
|
||||||
|
namespace Composer\Autoload;
|
||||||
|
|
||||||
|
class ComposerStaticInitBlockBotAddon
|
||||||
|
{
|
||||||
|
public static $prefixLengthsPsr4 = array (
|
||||||
|
'J' =>
|
||||||
|
array (
|
||||||
|
'Jaybizzle\\CrawlerDetect\\' => 24,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
public static $prefixDirsPsr4 = array (
|
||||||
|
'Jaybizzle\\CrawlerDetect\\' =>
|
||||||
|
array (
|
||||||
|
0 => __DIR__ . '/..' . '/jaybizzle/crawler-detect/src',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
public static $classMap = array (
|
||||||
|
'Jaybizzle\\CrawlerDetect\\CrawlerDetect' => __DIR__ . '/..' . '/jaybizzle/crawler-detect/src/CrawlerDetect.php',
|
||||||
|
'Jaybizzle\\CrawlerDetect\\Fixtures\\AbstractProvider' => __DIR__ . '/..' . '/jaybizzle/crawler-detect/src/Fixtures/AbstractProvider.php',
|
||||||
|
'Jaybizzle\\CrawlerDetect\\Fixtures\\Crawlers' => __DIR__ . '/..' . '/jaybizzle/crawler-detect/src/Fixtures/Crawlers.php',
|
||||||
|
'Jaybizzle\\CrawlerDetect\\Fixtures\\Exclusions' => __DIR__ . '/..' . '/jaybizzle/crawler-detect/src/Fixtures/Exclusions.php',
|
||||||
|
'Jaybizzle\\CrawlerDetect\\Fixtures\\Headers' => __DIR__ . '/..' . '/jaybizzle/crawler-detect/src/Fixtures/Headers.php',
|
||||||
|
);
|
||||||
|
|
||||||
|
public static function getInitializer(ClassLoader $loader)
|
||||||
|
{
|
||||||
|
return \Closure::bind(function () use ($loader) {
|
||||||
|
$loader->prefixLengthsPsr4 = ComposerStaticInitBlockBotAddon::$prefixLengthsPsr4;
|
||||||
|
$loader->prefixDirsPsr4 = ComposerStaticInitBlockBotAddon::$prefixDirsPsr4;
|
||||||
|
$loader->classMap = ComposerStaticInitBlockBotAddon::$classMap;
|
||||||
|
|
||||||
|
}, null, ClassLoader::class);
|
||||||
|
}
|
||||||
|
}
|
||||||
53
blockbot/vendor/composer/installed.json
vendored
Normal file
53
blockbot/vendor/composer/installed.json
vendored
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "jaybizzle/crawler-detect",
|
||||||
|
"version": "v1.2.80",
|
||||||
|
"version_normalized": "1.2.80.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/JayBizzle/Crawler-Detect.git",
|
||||||
|
"reference": "af6a36e6d69670df3f0a3ed8e21d4b8cc67a7847"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/JayBizzle/Crawler-Detect/zipball/af6a36e6d69670df3f0a3ed8e21d4b8cc67a7847",
|
||||||
|
"reference": "af6a36e6d69670df3f0a3ed8e21d4b8cc67a7847",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.3.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^4.8|^5.5|^6.5",
|
||||||
|
"satooshi/php-coveralls": "1.*"
|
||||||
|
},
|
||||||
|
"time": "2019-04-05T19:52:02+00:00",
|
||||||
|
"type": "library",
|
||||||
|
"installation-source": "dist",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Jaybizzle\\CrawlerDetect\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Mark Beech",
|
||||||
|
"email": "m@rkbee.ch",
|
||||||
|
"role": "Developer"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "CrawlerDetect is a PHP class for detecting bots/crawlers/spiders via the user agent",
|
||||||
|
"homepage": "https://github.com/JayBizzle/Crawler-Detect/",
|
||||||
|
"keywords": [
|
||||||
|
"crawler",
|
||||||
|
"crawler detect",
|
||||||
|
"crawler detector",
|
||||||
|
"crawlerdetect",
|
||||||
|
"php crawler detect"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
22
blockbot/vendor/jaybizzle/crawler-detect/LICENSE
vendored
Normal file
22
blockbot/vendor/jaybizzle/crawler-detect/LICENSE
vendored
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2015-2018 Mark Beech
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
||||||
72
blockbot/vendor/jaybizzle/crawler-detect/README.md
vendored
Normal file
72
blockbot/vendor/jaybizzle/crawler-detect/README.md
vendored
Normal file
|
|
@ -0,0 +1,72 @@
|
||||||
|
<p align="center"><a href="http://crawlerdetect.io/" target="_blank"><img src="https://cloud.githubusercontent.com/assets/340752/23082173/1bd1a396-f550-11e6-8aba-4d3c75edea2f.png" width="321" height="219" /></a><br><br>
|
||||||
|
<a href="http://crawlerdetect.io/" target="_blank">crawlerdetect.io</a>
|
||||||
|
<br><br>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<a href="https://travis-ci.org/JayBizzle/Crawler-Detect"><img src="https://img.shields.io/travis/JayBizzle/Crawler-Detect/master.svg?style=flat-square" /></a>
|
||||||
|
<a href="https://packagist.org/packages/jaybizzle/crawler-detect"><img src="https://img.shields.io/packagist/dm/JayBizzle/Crawler-Detect.svg?style=flat-square" /></a>
|
||||||
|
<a href="https://scrutinizer-ci.com/g/JayBizzle/Crawler-Detect/?branch=master"><img src="https://img.shields.io/scrutinizer/g/JayBizzle/Crawler-Detect.svg?style=flat-square" /></a>
|
||||||
|
<a href="https://github.com/JayBizzle/Crawler-Detect"><img src="https://img.shields.io/badge/license-MIT-ff69b4.svg?style=flat-square" /></a>
|
||||||
|
<a href="https://packagist.org/packages/jaybizzle/crawler-detect"><img src="https://img.shields.io/packagist/v/jaybizzle/Crawler-Detect.svg?style=flat-square" /></a>
|
||||||
|
<a href="https://styleci.io/repos/32755917"><img src="https://styleci.io/repos/32755917/shield" /></a>
|
||||||
|
<a href="https://coveralls.io/github/JayBizzle/Crawler-Detect"><img src="https://img.shields.io/coveralls/JayBizzle/Crawler-Detect/master.svg?style=flat-square" /></a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
## About CrawlerDetect
|
||||||
|
|
||||||
|
CrawlerDetect is a PHP class for detecting bots/crawlers/spiders via the user agent and http_from header. Currently able to detect 1,000's of bots/spiders/crawlers.
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
Run `composer require jaybizzle/crawler-detect 1.*` or add `"jaybizzle/crawler-detect" :"1.*"` to your `composer.json`.
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
```PHP
|
||||||
|
use Jaybizzle\CrawlerDetect\CrawlerDetect;
|
||||||
|
|
||||||
|
$CrawlerDetect = new CrawlerDetect;
|
||||||
|
|
||||||
|
// Check the user agent of the current 'visitor'
|
||||||
|
if($CrawlerDetect->isCrawler()) {
|
||||||
|
// true if crawler user agent detected
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pass a user agent as a string
|
||||||
|
if($CrawlerDetect->isCrawler('Mozilla/5.0 (compatible; Sosospider/2.0; +http://help.soso.com/webspider.htm)')) {
|
||||||
|
// true if crawler user agent detected
|
||||||
|
}
|
||||||
|
|
||||||
|
// Output the name of the bot that matched (if any)
|
||||||
|
echo $CrawlerDetect->getMatches();
|
||||||
|
```
|
||||||
|
|
||||||
|
### Contributing
|
||||||
|
If you find a bot/spider/crawler user agent that CrawlerDetect fails to detect, please submit a pull request with the regex pattern added to the `$data` array in `Fixtures/Crawlers.php` and add the failing user agent to `tests/crawlers.txt`.
|
||||||
|
|
||||||
|
Failing that, just create an issue with the user agent you have found, and we'll take it from there :)
|
||||||
|
|
||||||
|
### Laravel Package
|
||||||
|
If you would like to use this with Laravel 4/5, please see [Laravel-Crawler-Detect](https://github.com/JayBizzle/Laravel-Crawler-Detect)
|
||||||
|
|
||||||
|
### Symfony Bundle
|
||||||
|
To use this library with Symfony 2/3/4, check out the [CrawlerDetectBundle](https://github.com/nicolasmure/CrawlerDetectBundle).
|
||||||
|
|
||||||
|
### YII2 Extension
|
||||||
|
To use this library with the YII2 framework, check out [yii2-crawler-detect](https://github.com/AlikDex/yii2-crawler-detect).
|
||||||
|
|
||||||
|
### ES6 Library
|
||||||
|
To use this library with NodeJS or any ES6 application based, check out [es6-crawler-detect](https://github.com/JefferyHus/es6-crawler-detect).
|
||||||
|
|
||||||
|
### .NET Library
|
||||||
|
To use this library in a .net standard (including .net core) based project, check out [NetCrawlerDetect](https://github.com/gplumb/NetCrawlerDetect).
|
||||||
|
|
||||||
|
### Nette Extension
|
||||||
|
To use this library with the Nette framework, checkout [NetteCrawlerDetect](https://github.com/JanGalek/Crawler-Detect).
|
||||||
|
|
||||||
|
### Ruby Gem
|
||||||
|
|
||||||
|
To use this library with Ruby on Rails or any Ruby-based application, check out [crawler_detect](https://github.com/loadkpi/crawler_detect) gem.
|
||||||
|
|
||||||
|
_Parts of this class are based on the brilliant [MobileDetect](https://github.com/serbanghita/Mobile-Detect)_
|
||||||
|
|
||||||
|
[](https://github.com/JayBizzle/Crawler-Detect)
|
||||||
30
blockbot/vendor/jaybizzle/crawler-detect/composer.json
vendored
Executable file
30
blockbot/vendor/jaybizzle/crawler-detect/composer.json
vendored
Executable file
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"name": "jaybizzle/crawler-detect",
|
||||||
|
"type": "library",
|
||||||
|
"description": "CrawlerDetect is a PHP class for detecting bots/crawlers/spiders via the user agent",
|
||||||
|
"keywords": ["crawler", "crawler detect", "crawler detector", "crawlerdetect", "php crawler detect"],
|
||||||
|
"homepage": "https://github.com/JayBizzle/Crawler-Detect/",
|
||||||
|
"license": "MIT",
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Mark Beech",
|
||||||
|
"email": "m@rkbee.ch",
|
||||||
|
"role": "Developer"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.3.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^4.8|^5.5|^6.5",
|
||||||
|
"satooshi/php-coveralls": "1.*"
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Jaybizzle\\CrawlerDetect\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"test": "vendor/bin/phpunit"
|
||||||
|
}
|
||||||
|
}
|
||||||
41
blockbot/vendor/jaybizzle/crawler-detect/export.php
vendored
Normal file
41
blockbot/vendor/jaybizzle/crawler-detect/export.php
vendored
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
<?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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
require 'src/Fixtures/AbstractProvider.php';
|
||||||
|
require 'src/Fixtures/Crawlers.php';
|
||||||
|
require 'src/Fixtures/Exclusions.php';
|
||||||
|
require 'src/Fixtures/Headers.php';
|
||||||
|
|
||||||
|
$src = array(
|
||||||
|
'Crawlers',
|
||||||
|
'Exclusions',
|
||||||
|
'Headers',
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach ($src as $class) {
|
||||||
|
$class = "Jaybizzle\\CrawlerDetect\\Fixtures\\$class";
|
||||||
|
$object = new $class;
|
||||||
|
|
||||||
|
outputJson($object);
|
||||||
|
outputTxt($object);
|
||||||
|
}
|
||||||
|
|
||||||
|
function outputJson($object)
|
||||||
|
{
|
||||||
|
$className = (new ReflectionClass($object))->getShortName();
|
||||||
|
file_put_contents("raw/$className.json", json_encode($object->getAll()));
|
||||||
|
}
|
||||||
|
|
||||||
|
function outputTxt($object)
|
||||||
|
{
|
||||||
|
$className = (new ReflectionClass($object))->getShortName();
|
||||||
|
file_put_contents("raw/$className.txt", implode($object->getAll(), PHP_EOL));
|
||||||
|
}
|
||||||
1
blockbot/vendor/jaybizzle/crawler-detect/raw/Crawlers.json
vendored
Normal file
1
blockbot/vendor/jaybizzle/crawler-detect/raw/Crawlers.json
vendored
Normal file
File diff suppressed because one or more lines are too long
1217
blockbot/vendor/jaybizzle/crawler-detect/raw/Crawlers.txt
vendored
Normal file
1217
blockbot/vendor/jaybizzle/crawler-detect/raw/Crawlers.txt
vendored
Normal file
|
|
@ -0,0 +1,1217 @@
|
||||||
|
.*Java.*outbrain
|
||||||
|
YLT
|
||||||
|
^b0t$
|
||||||
|
^bluefish
|
||||||
|
^Calypso v\/
|
||||||
|
^COMODO DCV
|
||||||
|
^DangDang
|
||||||
|
^DavClnt
|
||||||
|
^FDM
|
||||||
|
^git\/
|
||||||
|
^Goose\/
|
||||||
|
^Grabber
|
||||||
|
^HTTPClient\/
|
||||||
|
^Java\/
|
||||||
|
^Jeode\/
|
||||||
|
^Jetty\/
|
||||||
|
^Mail\/
|
||||||
|
^Mget
|
||||||
|
^Microsoft URL Control
|
||||||
|
^NG\/[0-9\.]
|
||||||
|
^NING\/
|
||||||
|
^PHP\/[0-9]
|
||||||
|
^RMA\/
|
||||||
|
^Ruby|Ruby\/[0-9]
|
||||||
|
^VSE\/[0-9]
|
||||||
|
^WordPress\.com
|
||||||
|
^XRL\/[0-9]
|
||||||
|
^ZmEu
|
||||||
|
008\/
|
||||||
|
13TABS
|
||||||
|
192\.comAgent
|
||||||
|
2ip\.ru
|
||||||
|
404enemy
|
||||||
|
7Siters
|
||||||
|
80legs
|
||||||
|
a\.pr-cy\.ru
|
||||||
|
a3logics\.in
|
||||||
|
A6-Indexer
|
||||||
|
Abonti
|
||||||
|
Aboundex
|
||||||
|
aboutthedomain
|
||||||
|
Accoona-AI-Agent
|
||||||
|
acoon
|
||||||
|
acrylicapps\.com\/pulp
|
||||||
|
Acunetix
|
||||||
|
AdAuth\/
|
||||||
|
adbeat
|
||||||
|
AddThis
|
||||||
|
ADmantX
|
||||||
|
AdminLabs
|
||||||
|
adressendeutschland
|
||||||
|
adscanner
|
||||||
|
Adstxtaggregator
|
||||||
|
agentslug
|
||||||
|
AHC
|
||||||
|
aihit
|
||||||
|
aiohttp\/
|
||||||
|
Airmail
|
||||||
|
akka-http\/
|
||||||
|
akula\/
|
||||||
|
alertra
|
||||||
|
alexa site audit
|
||||||
|
Alibaba\.Security\.Heimdall
|
||||||
|
Alligator
|
||||||
|
allloadin
|
||||||
|
AllSubmitter
|
||||||
|
alyze\.info
|
||||||
|
amagit
|
||||||
|
Anarchie
|
||||||
|
AndroidDownloadManager
|
||||||
|
Anemone
|
||||||
|
AngleSharp
|
||||||
|
annotate_google
|
||||||
|
Ant\.com
|
||||||
|
Anturis Agent
|
||||||
|
AnyEvent-HTTP\/
|
||||||
|
Apache Droid
|
||||||
|
Apache OpenOffice
|
||||||
|
Apache-HttpAsyncClient
|
||||||
|
Apache-HttpClient
|
||||||
|
ApacheBench
|
||||||
|
Apexoo
|
||||||
|
APIs-Google
|
||||||
|
AportWorm\/
|
||||||
|
AppBeat\/
|
||||||
|
AppEngine-Google
|
||||||
|
AppStoreScraperZ
|
||||||
|
Aprc\/[0-9]
|
||||||
|
Arachmo
|
||||||
|
arachnode
|
||||||
|
Arachnophilia
|
||||||
|
aria2
|
||||||
|
Arukereso
|
||||||
|
asafaweb
|
||||||
|
AskQuickly
|
||||||
|
Ask Jeeves
|
||||||
|
ASPSeek
|
||||||
|
Asterias
|
||||||
|
Astute
|
||||||
|
asynchttp
|
||||||
|
Attach
|
||||||
|
autocite
|
||||||
|
Autonomy
|
||||||
|
axios\/
|
||||||
|
B-l-i-t-z-B-O-T
|
||||||
|
Backlink-Ceck
|
||||||
|
backlink-check
|
||||||
|
BacklinkHttpStatus
|
||||||
|
BackStreet
|
||||||
|
BackWeb
|
||||||
|
Bad-Neighborhood
|
||||||
|
Badass
|
||||||
|
baidu\.com
|
||||||
|
Bandit
|
||||||
|
basicstate
|
||||||
|
BatchFTP
|
||||||
|
Battleztar Bazinga
|
||||||
|
baypup\/
|
||||||
|
BazQux
|
||||||
|
BBBike
|
||||||
|
BCKLINKS
|
||||||
|
BDFetch
|
||||||
|
BegunAdvertising
|
||||||
|
Bidtellect
|
||||||
|
BigBozz
|
||||||
|
Bigfoot
|
||||||
|
biglotron
|
||||||
|
BingLocalSearch
|
||||||
|
BingPreview
|
||||||
|
binlar
|
||||||
|
biNu image cacher
|
||||||
|
Bitacle
|
||||||
|
biz_Directory
|
||||||
|
Black Hole
|
||||||
|
Blackboard Safeassign
|
||||||
|
BlackWidow
|
||||||
|
BlockNote\.Net
|
||||||
|
Bloglines
|
||||||
|
Bloglovin
|
||||||
|
BlogPulseLive
|
||||||
|
BlogSearch
|
||||||
|
Blogtrottr
|
||||||
|
BlowFish
|
||||||
|
boitho\.com-dc
|
||||||
|
BPImageWalker
|
||||||
|
Braintree-Webhooks
|
||||||
|
Branch Metrics API
|
||||||
|
Branch-Passthrough
|
||||||
|
Brandprotect
|
||||||
|
BrandVerity
|
||||||
|
Brandwatch
|
||||||
|
Brodie\/
|
||||||
|
Browsershots
|
||||||
|
BUbiNG
|
||||||
|
Buck\/
|
||||||
|
Buddy
|
||||||
|
BuiltWith
|
||||||
|
Bullseye
|
||||||
|
BunnySlippers
|
||||||
|
Burf Search
|
||||||
|
Butterfly\/
|
||||||
|
BuzzSumo
|
||||||
|
CAAM\/[0-9]
|
||||||
|
CakePHP
|
||||||
|
Calculon
|
||||||
|
Canary%20Mail
|
||||||
|
CaretNail
|
||||||
|
catexplorador
|
||||||
|
CC Metadata Scaper
|
||||||
|
Cegbfeieh
|
||||||
|
censys
|
||||||
|
Cerberian Drtrs
|
||||||
|
CERT\.at-Statistics-Survey
|
||||||
|
cg-eye
|
||||||
|
changedetection
|
||||||
|
ChangesMeter
|
||||||
|
Charlotte
|
||||||
|
CheckHost
|
||||||
|
checkprivacy
|
||||||
|
CherryPicker
|
||||||
|
ChinaClaw
|
||||||
|
Chirp\/
|
||||||
|
chkme\.com
|
||||||
|
Chlooe
|
||||||
|
Chromaxa
|
||||||
|
CirrusExplorer
|
||||||
|
CISPA Vulnerability Notification
|
||||||
|
Citoid
|
||||||
|
CJNetworkQuality
|
||||||
|
Clarsentia
|
||||||
|
clips\.ua\.ac\.be
|
||||||
|
Cloud mapping
|
||||||
|
CloudEndure
|
||||||
|
CloudFlare-AlwaysOnline
|
||||||
|
Cloudinary
|
||||||
|
cmcm\.com
|
||||||
|
coccoc
|
||||||
|
cognitiveseo
|
||||||
|
colly -
|
||||||
|
CommaFeed
|
||||||
|
Commons-HttpClient
|
||||||
|
commonscan
|
||||||
|
contactbigdatafr
|
||||||
|
contentkingapp
|
||||||
|
convera
|
||||||
|
CookieReports
|
||||||
|
copyright sheriff
|
||||||
|
CopyRightCheck
|
||||||
|
Copyscape
|
||||||
|
Cosmos4j\.feedback
|
||||||
|
Covario-IDS
|
||||||
|
Crescent
|
||||||
|
Crowsnest
|
||||||
|
Criteo
|
||||||
|
CSHttp
|
||||||
|
curb
|
||||||
|
Curious George
|
||||||
|
curl
|
||||||
|
cuwhois\/
|
||||||
|
cybo\.com
|
||||||
|
DAP\/NetHTTP
|
||||||
|
DareBoost
|
||||||
|
DatabaseDriverMysqli
|
||||||
|
DataCha0s
|
||||||
|
Datafeedwatch
|
||||||
|
Datanyze
|
||||||
|
DataparkSearch
|
||||||
|
dataprovider
|
||||||
|
DataXu
|
||||||
|
Daum(oa)?[ \/][0-9]
|
||||||
|
Demon
|
||||||
|
DeuSu
|
||||||
|
developers\.google\.com\/\+\/web\/snippet\/
|
||||||
|
Devil
|
||||||
|
Digg
|
||||||
|
Digincore
|
||||||
|
DigitalPebble
|
||||||
|
Dirbuster
|
||||||
|
Discourse Forum Onebox
|
||||||
|
Disqus\/
|
||||||
|
Dispatch\/
|
||||||
|
DittoSpyder
|
||||||
|
dlvr
|
||||||
|
DMBrowser
|
||||||
|
DNSPod-reporting
|
||||||
|
docoloc
|
||||||
|
Dolphin http client
|
||||||
|
DomainAppender
|
||||||
|
Donuts Content Explorer
|
||||||
|
dotMailer content retrieval
|
||||||
|
dotSemantic
|
||||||
|
downforeveryoneorjustme
|
||||||
|
Download Wonder
|
||||||
|
downnotifier
|
||||||
|
DowntimeDetector
|
||||||
|
Drip
|
||||||
|
drupact
|
||||||
|
Drupal \(\+http:\/\/drupal\.org\/\)
|
||||||
|
DTS Agent
|
||||||
|
dubaiindex
|
||||||
|
EARTHCOM
|
||||||
|
Easy-Thumb
|
||||||
|
EasyDL
|
||||||
|
Ebingbong
|
||||||
|
ec2linkfinder
|
||||||
|
eCairn-Grabber
|
||||||
|
eCatch
|
||||||
|
ECCP
|
||||||
|
eContext\/
|
||||||
|
Ecxi
|
||||||
|
EirGrabber
|
||||||
|
ElectricMonk
|
||||||
|
elefent
|
||||||
|
EMail Exractor
|
||||||
|
EMail Wolf
|
||||||
|
EmailWolf
|
||||||
|
Embarcadero
|
||||||
|
Embed PHP Library
|
||||||
|
Embedly
|
||||||
|
endo\/
|
||||||
|
europarchive\.org
|
||||||
|
evc-batch
|
||||||
|
EventMachine HttpClient
|
||||||
|
Everwall Link Expander
|
||||||
|
Evidon
|
||||||
|
Evrinid
|
||||||
|
ExactSearch
|
||||||
|
ExaleadCloudview
|
||||||
|
Excel\/
|
||||||
|
exif
|
||||||
|
Exploratodo
|
||||||
|
Express WebPictures
|
||||||
|
Extreme Picture Finder
|
||||||
|
EyeNetIE
|
||||||
|
ezooms
|
||||||
|
facebookexternalhit
|
||||||
|
facebookplatform
|
||||||
|
fairshare
|
||||||
|
Faraday v
|
||||||
|
fasthttp
|
||||||
|
Faveeo
|
||||||
|
Favicon downloader
|
||||||
|
faviconkit
|
||||||
|
faviconarchive
|
||||||
|
FavOrg
|
||||||
|
Feed Wrangler
|
||||||
|
Feedable\/
|
||||||
|
Feedbin
|
||||||
|
FeedBooster
|
||||||
|
FeedBucket
|
||||||
|
FeedBunch\/
|
||||||
|
FeedBurner
|
||||||
|
feeder
|
||||||
|
Feedly
|
||||||
|
FeedshowOnline
|
||||||
|
Feedspot
|
||||||
|
Feedwind\/
|
||||||
|
FeedZcollector
|
||||||
|
feeltiptop
|
||||||
|
Fetch API
|
||||||
|
Fetch\/[0-9]
|
||||||
|
Fever\/[0-9]
|
||||||
|
FHscan
|
||||||
|
Fimap
|
||||||
|
findlink
|
||||||
|
findthatfile
|
||||||
|
FlashGet
|
||||||
|
FlipboardBrowserProxy
|
||||||
|
FlipboardProxy
|
||||||
|
FlipboardRSS
|
||||||
|
Flock\/
|
||||||
|
fluffy
|
||||||
|
Flunky
|
||||||
|
flynxapp
|
||||||
|
forensiq
|
||||||
|
FoundSeoTool
|
||||||
|
http:\/\/www.neomo.de\/
|
||||||
|
free thumbnails
|
||||||
|
Freeuploader
|
||||||
|
Funnelback
|
||||||
|
G-i-g-a-b-o-t
|
||||||
|
g00g1e\.net
|
||||||
|
ganarvisitas
|
||||||
|
geek-tools
|
||||||
|
Genieo
|
||||||
|
GentleSource
|
||||||
|
GetCode
|
||||||
|
Getintent
|
||||||
|
GetLinkInfo
|
||||||
|
getprismatic
|
||||||
|
GetRight
|
||||||
|
getroot
|
||||||
|
GetURLInfo\/
|
||||||
|
GetWeb
|
||||||
|
Ghost Inspector
|
||||||
|
GigablastOpenSource
|
||||||
|
GIS-LABS
|
||||||
|
github-camo
|
||||||
|
github\.com
|
||||||
|
Go [\d\.]* package http
|
||||||
|
Go http package
|
||||||
|
Go-Ahead-Got-It
|
||||||
|
Go-http-client
|
||||||
|
Go!Zilla
|
||||||
|
gobyus
|
||||||
|
gofetch
|
||||||
|
GomezAgent
|
||||||
|
gooblog
|
||||||
|
Goodzer\/
|
||||||
|
Google AppsViewer
|
||||||
|
Google Desktop
|
||||||
|
Google favicon
|
||||||
|
Google Keyword Suggestion
|
||||||
|
Google Keyword Tool
|
||||||
|
Google Page Speed Insights
|
||||||
|
Google PP Default
|
||||||
|
Google Search Console
|
||||||
|
Google Web Preview
|
||||||
|
Google-Adwords
|
||||||
|
Google-Apps-Script
|
||||||
|
Google-Calendar-Importer
|
||||||
|
Google-HotelAdsVerifier
|
||||||
|
Google-HTTP-Java-Client
|
||||||
|
Google-Publisher-Plugin
|
||||||
|
Google-SearchByImage
|
||||||
|
Google-Site-Verification
|
||||||
|
Google-Structured-Data-Testing-Tool
|
||||||
|
Google-Youtube-Links
|
||||||
|
google-xrawler
|
||||||
|
GoogleDocs
|
||||||
|
GoogleHC\/
|
||||||
|
GoogleProducer
|
||||||
|
GoogleSites
|
||||||
|
Google-Transparency-Report
|
||||||
|
Gookey
|
||||||
|
GoScraper
|
||||||
|
GoSpotCheck
|
||||||
|
gosquared-thumbnailer
|
||||||
|
Gotit
|
||||||
|
GoZilla
|
||||||
|
grabify
|
||||||
|
GrabNet
|
||||||
|
Grafula
|
||||||
|
Grammarly
|
||||||
|
GrapeFX
|
||||||
|
GreatNews
|
||||||
|
Gregarius
|
||||||
|
GRequests
|
||||||
|
grokkit
|
||||||
|
grouphigh
|
||||||
|
grub-client
|
||||||
|
gSOAP\/
|
||||||
|
GT::WWW
|
||||||
|
GTmetrix
|
||||||
|
GuzzleHttp
|
||||||
|
gvfs\/
|
||||||
|
HAA(A)?RTLAND http client
|
||||||
|
Haansoft
|
||||||
|
hackney\/
|
||||||
|
Hadi Agent
|
||||||
|
HappyApps-WebCheck
|
||||||
|
Hatena
|
||||||
|
Havij
|
||||||
|
HeadlessChrome
|
||||||
|
HEADMasterSEO
|
||||||
|
HeartRails_Capture
|
||||||
|
help@dataminr\.com
|
||||||
|
heritrix
|
||||||
|
historious
|
||||||
|
hkedcity
|
||||||
|
hledejLevne\.cz
|
||||||
|
Hloader
|
||||||
|
HMView
|
||||||
|
Holmes
|
||||||
|
HonesoSearchEngine
|
||||||
|
HootSuite Image proxy
|
||||||
|
Hootsuite-WebFeed
|
||||||
|
hosterstats
|
||||||
|
HostTracker
|
||||||
|
ht:\/\/check
|
||||||
|
htdig
|
||||||
|
HTMLparser
|
||||||
|
htmlyse
|
||||||
|
HTTP Banner Detection
|
||||||
|
HTTP_Compression_Test
|
||||||
|
http_request2
|
||||||
|
http_requester
|
||||||
|
http-get
|
||||||
|
HTTP-Header-Abfrage
|
||||||
|
http-kit
|
||||||
|
http-request\/
|
||||||
|
HTTP-Tiny
|
||||||
|
HTTP::Lite
|
||||||
|
http\.rb\/
|
||||||
|
http_get
|
||||||
|
HttpComponents
|
||||||
|
httphr
|
||||||
|
HTTPMon
|
||||||
|
httpRequest
|
||||||
|
httpscheck
|
||||||
|
httpssites_power
|
||||||
|
httpunit
|
||||||
|
HttpUrlConnection
|
||||||
|
httrack
|
||||||
|
huaweisymantec
|
||||||
|
HubSpot
|
||||||
|
Humanlinks
|
||||||
|
i2kconnect\/
|
||||||
|
Iblog
|
||||||
|
ichiro
|
||||||
|
Id-search
|
||||||
|
IdeelaborPlagiaat
|
||||||
|
IDG Twitter Links Resolver
|
||||||
|
IDwhois\/
|
||||||
|
Iframely
|
||||||
|
igdeSpyder
|
||||||
|
IlTrovatore
|
||||||
|
Image Fetch
|
||||||
|
Image Sucker
|
||||||
|
ImageEngine\/
|
||||||
|
ImageVisu\/
|
||||||
|
Imagga
|
||||||
|
imagineeasy
|
||||||
|
imgsizer
|
||||||
|
InAGist
|
||||||
|
inbound\.li parser
|
||||||
|
InDesign%20CC
|
||||||
|
Indy Library
|
||||||
|
InetURL
|
||||||
|
infegy
|
||||||
|
infohelfer
|
||||||
|
InfoTekies
|
||||||
|
InfoWizards Reciprocal Link
|
||||||
|
inpwrd\.com
|
||||||
|
instabid
|
||||||
|
Instapaper
|
||||||
|
Integrity
|
||||||
|
integromedb
|
||||||
|
Intelliseek
|
||||||
|
InterGET
|
||||||
|
internet_archive
|
||||||
|
Internet Ninja
|
||||||
|
InternetSeer
|
||||||
|
internetVista monitor
|
||||||
|
intraVnews
|
||||||
|
IODC
|
||||||
|
IOI
|
||||||
|
iplabel
|
||||||
|
ips-agent
|
||||||
|
IPS\/[0-9]
|
||||||
|
IPWorks HTTP\/S Component
|
||||||
|
iqdb\/
|
||||||
|
Iria
|
||||||
|
Irokez
|
||||||
|
isitup\.org
|
||||||
|
iskanie
|
||||||
|
isUp\.li
|
||||||
|
iThemes Sync\/
|
||||||
|
iZSearch
|
||||||
|
JAHHO
|
||||||
|
janforman
|
||||||
|
Jaunt\/
|
||||||
|
Jbrofuzz
|
||||||
|
Jersey\/
|
||||||
|
JetCar
|
||||||
|
Jigsaw
|
||||||
|
Jobboerse
|
||||||
|
JobFeed discovery
|
||||||
|
Jobg8 URL Monitor
|
||||||
|
jobo
|
||||||
|
Jobrapido
|
||||||
|
Jobsearch1\.5
|
||||||
|
JoinVision Generic
|
||||||
|
JolokiaPwn
|
||||||
|
Joomla
|
||||||
|
Jorgee
|
||||||
|
JS-Kit
|
||||||
|
JustView
|
||||||
|
Kaspersky Lab CFR link resolver
|
||||||
|
Kelny\/
|
||||||
|
Kerrigan\/
|
||||||
|
KeyCDN
|
||||||
|
Keyword Density
|
||||||
|
Keywords Research
|
||||||
|
KickFire
|
||||||
|
KimonoLabs\/
|
||||||
|
Kml-Google
|
||||||
|
knows\.is
|
||||||
|
KOCMOHABT
|
||||||
|
kouio
|
||||||
|
kube-probe
|
||||||
|
kulturarw3
|
||||||
|
KumKie
|
||||||
|
L\.webis
|
||||||
|
Larbin
|
||||||
|
Lavf\/
|
||||||
|
LeechFTP
|
||||||
|
LeechGet
|
||||||
|
letsencrypt
|
||||||
|
Lftp
|
||||||
|
LibVLC
|
||||||
|
LibWeb
|
||||||
|
Libwhisker
|
||||||
|
libwww
|
||||||
|
Licorne
|
||||||
|
Liferea\/
|
||||||
|
Lightspeedsystems
|
||||||
|
Lighthouse
|
||||||
|
Likse
|
||||||
|
Link Valet
|
||||||
|
link_thumbnailer
|
||||||
|
LinkAlarm\/
|
||||||
|
linkCheck
|
||||||
|
linkdex
|
||||||
|
LinkExaminer
|
||||||
|
linkfluence
|
||||||
|
linkpeek
|
||||||
|
LinkPreviewGenerator
|
||||||
|
LinkScan
|
||||||
|
LinksManager
|
||||||
|
LinkTiger
|
||||||
|
LinkWalker
|
||||||
|
Lipperhey
|
||||||
|
Litemage_walker
|
||||||
|
livedoor ScreenShot
|
||||||
|
LoadImpactRload
|
||||||
|
localsearch-web
|
||||||
|
LongURL API
|
||||||
|
looksystems\.net
|
||||||
|
ltx71
|
||||||
|
lua-resty-http
|
||||||
|
lwp-request
|
||||||
|
lwp-trivial
|
||||||
|
LWP::Simple
|
||||||
|
lycos
|
||||||
|
LYT\.SR
|
||||||
|
mabontland
|
||||||
|
Mag-Net
|
||||||
|
MagpieRSS
|
||||||
|
Mail\.Ru
|
||||||
|
MailChimp
|
||||||
|
Majestic12
|
||||||
|
makecontact\/
|
||||||
|
Mandrill
|
||||||
|
MapperCmd
|
||||||
|
marketinggrader
|
||||||
|
MarkMonitor
|
||||||
|
MarkWatch
|
||||||
|
Mass Downloader
|
||||||
|
masscan\/
|
||||||
|
Mata Hari
|
||||||
|
Mediapartners-Google
|
||||||
|
mediawords
|
||||||
|
MegaIndex\.ru
|
||||||
|
MeltwaterNews
|
||||||
|
Melvil Rawi
|
||||||
|
MemGator
|
||||||
|
Metaspinner
|
||||||
|
MetaURI
|
||||||
|
MFC_Tear_Sample
|
||||||
|
Microsearch
|
||||||
|
Microsoft Office
|
||||||
|
Microsoft Outlook
|
||||||
|
Microsoft Windows Network Diagnostics
|
||||||
|
Microsoft-WebDAV-MiniRedir
|
||||||
|
Microsoft Data Access
|
||||||
|
MIDown tool
|
||||||
|
MIIxpc
|
||||||
|
Mindjet
|
||||||
|
Miniature\.io
|
||||||
|
Miniflux
|
||||||
|
Mister PiX
|
||||||
|
mixdata dot com
|
||||||
|
mixed-content-scan
|
||||||
|
Mixmax-LinkPreview
|
||||||
|
mixnode
|
||||||
|
Mnogosearch
|
||||||
|
mogimogi
|
||||||
|
Mojeek
|
||||||
|
Mojolicious \(Perl\)
|
||||||
|
Monit\/
|
||||||
|
monitis
|
||||||
|
Monitority\/
|
||||||
|
montastic
|
||||||
|
MonTools
|
||||||
|
Moreover
|
||||||
|
Morfeus Fucking Scanner
|
||||||
|
Morning Paper
|
||||||
|
MovableType
|
||||||
|
mowser
|
||||||
|
Mrcgiguy
|
||||||
|
MS Web Services Client Protocol
|
||||||
|
MSFrontPage
|
||||||
|
mShots
|
||||||
|
MuckRack\/
|
||||||
|
muhstik-scan
|
||||||
|
MVAClient
|
||||||
|
MxToolbox\/
|
||||||
|
nagios
|
||||||
|
Najdi\.si
|
||||||
|
Name Intelligence
|
||||||
|
Nameprotect
|
||||||
|
Navroad
|
||||||
|
NearSite
|
||||||
|
Needle
|
||||||
|
Nessus
|
||||||
|
Net Vampire
|
||||||
|
NetAnts
|
||||||
|
NETCRAFT
|
||||||
|
NetLyzer
|
||||||
|
NetMechanic
|
||||||
|
NetNewsWire
|
||||||
|
Netpursual
|
||||||
|
netresearch
|
||||||
|
NetShelter ContentScan
|
||||||
|
Netsparker
|
||||||
|
NetTrack
|
||||||
|
Netvibes
|
||||||
|
NetZIP
|
||||||
|
Neustar WPM
|
||||||
|
NeutrinoAPI
|
||||||
|
NewRelicPinger
|
||||||
|
NewsBlur .*Finder
|
||||||
|
NewsGator
|
||||||
|
newsme
|
||||||
|
newspaper\/
|
||||||
|
Nexgate Ruby Client
|
||||||
|
NG-Search
|
||||||
|
Nibbler
|
||||||
|
NICErsPRO
|
||||||
|
Nikto
|
||||||
|
nineconnections
|
||||||
|
NLNZ_IAHarvester
|
||||||
|
Nmap Scripting Engine
|
||||||
|
node-superagent
|
||||||
|
node-urllib
|
||||||
|
node\.io
|
||||||
|
Nodemeter
|
||||||
|
NodePing
|
||||||
|
nominet\.org\.uk
|
||||||
|
nominet\.uk
|
||||||
|
Norton-Safeweb
|
||||||
|
Notifixious
|
||||||
|
notifyninja
|
||||||
|
nuhk
|
||||||
|
nutch
|
||||||
|
Nuzzel
|
||||||
|
nWormFeedFinder
|
||||||
|
nyawc\/
|
||||||
|
Nymesis
|
||||||
|
NYU
|
||||||
|
Ocelli\/
|
||||||
|
Octopus
|
||||||
|
oegp
|
||||||
|
Offline Explorer
|
||||||
|
Offline Navigator
|
||||||
|
og-scraper
|
||||||
|
okhttp
|
||||||
|
omgili
|
||||||
|
OMSC
|
||||||
|
Online Domain Tools
|
||||||
|
OpenCalaisSemanticProxy
|
||||||
|
Openfind
|
||||||
|
OpenLinkProfiler
|
||||||
|
Openstat\/
|
||||||
|
OpenVAS
|
||||||
|
Optimizer
|
||||||
|
Orbiter
|
||||||
|
OrgProbe\/
|
||||||
|
orion-semantics
|
||||||
|
Outlook-Express
|
||||||
|
Outlook-iOS
|
||||||
|
ow\.ly
|
||||||
|
Owler
|
||||||
|
ownCloud News
|
||||||
|
OxfordCloudService
|
||||||
|
Page Valet
|
||||||
|
page_verifier
|
||||||
|
page scorer
|
||||||
|
page2rss
|
||||||
|
PageGrabber
|
||||||
|
PagePeeker
|
||||||
|
PageScorer
|
||||||
|
Pagespeed\/
|
||||||
|
Panopta
|
||||||
|
panscient
|
||||||
|
Papa Foto
|
||||||
|
parsijoo
|
||||||
|
Pavuk
|
||||||
|
PayPal IPN
|
||||||
|
pcBrowser
|
||||||
|
Pcore-HTTP
|
||||||
|
Pearltrees
|
||||||
|
PECL::HTTP
|
||||||
|
peerindex
|
||||||
|
Peew
|
||||||
|
PeoplePal
|
||||||
|
Perlu -
|
||||||
|
PhantomJS Screenshoter
|
||||||
|
PhantomJS\/
|
||||||
|
Photon\/
|
||||||
|
phpservermon
|
||||||
|
Pi-Monster
|
||||||
|
Picscout
|
||||||
|
Picsearch
|
||||||
|
PictureFinder
|
||||||
|
Pimonster
|
||||||
|
ping\.blo\.gs
|
||||||
|
Pingability
|
||||||
|
PingAdmin\.Ru
|
||||||
|
Pingdom
|
||||||
|
Pingoscope
|
||||||
|
PingSpot
|
||||||
|
pinterest\.com
|
||||||
|
Pixray
|
||||||
|
Pizilla
|
||||||
|
Plagger\/
|
||||||
|
Ploetz \+ Zeller
|
||||||
|
Plukkie
|
||||||
|
plumanalytics
|
||||||
|
PocketImageCache
|
||||||
|
PocketParser
|
||||||
|
Pockey
|
||||||
|
POE-Component-Client-HTTP
|
||||||
|
Polymail\/
|
||||||
|
Pompos
|
||||||
|
Porkbun
|
||||||
|
Port Monitor
|
||||||
|
postano
|
||||||
|
PostmanRuntime
|
||||||
|
PostPost
|
||||||
|
postrank
|
||||||
|
PowerPoint\/
|
||||||
|
Priceonomics Analysis Engine
|
||||||
|
PrintFriendly
|
||||||
|
PritTorrent
|
||||||
|
Prlog
|
||||||
|
probethenet
|
||||||
|
Project 25499
|
||||||
|
prospectb2b
|
||||||
|
Protopage
|
||||||
|
ProWebWalker
|
||||||
|
proximic
|
||||||
|
PRTG Network Monitor
|
||||||
|
pshtt, https scanning
|
||||||
|
PTST
|
||||||
|
PTST\/[0-9]+
|
||||||
|
Pulsepoint XT3 web scraper
|
||||||
|
Pump
|
||||||
|
Python-httplib2
|
||||||
|
python-requests
|
||||||
|
Python-urllib
|
||||||
|
Qirina Hurdler
|
||||||
|
QQDownload
|
||||||
|
QrafterPro
|
||||||
|
Qseero
|
||||||
|
Qualidator
|
||||||
|
QueryN Metasearch
|
||||||
|
queuedriver
|
||||||
|
Quora Link Preview
|
||||||
|
Qwantify
|
||||||
|
Radian6
|
||||||
|
RankActive
|
||||||
|
RankFlex
|
||||||
|
RankSonicSiteAuditor
|
||||||
|
Re-re Studio
|
||||||
|
ReactorNetty
|
||||||
|
Readability
|
||||||
|
RealDownload
|
||||||
|
RealPlayer%20Downloader
|
||||||
|
RebelMouse
|
||||||
|
Recorder
|
||||||
|
RecurPost\/
|
||||||
|
redback\/
|
||||||
|
ReederForMac
|
||||||
|
ReGet
|
||||||
|
RepoMonkey
|
||||||
|
request\.js
|
||||||
|
reqwest\/
|
||||||
|
ResponseCodeTest
|
||||||
|
RestSharp
|
||||||
|
Riddler
|
||||||
|
Rival IQ
|
||||||
|
Robosourcer
|
||||||
|
Robozilla
|
||||||
|
ROI Hunter
|
||||||
|
RPT-HTTPClient
|
||||||
|
RSSOwl
|
||||||
|
safe-agent-scanner
|
||||||
|
SalesIntelligent
|
||||||
|
Saleslift
|
||||||
|
Sendsay\.Ru
|
||||||
|
SauceNAO
|
||||||
|
SBIder
|
||||||
|
scalaj-http
|
||||||
|
scan\.lol
|
||||||
|
ScanAlert
|
||||||
|
Scoop
|
||||||
|
scooter
|
||||||
|
ScoutJet
|
||||||
|
ScoutURLMonitor
|
||||||
|
ScrapeBox Page Scanner
|
||||||
|
SimpleScraper
|
||||||
|
Scrapy
|
||||||
|
Screaming
|
||||||
|
ScreenShotService
|
||||||
|
Scrubby
|
||||||
|
Scrutiny\/
|
||||||
|
search\.thunderstone
|
||||||
|
Search37
|
||||||
|
searchenginepromotionhelp
|
||||||
|
Searchestate
|
||||||
|
SearchExpress
|
||||||
|
SearchSight
|
||||||
|
Seeker
|
||||||
|
semanticdiscovery
|
||||||
|
semanticjuice
|
||||||
|
Semiocast HTTP client
|
||||||
|
Semrush
|
||||||
|
sentry\/
|
||||||
|
SEO Browser
|
||||||
|
Seo Servis
|
||||||
|
seo-nastroj\.cz
|
||||||
|
seo4ajax
|
||||||
|
Seobility
|
||||||
|
SEOCentro
|
||||||
|
SeoCheck
|
||||||
|
SEOkicks
|
||||||
|
Seomoz
|
||||||
|
SEOprofiler
|
||||||
|
SEOsearch
|
||||||
|
seoscanners
|
||||||
|
seositecheckup
|
||||||
|
SEOstats
|
||||||
|
servernfo
|
||||||
|
sexsearcher
|
||||||
|
Seznam
|
||||||
|
Shelob
|
||||||
|
Shodan
|
||||||
|
Shoppimon
|
||||||
|
ShopWiki
|
||||||
|
ShortLinkTranslate
|
||||||
|
shrinktheweb
|
||||||
|
Sideqik
|
||||||
|
SimplePie
|
||||||
|
SimplyFast
|
||||||
|
Siphon
|
||||||
|
SISTRIX
|
||||||
|
Site-Shot\/
|
||||||
|
Site Sucker
|
||||||
|
Site24x7
|
||||||
|
SiteBar
|
||||||
|
Sitebeam
|
||||||
|
Sitebulb\/
|
||||||
|
SiteCondor
|
||||||
|
SiteExplorer
|
||||||
|
SiteGuardian
|
||||||
|
Siteimprove
|
||||||
|
SiteIndexed
|
||||||
|
Sitemap(s)? Generator
|
||||||
|
SitemapGenerator
|
||||||
|
SiteMonitor
|
||||||
|
Siteshooter B0t
|
||||||
|
SiteSnagger
|
||||||
|
SiteSucker
|
||||||
|
SiteTruth
|
||||||
|
Sitevigil
|
||||||
|
sitexy\.com
|
||||||
|
SkypeUriPreview
|
||||||
|
Slack\/
|
||||||
|
slider\.com
|
||||||
|
slurp
|
||||||
|
SlySearch
|
||||||
|
SmartDownload
|
||||||
|
SMRF URL Expander
|
||||||
|
SMUrlExpander
|
||||||
|
Snake
|
||||||
|
Snappy
|
||||||
|
SnapSearch
|
||||||
|
Snarfer\/
|
||||||
|
SniffRSS
|
||||||
|
sniptracker
|
||||||
|
Snoopy
|
||||||
|
SnowHaze Search
|
||||||
|
sogou web
|
||||||
|
SortSite
|
||||||
|
Sottopop
|
||||||
|
sovereign\.ai
|
||||||
|
SpaceBison
|
||||||
|
SpamExperts
|
||||||
|
Spammen
|
||||||
|
Spanner
|
||||||
|
spaziodati
|
||||||
|
SPDYCheck
|
||||||
|
Specificfeeds
|
||||||
|
speedy
|
||||||
|
SPEng
|
||||||
|
Spinn3r
|
||||||
|
spray-can
|
||||||
|
Sprinklr
|
||||||
|
spyonweb
|
||||||
|
sqlmap
|
||||||
|
Sqlworm
|
||||||
|
Sqworm
|
||||||
|
SSL Labs
|
||||||
|
ssl-tools
|
||||||
|
StackRambler
|
||||||
|
Statastico\/
|
||||||
|
StatusCake
|
||||||
|
Steeler
|
||||||
|
Stratagems Kumo
|
||||||
|
Stroke\.cz
|
||||||
|
StudioFACA
|
||||||
|
StumbleUpon
|
||||||
|
suchen
|
||||||
|
Sucuri
|
||||||
|
summify
|
||||||
|
SuperHTTP
|
||||||
|
Surphace Scout
|
||||||
|
Suzuran
|
||||||
|
SwiteScraper
|
||||||
|
Symfony BrowserKit
|
||||||
|
Symfony2 BrowserKit
|
||||||
|
SynHttpClient-Built
|
||||||
|
Sysomos
|
||||||
|
sysscan
|
||||||
|
Szukacz
|
||||||
|
T0PHackTeam
|
||||||
|
tAkeOut
|
||||||
|
Tarantula\/
|
||||||
|
Taringa UGC
|
||||||
|
TarmotGezgin
|
||||||
|
Teleport
|
||||||
|
Telesoft
|
||||||
|
Telesphoreo
|
||||||
|
Telesphorep
|
||||||
|
Tenon\.io
|
||||||
|
teoma
|
||||||
|
terrainformatica
|
||||||
|
Test Certificate Info
|
||||||
|
testuri
|
||||||
|
Tetrahedron
|
||||||
|
The Drop Reaper
|
||||||
|
The Expert HTML Source Viewer
|
||||||
|
The Knowledge AI
|
||||||
|
The Intraformant
|
||||||
|
theinternetrules
|
||||||
|
TheNomad
|
||||||
|
Thinklab
|
||||||
|
Thumbshots
|
||||||
|
ThumbSniper
|
||||||
|
timewe\.net
|
||||||
|
TinEye
|
||||||
|
Tiny Tiny RSS
|
||||||
|
TLSProbe\/
|
||||||
|
Toata
|
||||||
|
topster
|
||||||
|
touche\.com
|
||||||
|
Traackr\.com
|
||||||
|
tracemyfile
|
||||||
|
Trackuity
|
||||||
|
TrapitAgent
|
||||||
|
Trendiction
|
||||||
|
Trendsmap
|
||||||
|
trendspottr
|
||||||
|
truwoGPS
|
||||||
|
TryJsoup
|
||||||
|
TulipChain
|
||||||
|
Turingos
|
||||||
|
Turnitin
|
||||||
|
tweetedtimes
|
||||||
|
Tweetminster
|
||||||
|
Tweezler\/
|
||||||
|
twibble
|
||||||
|
Twice
|
||||||
|
Twikle
|
||||||
|
Twingly
|
||||||
|
Twisted PageGetter
|
||||||
|
Typhoeus
|
||||||
|
ubermetrics-technologies
|
||||||
|
uclassify
|
||||||
|
UdmSearch
|
||||||
|
unchaos
|
||||||
|
unirest-java
|
||||||
|
UniversalFeedParser
|
||||||
|
Unshorten\.It
|
||||||
|
Untiny
|
||||||
|
UnwindFetchor
|
||||||
|
updated
|
||||||
|
updown\.io daemon
|
||||||
|
Upflow
|
||||||
|
Uptimia
|
||||||
|
Urlcheckr
|
||||||
|
URL Verifier
|
||||||
|
URLitor
|
||||||
|
urlresolver
|
||||||
|
Urlstat
|
||||||
|
URLTester
|
||||||
|
UrlTrends Ranking Updater
|
||||||
|
URLy Warning
|
||||||
|
URLy\.Warning
|
||||||
|
Vacuum
|
||||||
|
Vagabondo
|
||||||
|
VB Project
|
||||||
|
vBSEO
|
||||||
|
VCI
|
||||||
|
via ggpht\.com GoogleImageProxy
|
||||||
|
VidibleScraper
|
||||||
|
Virusdie
|
||||||
|
visionutils
|
||||||
|
vkShare
|
||||||
|
VoidEYE
|
||||||
|
Voil
|
||||||
|
voltron
|
||||||
|
voyager\/
|
||||||
|
VSAgent\/
|
||||||
|
VSB-TUO\/
|
||||||
|
Vulnbusters Meter
|
||||||
|
VYU2
|
||||||
|
w3af\.org
|
||||||
|
W3C_Unicorn
|
||||||
|
W3C-checklink
|
||||||
|
W3C-mobileOK
|
||||||
|
WAC-OFU
|
||||||
|
Wallpapers\/[0-9]+
|
||||||
|
WallpapersHD
|
||||||
|
wangling
|
||||||
|
Wappalyzer
|
||||||
|
WatchMouse
|
||||||
|
WbSrch\/
|
||||||
|
WDT\.io
|
||||||
|
web-capture\.net
|
||||||
|
Web-sniffer
|
||||||
|
Web Auto
|
||||||
|
Web Collage
|
||||||
|
Web Enhancer
|
||||||
|
Web Fetch
|
||||||
|
Web Fuck
|
||||||
|
Web Pix
|
||||||
|
Web Sauger
|
||||||
|
Web Sucker
|
||||||
|
Webalta
|
||||||
|
Webauskunft
|
||||||
|
WebAuto
|
||||||
|
WebCapture
|
||||||
|
WebClient\/
|
||||||
|
webcollage
|
||||||
|
WebCookies
|
||||||
|
WebCopier
|
||||||
|
WebCorp
|
||||||
|
WebDataStats
|
||||||
|
WebDoc
|
||||||
|
WebEnhancer
|
||||||
|
WebFetch
|
||||||
|
WebFuck
|
||||||
|
WebGazer
|
||||||
|
WebGo IS
|
||||||
|
WebImageCollector
|
||||||
|
WebImages
|
||||||
|
WebIndex
|
||||||
|
webkit2png
|
||||||
|
WebLeacher
|
||||||
|
webmastercoffee
|
||||||
|
webmon
|
||||||
|
WebPix
|
||||||
|
WebReaper
|
||||||
|
WebSauger
|
||||||
|
webscreenie
|
||||||
|
Webshag
|
||||||
|
Webshot
|
||||||
|
Website Quester
|
||||||
|
websitepulse agent
|
||||||
|
WebsiteQuester
|
||||||
|
Websnapr
|
||||||
|
WebSniffer
|
||||||
|
Webster
|
||||||
|
WebStripper
|
||||||
|
WebSucker
|
||||||
|
Webthumb\/
|
||||||
|
WebThumbnail
|
||||||
|
WebWhacker
|
||||||
|
WebZIP
|
||||||
|
WeLikeLinks
|
||||||
|
WEPA
|
||||||
|
WeSEE
|
||||||
|
wf84
|
||||||
|
Wfuzz\/
|
||||||
|
wget
|
||||||
|
WhatsApp
|
||||||
|
WhatsMyIP
|
||||||
|
WhatWeb
|
||||||
|
WhereGoes\?
|
||||||
|
Whibse
|
||||||
|
WhoRunsCoinHive
|
||||||
|
Whynder Magnet
|
||||||
|
Windows-RSS-Platform
|
||||||
|
WinPodder
|
||||||
|
wkhtmlto
|
||||||
|
wmtips
|
||||||
|
Woko
|
||||||
|
woorankreview
|
||||||
|
Word\/
|
||||||
|
WordPress\/
|
||||||
|
WordupinfoSearch
|
||||||
|
wotbox
|
||||||
|
WP Engine Install Performance API
|
||||||
|
wpif
|
||||||
|
wprecon\.com survey
|
||||||
|
WPScan
|
||||||
|
wscheck
|
||||||
|
Wtrace
|
||||||
|
WWW-Collector-E
|
||||||
|
WWW-Mechanize
|
||||||
|
WWW::Document
|
||||||
|
WWW::Mechanize
|
||||||
|
www\.monitor\.us
|
||||||
|
WWWOFFLE
|
||||||
|
x09Mozilla
|
||||||
|
x22Mozilla
|
||||||
|
XaxisSemanticsClassifier
|
||||||
|
Xenu Link Sleuth
|
||||||
|
XING-contenttabreceiver
|
||||||
|
xpymep([0-9]?)\.exe
|
||||||
|
Y!J-(ASR|BSC)
|
||||||
|
Y\!J-BRW
|
||||||
|
Yaanb
|
||||||
|
yacy
|
||||||
|
Yahoo Link Preview
|
||||||
|
YahooCacheSystem
|
||||||
|
YahooYSMcm
|
||||||
|
YandeG
|
||||||
|
Yandex(?!Search)
|
||||||
|
yanga
|
||||||
|
yeti
|
||||||
|
Yo-yo
|
||||||
|
Yoleo Consumer
|
||||||
|
yoogliFetchAgent
|
||||||
|
YottaaMonitor
|
||||||
|
Your-Website-Sucks
|
||||||
|
yourls\.org
|
||||||
|
YoYs\.net
|
||||||
|
YP\.PL
|
||||||
|
Zabbix
|
||||||
|
Zade
|
||||||
|
Zao
|
||||||
|
Zauba
|
||||||
|
Zemanta Aggregator
|
||||||
|
Zend_Http_Client
|
||||||
|
Zend\\Http\\Client
|
||||||
|
Zermelo
|
||||||
|
Zeus
|
||||||
|
zgrab
|
||||||
|
ZnajdzFoto
|
||||||
|
Zombie\.js
|
||||||
|
Zoom\.Mac
|
||||||
|
ZyBorg
|
||||||
|
[a-z0-9\-_]*(bot|crawl|archiver|transcoder|spider|uptime|validator|fetcher|cron|checker|reader|extractor|monitoring|analyzer)
|
||||||
1
blockbot/vendor/jaybizzle/crawler-detect/raw/Exclusions.json
vendored
Normal file
1
blockbot/vendor/jaybizzle/crawler-detect/raw/Exclusions.json
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
["Safari.[\\d\\.]*","Firefox.[\\d\\.]*"," Chrome.[\\d\\.]*","Chromium.[\\d\\.]*","MSIE.[\\d\\.]","Opera\\\/[\\d\\.]*","Mozilla.[\\d\\.]*","AppleWebKit.[\\d\\.]*","Trident.[\\d\\.]*","Windows NT.[\\d\\.]*","Android [\\d\\.]*","Macintosh.","Ubuntu","Linux","[ ]Intel","Mac OS X [\\d_]*","(like )?Gecko(.[\\d\\.]*)?","KHTML,","CriOS.[\\d\\.]*","CPU iPhone OS ([0-9_])* like Mac OS X","CPU OS ([0-9_])* like Mac OS X","iPod","compatible","x86_..","i686","x64","X11","rv:[\\d\\.]*","Version.[\\d\\.]*","WOW64","Win64","Dalvik.[\\d\\.]*"," \\.NET CLR [\\d\\.]*","Presto.[\\d\\.]*","Media Center PC","BlackBerry","Build","Opera Mini\\\/\\d{1,2}\\.\\d{1,2}\\.[\\d\\.]*\\\/\\d{1,2}\\.","Opera"," \\.NET[\\d\\.]*","cubot","; M bot","; CRONO","; B bot","; IDbot","; ID bot","; POWER BOT",";"]
|
||||||
48
blockbot/vendor/jaybizzle/crawler-detect/raw/Exclusions.txt
vendored
Normal file
48
blockbot/vendor/jaybizzle/crawler-detect/raw/Exclusions.txt
vendored
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
Safari.[\d\.]*
|
||||||
|
Firefox.[\d\.]*
|
||||||
|
Chrome.[\d\.]*
|
||||||
|
Chromium.[\d\.]*
|
||||||
|
MSIE.[\d\.]
|
||||||
|
Opera\/[\d\.]*
|
||||||
|
Mozilla.[\d\.]*
|
||||||
|
AppleWebKit.[\d\.]*
|
||||||
|
Trident.[\d\.]*
|
||||||
|
Windows NT.[\d\.]*
|
||||||
|
Android [\d\.]*
|
||||||
|
Macintosh.
|
||||||
|
Ubuntu
|
||||||
|
Linux
|
||||||
|
[ ]Intel
|
||||||
|
Mac OS X [\d_]*
|
||||||
|
(like )?Gecko(.[\d\.]*)?
|
||||||
|
KHTML,
|
||||||
|
CriOS.[\d\.]*
|
||||||
|
CPU iPhone OS ([0-9_])* like Mac OS X
|
||||||
|
CPU OS ([0-9_])* like Mac OS X
|
||||||
|
iPod
|
||||||
|
compatible
|
||||||
|
x86_..
|
||||||
|
i686
|
||||||
|
x64
|
||||||
|
X11
|
||||||
|
rv:[\d\.]*
|
||||||
|
Version.[\d\.]*
|
||||||
|
WOW64
|
||||||
|
Win64
|
||||||
|
Dalvik.[\d\.]*
|
||||||
|
\.NET CLR [\d\.]*
|
||||||
|
Presto.[\d\.]*
|
||||||
|
Media Center PC
|
||||||
|
BlackBerry
|
||||||
|
Build
|
||||||
|
Opera Mini\/\d{1,2}\.\d{1,2}\.[\d\.]*\/\d{1,2}\.
|
||||||
|
Opera
|
||||||
|
\.NET[\d\.]*
|
||||||
|
cubot
|
||||||
|
; M bot
|
||||||
|
; CRONO
|
||||||
|
; B bot
|
||||||
|
; IDbot
|
||||||
|
; ID bot
|
||||||
|
; POWER BOT
|
||||||
|
;
|
||||||
1
blockbot/vendor/jaybizzle/crawler-detect/raw/Headers.json
vendored
Normal file
1
blockbot/vendor/jaybizzle/crawler-detect/raw/Headers.json
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
["HTTP_USER_AGENT","HTTP_X_OPERAMINI_PHONE_UA","HTTP_X_DEVICE_USER_AGENT","HTTP_X_ORIGINAL_USER_AGENT","HTTP_X_SKYFIRE_PHONE","HTTP_X_BOLT_PHONE_UA","HTTP_DEVICE_STOCK_UA","HTTP_X_UCBROWSER_DEVICE_UA","HTTP_FROM","HTTP_X_SCANNER"]
|
||||||
10
blockbot/vendor/jaybizzle/crawler-detect/raw/Headers.txt
vendored
Normal file
10
blockbot/vendor/jaybizzle/crawler-detect/raw/Headers.txt
vendored
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
HTTP_USER_AGENT
|
||||||
|
HTTP_X_OPERAMINI_PHONE_UA
|
||||||
|
HTTP_X_DEVICE_USER_AGENT
|
||||||
|
HTTP_X_ORIGINAL_USER_AGENT
|
||||||
|
HTTP_X_SKYFIRE_PHONE
|
||||||
|
HTTP_X_BOLT_PHONE_UA
|
||||||
|
HTTP_DEVICE_STOCK_UA
|
||||||
|
HTTP_X_UCBROWSER_DEVICE_UA
|
||||||
|
HTTP_FROM
|
||||||
|
HTTP_X_SCANNER
|
||||||
193
blockbot/vendor/jaybizzle/crawler-detect/src/CrawlerDetect.php
vendored
Normal file
193
blockbot/vendor/jaybizzle/crawler-detect/src/CrawlerDetect.php
vendored
Normal file
|
|
@ -0,0 +1,193 @@
|
||||||
|
<?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 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->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 $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;
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = preg_match("/{$this->compiledRegex}/i", $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;
|
||||||
|
}
|
||||||
|
}
|
||||||
32
blockbot/vendor/jaybizzle/crawler-detect/src/Fixtures/AbstractProvider.php
vendored
Normal file
32
blockbot/vendor/jaybizzle/crawler-detect/src/Fixtures/AbstractProvider.php
vendored
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
<?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\Fixtures;
|
||||||
|
|
||||||
|
abstract class AbstractProvider
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The data set.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the data set.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getAll()
|
||||||
|
{
|
||||||
|
return $this->data;
|
||||||
|
}
|
||||||
|
}
|
||||||
1240
blockbot/vendor/jaybizzle/crawler-detect/src/Fixtures/Crawlers.php
vendored
Normal file
1240
blockbot/vendor/jaybizzle/crawler-detect/src/Fixtures/Crawlers.php
vendored
Normal file
|
|
@ -0,0 +1,1240 @@
|
||||||
|
<?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\Fixtures;
|
||||||
|
|
||||||
|
class Crawlers extends AbstractProvider
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Array of regular expressions to match against the user agent.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $data = array(
|
||||||
|
'.*Java.*outbrain',
|
||||||
|
' YLT',
|
||||||
|
'^b0t$',
|
||||||
|
'^bluefish ',
|
||||||
|
'^Calypso v\/',
|
||||||
|
'^COMODO DCV',
|
||||||
|
'^DangDang',
|
||||||
|
'^DavClnt',
|
||||||
|
'^FDM ',
|
||||||
|
'^git\/',
|
||||||
|
'^Goose\/',
|
||||||
|
'^Grabber',
|
||||||
|
'^HTTPClient\/',
|
||||||
|
'^Java\/',
|
||||||
|
'^Jeode\/',
|
||||||
|
'^Jetty\/',
|
||||||
|
'^Mail\/',
|
||||||
|
'^Mget',
|
||||||
|
'^Microsoft URL Control',
|
||||||
|
'^NG\/[0-9\.]',
|
||||||
|
'^NING\/',
|
||||||
|
'^PHP\/[0-9]',
|
||||||
|
'^RMA\/',
|
||||||
|
'^Ruby|Ruby\/[0-9]',
|
||||||
|
'^VSE\/[0-9]',
|
||||||
|
'^WordPress\.com',
|
||||||
|
'^XRL\/[0-9]',
|
||||||
|
'^ZmEu',
|
||||||
|
'008\/',
|
||||||
|
'13TABS',
|
||||||
|
'192\.comAgent',
|
||||||
|
'2ip\.ru',
|
||||||
|
'404enemy',
|
||||||
|
'7Siters',
|
||||||
|
'80legs',
|
||||||
|
'a\.pr-cy\.ru',
|
||||||
|
'a3logics\.in',
|
||||||
|
'A6-Indexer',
|
||||||
|
'Abonti',
|
||||||
|
'Aboundex',
|
||||||
|
'aboutthedomain',
|
||||||
|
'Accoona-AI-Agent',
|
||||||
|
'acoon',
|
||||||
|
'acrylicapps\.com\/pulp',
|
||||||
|
'Acunetix',
|
||||||
|
'AdAuth\/',
|
||||||
|
'adbeat',
|
||||||
|
'AddThis',
|
||||||
|
'ADmantX',
|
||||||
|
'AdminLabs',
|
||||||
|
'adressendeutschland',
|
||||||
|
'adscanner',
|
||||||
|
'Adstxtaggregator',
|
||||||
|
'agentslug',
|
||||||
|
'AHC',
|
||||||
|
'aihit',
|
||||||
|
'aiohttp\/',
|
||||||
|
'Airmail',
|
||||||
|
'akka-http\/',
|
||||||
|
'akula\/',
|
||||||
|
'alertra',
|
||||||
|
'alexa site audit',
|
||||||
|
'Alibaba\.Security\.Heimdall',
|
||||||
|
'Alligator',
|
||||||
|
'allloadin',
|
||||||
|
'AllSubmitter',
|
||||||
|
'alyze\.info',
|
||||||
|
'amagit',
|
||||||
|
'Anarchie',
|
||||||
|
'AndroidDownloadManager',
|
||||||
|
'Anemone',
|
||||||
|
'AngleSharp',
|
||||||
|
'annotate_google',
|
||||||
|
'Ant\.com',
|
||||||
|
'Anturis Agent',
|
||||||
|
'AnyEvent-HTTP\/',
|
||||||
|
'Apache Droid',
|
||||||
|
'Apache OpenOffice',
|
||||||
|
'Apache-HttpAsyncClient',
|
||||||
|
'Apache-HttpClient',
|
||||||
|
'ApacheBench',
|
||||||
|
'Apexoo',
|
||||||
|
'APIs-Google',
|
||||||
|
'AportWorm\/',
|
||||||
|
'AppBeat\/',
|
||||||
|
'AppEngine-Google',
|
||||||
|
'AppStoreScraperZ',
|
||||||
|
'Aprc\/[0-9]',
|
||||||
|
'Arachmo',
|
||||||
|
'arachnode',
|
||||||
|
'Arachnophilia',
|
||||||
|
'aria2',
|
||||||
|
'Arukereso',
|
||||||
|
'asafaweb',
|
||||||
|
'AskQuickly',
|
||||||
|
'Ask Jeeves',
|
||||||
|
'ASPSeek',
|
||||||
|
'Asterias',
|
||||||
|
'Astute',
|
||||||
|
'asynchttp',
|
||||||
|
'Attach',
|
||||||
|
'autocite',
|
||||||
|
'Autonomy',
|
||||||
|
'axios\/',
|
||||||
|
'B-l-i-t-z-B-O-T',
|
||||||
|
'Backlink-Ceck',
|
||||||
|
'backlink-check',
|
||||||
|
'BacklinkHttpStatus',
|
||||||
|
'BackStreet',
|
||||||
|
'BackWeb',
|
||||||
|
'Bad-Neighborhood',
|
||||||
|
'Badass',
|
||||||
|
'baidu\.com',
|
||||||
|
'Bandit',
|
||||||
|
'basicstate',
|
||||||
|
'BatchFTP',
|
||||||
|
'Battleztar Bazinga',
|
||||||
|
'baypup\/',
|
||||||
|
'BazQux',
|
||||||
|
'BBBike',
|
||||||
|
'BCKLINKS',
|
||||||
|
'BDFetch',
|
||||||
|
'BegunAdvertising',
|
||||||
|
'Bidtellect',
|
||||||
|
'BigBozz',
|
||||||
|
'Bigfoot',
|
||||||
|
'biglotron',
|
||||||
|
'BingLocalSearch',
|
||||||
|
'BingPreview',
|
||||||
|
'binlar',
|
||||||
|
'biNu image cacher',
|
||||||
|
'Bitacle',
|
||||||
|
'biz_Directory',
|
||||||
|
'Black Hole',
|
||||||
|
'Blackboard Safeassign',
|
||||||
|
'BlackWidow',
|
||||||
|
'BlockNote\.Net',
|
||||||
|
'Bloglines',
|
||||||
|
'Bloglovin',
|
||||||
|
'BlogPulseLive',
|
||||||
|
'BlogSearch',
|
||||||
|
'Blogtrottr',
|
||||||
|
'BlowFish',
|
||||||
|
'boitho\.com-dc',
|
||||||
|
'BPImageWalker',
|
||||||
|
'Braintree-Webhooks',
|
||||||
|
'Branch Metrics API',
|
||||||
|
'Branch-Passthrough',
|
||||||
|
'Brandprotect',
|
||||||
|
'BrandVerity',
|
||||||
|
'Brandwatch',
|
||||||
|
'Brodie\/',
|
||||||
|
'Browsershots',
|
||||||
|
'BUbiNG',
|
||||||
|
'Buck\/',
|
||||||
|
'Buddy',
|
||||||
|
'BuiltWith',
|
||||||
|
'Bullseye',
|
||||||
|
'BunnySlippers',
|
||||||
|
'Burf Search',
|
||||||
|
'Butterfly\/',
|
||||||
|
'BuzzSumo',
|
||||||
|
'CAAM\/[0-9]',
|
||||||
|
'CakePHP',
|
||||||
|
'Calculon',
|
||||||
|
'Canary%20Mail',
|
||||||
|
'CaretNail',
|
||||||
|
'catexplorador',
|
||||||
|
'CC Metadata Scaper',
|
||||||
|
'Cegbfeieh',
|
||||||
|
'censys',
|
||||||
|
'Cerberian Drtrs',
|
||||||
|
'CERT\.at-Statistics-Survey',
|
||||||
|
'cg-eye',
|
||||||
|
'changedetection',
|
||||||
|
'ChangesMeter',
|
||||||
|
'Charlotte',
|
||||||
|
'CheckHost',
|
||||||
|
'checkprivacy',
|
||||||
|
'CherryPicker',
|
||||||
|
'ChinaClaw',
|
||||||
|
'Chirp\/',
|
||||||
|
'chkme\.com',
|
||||||
|
'Chlooe',
|
||||||
|
'Chromaxa',
|
||||||
|
'CirrusExplorer',
|
||||||
|
'CISPA Vulnerability Notification',
|
||||||
|
'Citoid',
|
||||||
|
'CJNetworkQuality',
|
||||||
|
'Clarsentia',
|
||||||
|
'clips\.ua\.ac\.be',
|
||||||
|
'Cloud mapping',
|
||||||
|
'CloudEndure',
|
||||||
|
'CloudFlare-AlwaysOnline',
|
||||||
|
'Cloudinary',
|
||||||
|
'cmcm\.com',
|
||||||
|
'coccoc',
|
||||||
|
'cognitiveseo',
|
||||||
|
'colly -',
|
||||||
|
'CommaFeed',
|
||||||
|
'Commons-HttpClient',
|
||||||
|
'commonscan',
|
||||||
|
'contactbigdatafr',
|
||||||
|
'contentkingapp',
|
||||||
|
'convera',
|
||||||
|
'CookieReports',
|
||||||
|
'copyright sheriff',
|
||||||
|
'CopyRightCheck',
|
||||||
|
'Copyscape',
|
||||||
|
'Cosmos4j\.feedback',
|
||||||
|
'Covario-IDS',
|
||||||
|
'Crescent',
|
||||||
|
'Crowsnest',
|
||||||
|
'Criteo',
|
||||||
|
'CSHttp',
|
||||||
|
'curb',
|
||||||
|
'Curious George',
|
||||||
|
'curl',
|
||||||
|
'cuwhois\/',
|
||||||
|
'cybo\.com',
|
||||||
|
'DAP\/NetHTTP',
|
||||||
|
'DareBoost',
|
||||||
|
'DatabaseDriverMysqli',
|
||||||
|
'DataCha0s',
|
||||||
|
'Datafeedwatch',
|
||||||
|
'Datanyze',
|
||||||
|
'DataparkSearch',
|
||||||
|
'dataprovider',
|
||||||
|
'DataXu',
|
||||||
|
'Daum(oa)?[ \/][0-9]',
|
||||||
|
'Demon',
|
||||||
|
'DeuSu',
|
||||||
|
'developers\.google\.com\/\+\/web\/snippet\/',
|
||||||
|
'Devil',
|
||||||
|
'Digg',
|
||||||
|
'Digincore',
|
||||||
|
'DigitalPebble',
|
||||||
|
'Dirbuster',
|
||||||
|
'Discourse Forum Onebox',
|
||||||
|
'Disqus\/',
|
||||||
|
'Dispatch\/',
|
||||||
|
'DittoSpyder',
|
||||||
|
'dlvr',
|
||||||
|
'DMBrowser',
|
||||||
|
'DNSPod-reporting',
|
||||||
|
'docoloc',
|
||||||
|
'Dolphin http client',
|
||||||
|
'DomainAppender',
|
||||||
|
'Donuts Content Explorer',
|
||||||
|
'dotMailer content retrieval',
|
||||||
|
'dotSemantic',
|
||||||
|
'downforeveryoneorjustme',
|
||||||
|
'Download Wonder',
|
||||||
|
'downnotifier',
|
||||||
|
'DowntimeDetector',
|
||||||
|
'Drip',
|
||||||
|
'drupact',
|
||||||
|
'Drupal \(\+http:\/\/drupal\.org\/\)',
|
||||||
|
'DTS Agent',
|
||||||
|
'dubaiindex',
|
||||||
|
'EARTHCOM',
|
||||||
|
'Easy-Thumb',
|
||||||
|
'EasyDL',
|
||||||
|
'Ebingbong',
|
||||||
|
'ec2linkfinder',
|
||||||
|
'eCairn-Grabber',
|
||||||
|
'eCatch',
|
||||||
|
'ECCP',
|
||||||
|
'eContext\/',
|
||||||
|
'Ecxi',
|
||||||
|
'EirGrabber',
|
||||||
|
'ElectricMonk',
|
||||||
|
'elefent',
|
||||||
|
'EMail Exractor',
|
||||||
|
'EMail Wolf',
|
||||||
|
'EmailWolf',
|
||||||
|
'Embarcadero',
|
||||||
|
'Embed PHP Library',
|
||||||
|
'Embedly',
|
||||||
|
'endo\/',
|
||||||
|
'europarchive\.org',
|
||||||
|
'evc-batch',
|
||||||
|
'EventMachine HttpClient',
|
||||||
|
'Everwall Link Expander',
|
||||||
|
'Evidon',
|
||||||
|
'Evrinid',
|
||||||
|
'ExactSearch',
|
||||||
|
'ExaleadCloudview',
|
||||||
|
'Excel\/',
|
||||||
|
'exif',
|
||||||
|
'Exploratodo',
|
||||||
|
'Express WebPictures',
|
||||||
|
'Extreme Picture Finder',
|
||||||
|
'EyeNetIE',
|
||||||
|
'ezooms',
|
||||||
|
'facebookexternalhit',
|
||||||
|
'facebookplatform',
|
||||||
|
'fairshare',
|
||||||
|
'Faraday v',
|
||||||
|
'fasthttp',
|
||||||
|
'Faveeo',
|
||||||
|
'Favicon downloader',
|
||||||
|
'faviconkit',
|
||||||
|
'faviconarchive',
|
||||||
|
'FavOrg',
|
||||||
|
'Feed Wrangler',
|
||||||
|
'Feedable\/',
|
||||||
|
'Feedbin',
|
||||||
|
'FeedBooster',
|
||||||
|
'FeedBucket',
|
||||||
|
'FeedBunch\/',
|
||||||
|
'FeedBurner',
|
||||||
|
'feeder',
|
||||||
|
'Feedly',
|
||||||
|
'FeedshowOnline',
|
||||||
|
'Feedspot',
|
||||||
|
'Feedwind\/',
|
||||||
|
'FeedZcollector',
|
||||||
|
'feeltiptop',
|
||||||
|
'Fetch API',
|
||||||
|
'Fetch\/[0-9]',
|
||||||
|
'Fever\/[0-9]',
|
||||||
|
'FHscan',
|
||||||
|
'Fimap',
|
||||||
|
'findlink',
|
||||||
|
'findthatfile',
|
||||||
|
'FlashGet',
|
||||||
|
'FlipboardBrowserProxy',
|
||||||
|
'FlipboardProxy',
|
||||||
|
'FlipboardRSS',
|
||||||
|
'Flock\/',
|
||||||
|
'fluffy',
|
||||||
|
'Flunky',
|
||||||
|
'flynxapp',
|
||||||
|
'forensiq',
|
||||||
|
'FoundSeoTool',
|
||||||
|
'http:\/\/www.neomo.de\/', //'Francis [Bot]'
|
||||||
|
'free thumbnails',
|
||||||
|
'Freeuploader',
|
||||||
|
'Funnelback',
|
||||||
|
'G-i-g-a-b-o-t',
|
||||||
|
'g00g1e\.net',
|
||||||
|
'ganarvisitas',
|
||||||
|
'geek-tools',
|
||||||
|
'Genieo',
|
||||||
|
'GentleSource',
|
||||||
|
'GetCode',
|
||||||
|
'Getintent',
|
||||||
|
'GetLinkInfo',
|
||||||
|
'getprismatic',
|
||||||
|
'GetRight',
|
||||||
|
'getroot',
|
||||||
|
'GetURLInfo\/',
|
||||||
|
'GetWeb',
|
||||||
|
'Ghost Inspector',
|
||||||
|
'GigablastOpenSource',
|
||||||
|
'GIS-LABS',
|
||||||
|
'github-camo',
|
||||||
|
'github\.com',
|
||||||
|
'Go [\d\.]* package http',
|
||||||
|
'Go http package',
|
||||||
|
'Go-Ahead-Got-It',
|
||||||
|
'Go-http-client',
|
||||||
|
'Go!Zilla',
|
||||||
|
'gobyus',
|
||||||
|
'gofetch',
|
||||||
|
'GomezAgent',
|
||||||
|
'gooblog',
|
||||||
|
'Goodzer\/',
|
||||||
|
'Google AppsViewer',
|
||||||
|
'Google Desktop',
|
||||||
|
'Google favicon',
|
||||||
|
'Google Keyword Suggestion',
|
||||||
|
'Google Keyword Tool',
|
||||||
|
'Google Page Speed Insights',
|
||||||
|
'Google PP Default',
|
||||||
|
'Google Search Console',
|
||||||
|
'Google Web Preview',
|
||||||
|
'Google-Adwords',
|
||||||
|
'Google-Apps-Script',
|
||||||
|
'Google-Calendar-Importer',
|
||||||
|
'Google-HotelAdsVerifier',
|
||||||
|
'Google-HTTP-Java-Client',
|
||||||
|
'Google-Publisher-Plugin',
|
||||||
|
'Google-SearchByImage',
|
||||||
|
'Google-Site-Verification',
|
||||||
|
'Google-Structured-Data-Testing-Tool',
|
||||||
|
'Google-Youtube-Links',
|
||||||
|
'google-xrawler',
|
||||||
|
'GoogleDocs',
|
||||||
|
'GoogleHC\/',
|
||||||
|
'GoogleProducer',
|
||||||
|
'GoogleSites',
|
||||||
|
'Google-Transparency-Report',
|
||||||
|
'Gookey',
|
||||||
|
'GoScraper',
|
||||||
|
'GoSpotCheck',
|
||||||
|
'gosquared-thumbnailer',
|
||||||
|
'Gotit',
|
||||||
|
'GoZilla',
|
||||||
|
'grabify',
|
||||||
|
'GrabNet',
|
||||||
|
'Grafula',
|
||||||
|
'Grammarly',
|
||||||
|
'GrapeFX',
|
||||||
|
'GreatNews',
|
||||||
|
'Gregarius',
|
||||||
|
'GRequests',
|
||||||
|
'grokkit',
|
||||||
|
'grouphigh',
|
||||||
|
'grub-client',
|
||||||
|
'gSOAP\/',
|
||||||
|
'GT::WWW',
|
||||||
|
'GTmetrix',
|
||||||
|
'GuzzleHttp',
|
||||||
|
'gvfs\/',
|
||||||
|
'HAA(A)?RTLAND http client',
|
||||||
|
'Haansoft',
|
||||||
|
'hackney\/',
|
||||||
|
'Hadi Agent',
|
||||||
|
'HappyApps-WebCheck',
|
||||||
|
'Hatena',
|
||||||
|
'Havij',
|
||||||
|
'HeadlessChrome',
|
||||||
|
'HEADMasterSEO',
|
||||||
|
'HeartRails_Capture',
|
||||||
|
'help@dataminr\.com',
|
||||||
|
'heritrix',
|
||||||
|
'historious',
|
||||||
|
'hkedcity',
|
||||||
|
'hledejLevne\.cz',
|
||||||
|
'Hloader',
|
||||||
|
'HMView',
|
||||||
|
'Holmes',
|
||||||
|
'HonesoSearchEngine',
|
||||||
|
'HootSuite Image proxy',
|
||||||
|
'Hootsuite-WebFeed',
|
||||||
|
'hosterstats',
|
||||||
|
'HostTracker',
|
||||||
|
'ht:\/\/check',
|
||||||
|
'htdig',
|
||||||
|
'HTMLparser',
|
||||||
|
'htmlyse',
|
||||||
|
'HTTP Banner Detection',
|
||||||
|
'HTTP_Compression_Test',
|
||||||
|
'http_request2',
|
||||||
|
'http_requester',
|
||||||
|
'http-get',
|
||||||
|
'HTTP-Header-Abfrage',
|
||||||
|
'http-kit',
|
||||||
|
'http-request\/',
|
||||||
|
'HTTP-Tiny',
|
||||||
|
'HTTP::Lite',
|
||||||
|
'http\.rb\/',
|
||||||
|
'http_get',
|
||||||
|
'HttpComponents',
|
||||||
|
'httphr',
|
||||||
|
'HTTPMon',
|
||||||
|
'httpRequest',
|
||||||
|
'httpscheck',
|
||||||
|
'httpssites_power',
|
||||||
|
'httpunit',
|
||||||
|
'HttpUrlConnection',
|
||||||
|
'httrack',
|
||||||
|
'huaweisymantec',
|
||||||
|
'HubSpot ',
|
||||||
|
'Humanlinks',
|
||||||
|
'i2kconnect\/',
|
||||||
|
'Iblog',
|
||||||
|
'ichiro',
|
||||||
|
'Id-search',
|
||||||
|
'IdeelaborPlagiaat',
|
||||||
|
'IDG Twitter Links Resolver',
|
||||||
|
'IDwhois\/',
|
||||||
|
'Iframely',
|
||||||
|
'igdeSpyder',
|
||||||
|
'IlTrovatore',
|
||||||
|
'Image Fetch',
|
||||||
|
'Image Sucker',
|
||||||
|
'ImageEngine\/',
|
||||||
|
'ImageVisu\/',
|
||||||
|
'Imagga',
|
||||||
|
'imagineeasy',
|
||||||
|
'imgsizer',
|
||||||
|
'InAGist',
|
||||||
|
'inbound\.li parser',
|
||||||
|
'InDesign%20CC',
|
||||||
|
'Indy Library',
|
||||||
|
'InetURL',
|
||||||
|
'infegy',
|
||||||
|
'infohelfer',
|
||||||
|
'InfoTekies',
|
||||||
|
'InfoWizards Reciprocal Link',
|
||||||
|
'inpwrd\.com',
|
||||||
|
'instabid',
|
||||||
|
'Instapaper',
|
||||||
|
'Integrity',
|
||||||
|
'integromedb',
|
||||||
|
'Intelliseek',
|
||||||
|
'InterGET',
|
||||||
|
'internet_archive',
|
||||||
|
'Internet Ninja',
|
||||||
|
'InternetSeer',
|
||||||
|
'internetVista monitor',
|
||||||
|
'intraVnews',
|
||||||
|
'IODC',
|
||||||
|
'IOI',
|
||||||
|
'iplabel',
|
||||||
|
'ips-agent',
|
||||||
|
'IPS\/[0-9]',
|
||||||
|
'IPWorks HTTP\/S Component',
|
||||||
|
'iqdb\/',
|
||||||
|
'Iria',
|
||||||
|
'Irokez',
|
||||||
|
'isitup\.org',
|
||||||
|
'iskanie',
|
||||||
|
'isUp\.li',
|
||||||
|
'iThemes Sync\/',
|
||||||
|
'iZSearch',
|
||||||
|
'JAHHO',
|
||||||
|
'janforman',
|
||||||
|
'Jaunt\/',
|
||||||
|
'Jbrofuzz',
|
||||||
|
'Jersey\/',
|
||||||
|
'JetCar',
|
||||||
|
'Jigsaw',
|
||||||
|
'Jobboerse',
|
||||||
|
'JobFeed discovery',
|
||||||
|
'Jobg8 URL Monitor',
|
||||||
|
'jobo',
|
||||||
|
'Jobrapido',
|
||||||
|
'Jobsearch1\.5',
|
||||||
|
'JoinVision Generic',
|
||||||
|
'JolokiaPwn',
|
||||||
|
'Joomla',
|
||||||
|
'Jorgee',
|
||||||
|
'JS-Kit',
|
||||||
|
'JustView',
|
||||||
|
'Kaspersky Lab CFR link resolver',
|
||||||
|
'Kelny\/',
|
||||||
|
'Kerrigan\/',
|
||||||
|
'KeyCDN',
|
||||||
|
'Keyword Density',
|
||||||
|
'Keywords Research',
|
||||||
|
'KickFire',
|
||||||
|
'KimonoLabs\/',
|
||||||
|
'Kml-Google',
|
||||||
|
'knows\.is',
|
||||||
|
'KOCMOHABT',
|
||||||
|
'kouio',
|
||||||
|
'kube-probe',
|
||||||
|
'kulturarw3',
|
||||||
|
'KumKie',
|
||||||
|
'L\.webis',
|
||||||
|
'Larbin',
|
||||||
|
'Lavf\/',
|
||||||
|
'LeechFTP',
|
||||||
|
'LeechGet',
|
||||||
|
'letsencrypt',
|
||||||
|
'Lftp',
|
||||||
|
'LibVLC',
|
||||||
|
'LibWeb',
|
||||||
|
'Libwhisker',
|
||||||
|
'libwww',
|
||||||
|
'Licorne',
|
||||||
|
'Liferea\/',
|
||||||
|
'Lightspeedsystems',
|
||||||
|
'Lighthouse',
|
||||||
|
'Likse',
|
||||||
|
'Link Valet',
|
||||||
|
'link_thumbnailer',
|
||||||
|
'LinkAlarm\/',
|
||||||
|
'linkCheck',
|
||||||
|
'linkdex',
|
||||||
|
'LinkExaminer',
|
||||||
|
'linkfluence',
|
||||||
|
'linkpeek',
|
||||||
|
'LinkPreviewGenerator',
|
||||||
|
'LinkScan',
|
||||||
|
'LinksManager',
|
||||||
|
'LinkTiger',
|
||||||
|
'LinkWalker',
|
||||||
|
'Lipperhey',
|
||||||
|
'Litemage_walker',
|
||||||
|
'livedoor ScreenShot',
|
||||||
|
'LoadImpactRload',
|
||||||
|
'localsearch-web',
|
||||||
|
'LongURL API',
|
||||||
|
'looksystems\.net',
|
||||||
|
'ltx71',
|
||||||
|
'lua-resty-http',
|
||||||
|
'lwp-request',
|
||||||
|
'lwp-trivial',
|
||||||
|
'LWP::Simple',
|
||||||
|
'lycos',
|
||||||
|
'LYT\.SR',
|
||||||
|
'mabontland',
|
||||||
|
'Mag-Net',
|
||||||
|
'MagpieRSS',
|
||||||
|
'Mail\.Ru',
|
||||||
|
'MailChimp',
|
||||||
|
'Majestic12',
|
||||||
|
'makecontact\/',
|
||||||
|
'Mandrill',
|
||||||
|
'MapperCmd',
|
||||||
|
'marketinggrader',
|
||||||
|
'MarkMonitor',
|
||||||
|
'MarkWatch',
|
||||||
|
'Mass Downloader',
|
||||||
|
'masscan\/',
|
||||||
|
'Mata Hari',
|
||||||
|
'Mediapartners-Google',
|
||||||
|
'mediawords',
|
||||||
|
'MegaIndex\.ru',
|
||||||
|
'MeltwaterNews',
|
||||||
|
'Melvil Rawi',
|
||||||
|
'MemGator',
|
||||||
|
'Metaspinner',
|
||||||
|
'MetaURI',
|
||||||
|
'MFC_Tear_Sample',
|
||||||
|
'Microsearch',
|
||||||
|
'Microsoft Office ',
|
||||||
|
'Microsoft Outlook',
|
||||||
|
'Microsoft Windows Network Diagnostics',
|
||||||
|
'Microsoft-WebDAV-MiniRedir',
|
||||||
|
'Microsoft Data Access',
|
||||||
|
'MIDown tool',
|
||||||
|
'MIIxpc',
|
||||||
|
'Mindjet',
|
||||||
|
'Miniature\.io',
|
||||||
|
'Miniflux',
|
||||||
|
'Mister PiX',
|
||||||
|
'mixdata dot com',
|
||||||
|
'mixed-content-scan',
|
||||||
|
'Mixmax-LinkPreview',
|
||||||
|
'mixnode',
|
||||||
|
'Mnogosearch',
|
||||||
|
'mogimogi',
|
||||||
|
'Mojeek',
|
||||||
|
'Mojolicious \(Perl\)',
|
||||||
|
'Monit\/',
|
||||||
|
'monitis',
|
||||||
|
'Monitority\/',
|
||||||
|
'montastic',
|
||||||
|
'MonTools',
|
||||||
|
'Moreover',
|
||||||
|
'Morfeus Fucking Scanner',
|
||||||
|
'Morning Paper',
|
||||||
|
'MovableType',
|
||||||
|
'mowser',
|
||||||
|
'Mrcgiguy',
|
||||||
|
'MS Web Services Client Protocol',
|
||||||
|
'MSFrontPage',
|
||||||
|
'mShots',
|
||||||
|
'MuckRack\/',
|
||||||
|
'muhstik-scan',
|
||||||
|
'MVAClient',
|
||||||
|
'MxToolbox\/',
|
||||||
|
'nagios',
|
||||||
|
'Najdi\.si',
|
||||||
|
'Name Intelligence',
|
||||||
|
'Nameprotect',
|
||||||
|
'Navroad',
|
||||||
|
'NearSite',
|
||||||
|
'Needle',
|
||||||
|
'Nessus',
|
||||||
|
'Net Vampire',
|
||||||
|
'NetAnts',
|
||||||
|
'NETCRAFT',
|
||||||
|
'NetLyzer',
|
||||||
|
'NetMechanic',
|
||||||
|
'NetNewsWire',
|
||||||
|
'Netpursual',
|
||||||
|
'netresearch',
|
||||||
|
'NetShelter ContentScan',
|
||||||
|
'Netsparker',
|
||||||
|
'NetTrack',
|
||||||
|
'Netvibes',
|
||||||
|
'NetZIP',
|
||||||
|
'Neustar WPM',
|
||||||
|
'NeutrinoAPI',
|
||||||
|
'NewRelicPinger',
|
||||||
|
'NewsBlur .*Finder',
|
||||||
|
'NewsGator',
|
||||||
|
'newsme',
|
||||||
|
'newspaper\/',
|
||||||
|
'Nexgate Ruby Client',
|
||||||
|
'NG-Search',
|
||||||
|
'Nibbler',
|
||||||
|
'NICErsPRO',
|
||||||
|
'Nikto',
|
||||||
|
'nineconnections',
|
||||||
|
'NLNZ_IAHarvester',
|
||||||
|
'Nmap Scripting Engine',
|
||||||
|
'node-superagent',
|
||||||
|
'node-urllib',
|
||||||
|
'node\.io',
|
||||||
|
'Nodemeter',
|
||||||
|
'NodePing',
|
||||||
|
'nominet\.org\.uk',
|
||||||
|
'nominet\.uk',
|
||||||
|
'Norton-Safeweb',
|
||||||
|
'Notifixious',
|
||||||
|
'notifyninja',
|
||||||
|
'nuhk',
|
||||||
|
'nutch',
|
||||||
|
'Nuzzel',
|
||||||
|
'nWormFeedFinder',
|
||||||
|
'nyawc\/',
|
||||||
|
'Nymesis',
|
||||||
|
'NYU',
|
||||||
|
'Ocelli\/',
|
||||||
|
'Octopus',
|
||||||
|
'oegp',
|
||||||
|
'Offline Explorer',
|
||||||
|
'Offline Navigator',
|
||||||
|
'og-scraper',
|
||||||
|
'okhttp',
|
||||||
|
'omgili',
|
||||||
|
'OMSC',
|
||||||
|
'Online Domain Tools',
|
||||||
|
'OpenCalaisSemanticProxy',
|
||||||
|
'Openfind',
|
||||||
|
'OpenLinkProfiler',
|
||||||
|
'Openstat\/',
|
||||||
|
'OpenVAS',
|
||||||
|
'Optimizer',
|
||||||
|
'Orbiter',
|
||||||
|
'OrgProbe\/',
|
||||||
|
'orion-semantics',
|
||||||
|
'Outlook-Express',
|
||||||
|
'Outlook-iOS',
|
||||||
|
'ow\.ly',
|
||||||
|
'Owler',
|
||||||
|
'ownCloud News',
|
||||||
|
'OxfordCloudService',
|
||||||
|
'Page Valet',
|
||||||
|
'page_verifier',
|
||||||
|
'page scorer',
|
||||||
|
'page2rss',
|
||||||
|
'PageGrabber',
|
||||||
|
'PagePeeker',
|
||||||
|
'PageScorer',
|
||||||
|
'Pagespeed\/',
|
||||||
|
'Panopta',
|
||||||
|
'panscient',
|
||||||
|
'Papa Foto',
|
||||||
|
'parsijoo',
|
||||||
|
'Pavuk',
|
||||||
|
'PayPal IPN',
|
||||||
|
'pcBrowser',
|
||||||
|
'Pcore-HTTP',
|
||||||
|
'Pearltrees',
|
||||||
|
'PECL::HTTP',
|
||||||
|
'peerindex',
|
||||||
|
'Peew',
|
||||||
|
'PeoplePal',
|
||||||
|
'Perlu -',
|
||||||
|
'PhantomJS Screenshoter',
|
||||||
|
'PhantomJS\/',
|
||||||
|
'Photon\/',
|
||||||
|
'phpservermon',
|
||||||
|
'Pi-Monster',
|
||||||
|
'Picscout',
|
||||||
|
'Picsearch',
|
||||||
|
'PictureFinder',
|
||||||
|
'Pimonster',
|
||||||
|
'ping\.blo\.gs',
|
||||||
|
'Pingability',
|
||||||
|
'PingAdmin\.Ru',
|
||||||
|
'Pingdom',
|
||||||
|
'Pingoscope',
|
||||||
|
'PingSpot',
|
||||||
|
'pinterest\.com',
|
||||||
|
'Pixray',
|
||||||
|
'Pizilla',
|
||||||
|
'Plagger\/',
|
||||||
|
'Ploetz \+ Zeller',
|
||||||
|
'Plukkie',
|
||||||
|
'plumanalytics',
|
||||||
|
'PocketImageCache',
|
||||||
|
'PocketParser',
|
||||||
|
'Pockey',
|
||||||
|
'POE-Component-Client-HTTP',
|
||||||
|
'Polymail\/',
|
||||||
|
'Pompos',
|
||||||
|
'Porkbun',
|
||||||
|
'Port Monitor',
|
||||||
|
'postano',
|
||||||
|
'PostmanRuntime',
|
||||||
|
'PostPost',
|
||||||
|
'postrank',
|
||||||
|
'PowerPoint\/',
|
||||||
|
'Priceonomics Analysis Engine',
|
||||||
|
'PrintFriendly',
|
||||||
|
'PritTorrent',
|
||||||
|
'Prlog',
|
||||||
|
'probethenet',
|
||||||
|
'Project 25499',
|
||||||
|
'prospectb2b',
|
||||||
|
'Protopage',
|
||||||
|
'ProWebWalker',
|
||||||
|
'proximic',
|
||||||
|
'PRTG Network Monitor',
|
||||||
|
'pshtt, https scanning',
|
||||||
|
'PTST ',
|
||||||
|
'PTST\/[0-9]+',
|
||||||
|
'Pulsepoint XT3 web scraper',
|
||||||
|
'Pump',
|
||||||
|
'Python-httplib2',
|
||||||
|
'python-requests',
|
||||||
|
'Python-urllib',
|
||||||
|
'Qirina Hurdler',
|
||||||
|
'QQDownload',
|
||||||
|
'QrafterPro',
|
||||||
|
'Qseero',
|
||||||
|
'Qualidator',
|
||||||
|
'QueryN Metasearch',
|
||||||
|
'queuedriver',
|
||||||
|
'Quora Link Preview',
|
||||||
|
'Qwantify',
|
||||||
|
'Radian6',
|
||||||
|
'RankActive',
|
||||||
|
'RankFlex',
|
||||||
|
'RankSonicSiteAuditor',
|
||||||
|
'Re-re Studio',
|
||||||
|
'ReactorNetty',
|
||||||
|
'Readability',
|
||||||
|
'RealDownload',
|
||||||
|
'RealPlayer%20Downloader',
|
||||||
|
'RebelMouse',
|
||||||
|
'Recorder',
|
||||||
|
'RecurPost\/',
|
||||||
|
'redback\/',
|
||||||
|
'ReederForMac',
|
||||||
|
'ReGet',
|
||||||
|
'RepoMonkey',
|
||||||
|
'request\.js',
|
||||||
|
'reqwest\/',
|
||||||
|
'ResponseCodeTest',
|
||||||
|
'RestSharp',
|
||||||
|
'Riddler',
|
||||||
|
'Rival IQ',
|
||||||
|
'Robosourcer',
|
||||||
|
'Robozilla',
|
||||||
|
'ROI Hunter',
|
||||||
|
'RPT-HTTPClient',
|
||||||
|
'RSSOwl',
|
||||||
|
'safe-agent-scanner',
|
||||||
|
'SalesIntelligent',
|
||||||
|
'Saleslift',
|
||||||
|
'Sendsay\.Ru',
|
||||||
|
'SauceNAO',
|
||||||
|
'SBIder',
|
||||||
|
'scalaj-http',
|
||||||
|
'scan\.lol',
|
||||||
|
'ScanAlert',
|
||||||
|
'Scoop',
|
||||||
|
'scooter',
|
||||||
|
'ScoutJet',
|
||||||
|
'ScoutURLMonitor',
|
||||||
|
'ScrapeBox Page Scanner',
|
||||||
|
'SimpleScraper',
|
||||||
|
'Scrapy',
|
||||||
|
'Screaming',
|
||||||
|
'ScreenShotService',
|
||||||
|
'Scrubby',
|
||||||
|
'Scrutiny\/',
|
||||||
|
'search\.thunderstone',
|
||||||
|
'Search37',
|
||||||
|
'searchenginepromotionhelp',
|
||||||
|
'Searchestate',
|
||||||
|
'SearchExpress',
|
||||||
|
'SearchSight',
|
||||||
|
'Seeker',
|
||||||
|
'semanticdiscovery',
|
||||||
|
'semanticjuice',
|
||||||
|
'Semiocast HTTP client',
|
||||||
|
'Semrush',
|
||||||
|
'sentry\/',
|
||||||
|
'SEO Browser',
|
||||||
|
'Seo Servis',
|
||||||
|
'seo-nastroj\.cz',
|
||||||
|
'seo4ajax',
|
||||||
|
'Seobility',
|
||||||
|
'SEOCentro',
|
||||||
|
'SeoCheck',
|
||||||
|
'SEOkicks',
|
||||||
|
'Seomoz',
|
||||||
|
'SEOprofiler',
|
||||||
|
'SEOsearch',
|
||||||
|
'seoscanners',
|
||||||
|
'seositecheckup',
|
||||||
|
'SEOstats',
|
||||||
|
'servernfo',
|
||||||
|
'sexsearcher',
|
||||||
|
'Seznam',
|
||||||
|
'Shelob',
|
||||||
|
'Shodan',
|
||||||
|
'Shoppimon',
|
||||||
|
'ShopWiki',
|
||||||
|
'ShortLinkTranslate',
|
||||||
|
'shrinktheweb',
|
||||||
|
'Sideqik',
|
||||||
|
'SimplePie',
|
||||||
|
'SimplyFast',
|
||||||
|
'Siphon',
|
||||||
|
'SISTRIX',
|
||||||
|
'Site-Shot\/',
|
||||||
|
'Site Sucker',
|
||||||
|
'Site24x7',
|
||||||
|
'SiteBar',
|
||||||
|
'Sitebeam',
|
||||||
|
'Sitebulb\/',
|
||||||
|
'SiteCondor',
|
||||||
|
'SiteExplorer',
|
||||||
|
'SiteGuardian',
|
||||||
|
'Siteimprove',
|
||||||
|
'SiteIndexed',
|
||||||
|
'Sitemap(s)? Generator',
|
||||||
|
'SitemapGenerator',
|
||||||
|
'SiteMonitor',
|
||||||
|
'Siteshooter B0t',
|
||||||
|
'SiteSnagger',
|
||||||
|
'SiteSucker',
|
||||||
|
'SiteTruth',
|
||||||
|
'Sitevigil',
|
||||||
|
'sitexy\.com',
|
||||||
|
'SkypeUriPreview',
|
||||||
|
'Slack\/',
|
||||||
|
'slider\.com',
|
||||||
|
'slurp',
|
||||||
|
'SlySearch',
|
||||||
|
'SmartDownload',
|
||||||
|
'SMRF URL Expander',
|
||||||
|
'SMUrlExpander',
|
||||||
|
'Snake',
|
||||||
|
'Snappy',
|
||||||
|
'SnapSearch',
|
||||||
|
'Snarfer\/',
|
||||||
|
'SniffRSS',
|
||||||
|
'sniptracker',
|
||||||
|
'Snoopy',
|
||||||
|
'SnowHaze Search',
|
||||||
|
'sogou web',
|
||||||
|
'SortSite',
|
||||||
|
'Sottopop',
|
||||||
|
'sovereign\.ai',
|
||||||
|
'SpaceBison',
|
||||||
|
'SpamExperts',
|
||||||
|
'Spammen',
|
||||||
|
'Spanner',
|
||||||
|
'spaziodati',
|
||||||
|
'SPDYCheck',
|
||||||
|
'Specificfeeds',
|
||||||
|
'speedy',
|
||||||
|
'SPEng',
|
||||||
|
'Spinn3r',
|
||||||
|
'spray-can',
|
||||||
|
'Sprinklr ',
|
||||||
|
'spyonweb',
|
||||||
|
'sqlmap',
|
||||||
|
'Sqlworm',
|
||||||
|
'Sqworm',
|
||||||
|
'SSL Labs',
|
||||||
|
'ssl-tools',
|
||||||
|
'StackRambler',
|
||||||
|
'Statastico\/',
|
||||||
|
'StatusCake',
|
||||||
|
'Steeler',
|
||||||
|
'Stratagems Kumo',
|
||||||
|
'Stroke\.cz',
|
||||||
|
'StudioFACA',
|
||||||
|
'StumbleUpon',
|
||||||
|
'suchen',
|
||||||
|
'Sucuri',
|
||||||
|
'summify',
|
||||||
|
'SuperHTTP',
|
||||||
|
'Surphace Scout',
|
||||||
|
'Suzuran',
|
||||||
|
'SwiteScraper',
|
||||||
|
'Symfony BrowserKit',
|
||||||
|
'Symfony2 BrowserKit',
|
||||||
|
'SynHttpClient-Built',
|
||||||
|
'Sysomos',
|
||||||
|
'sysscan',
|
||||||
|
'Szukacz',
|
||||||
|
'T0PHackTeam',
|
||||||
|
'tAkeOut',
|
||||||
|
'Tarantula\/',
|
||||||
|
'Taringa UGC',
|
||||||
|
'TarmotGezgin',
|
||||||
|
'Teleport',
|
||||||
|
'Telesoft',
|
||||||
|
'Telesphoreo',
|
||||||
|
'Telesphorep',
|
||||||
|
'Tenon\.io',
|
||||||
|
'teoma',
|
||||||
|
'terrainformatica',
|
||||||
|
'Test Certificate Info',
|
||||||
|
'testuri',
|
||||||
|
'Tetrahedron',
|
||||||
|
'The Drop Reaper',
|
||||||
|
'The Expert HTML Source Viewer',
|
||||||
|
'The Knowledge AI',
|
||||||
|
'The Intraformant',
|
||||||
|
'theinternetrules',
|
||||||
|
'TheNomad',
|
||||||
|
'Thinklab',
|
||||||
|
'Thumbshots',
|
||||||
|
'ThumbSniper',
|
||||||
|
'timewe\.net',
|
||||||
|
'TinEye',
|
||||||
|
'Tiny Tiny RSS',
|
||||||
|
'TLSProbe\/',
|
||||||
|
'Toata',
|
||||||
|
'topster',
|
||||||
|
'touche\.com',
|
||||||
|
'Traackr\.com',
|
||||||
|
'tracemyfile',
|
||||||
|
'Trackuity',
|
||||||
|
'TrapitAgent',
|
||||||
|
'Trendiction',
|
||||||
|
'Trendsmap',
|
||||||
|
'trendspottr',
|
||||||
|
'truwoGPS',
|
||||||
|
'TryJsoup',
|
||||||
|
'TulipChain',
|
||||||
|
'Turingos',
|
||||||
|
'Turnitin',
|
||||||
|
'tweetedtimes',
|
||||||
|
'Tweetminster',
|
||||||
|
'Tweezler\/',
|
||||||
|
'twibble',
|
||||||
|
'Twice',
|
||||||
|
'Twikle',
|
||||||
|
'Twingly',
|
||||||
|
'Twisted PageGetter',
|
||||||
|
'Typhoeus',
|
||||||
|
'ubermetrics-technologies',
|
||||||
|
'uclassify',
|
||||||
|
'UdmSearch',
|
||||||
|
'unchaos',
|
||||||
|
'unirest-java',
|
||||||
|
'UniversalFeedParser',
|
||||||
|
'Unshorten\.It',
|
||||||
|
'Untiny',
|
||||||
|
'UnwindFetchor',
|
||||||
|
'updated',
|
||||||
|
'updown\.io daemon',
|
||||||
|
'Upflow',
|
||||||
|
'Uptimia',
|
||||||
|
'Urlcheckr',
|
||||||
|
'URL Verifier',
|
||||||
|
'URLitor',
|
||||||
|
'urlresolver',
|
||||||
|
'Urlstat',
|
||||||
|
'URLTester',
|
||||||
|
'UrlTrends Ranking Updater',
|
||||||
|
'URLy Warning',
|
||||||
|
'URLy\.Warning',
|
||||||
|
'Vacuum',
|
||||||
|
'Vagabondo',
|
||||||
|
'VB Project',
|
||||||
|
'vBSEO',
|
||||||
|
'VCI',
|
||||||
|
'via ggpht\.com GoogleImageProxy',
|
||||||
|
'VidibleScraper',
|
||||||
|
'Virusdie',
|
||||||
|
'visionutils',
|
||||||
|
'vkShare',
|
||||||
|
'VoidEYE',
|
||||||
|
'Voil',
|
||||||
|
'voltron',
|
||||||
|
'voyager\/',
|
||||||
|
'VSAgent\/',
|
||||||
|
'VSB-TUO\/',
|
||||||
|
'Vulnbusters Meter',
|
||||||
|
'VYU2',
|
||||||
|
'w3af\.org',
|
||||||
|
'W3C_Unicorn',
|
||||||
|
'W3C-checklink',
|
||||||
|
'W3C-mobileOK',
|
||||||
|
'WAC-OFU',
|
||||||
|
'Wallpapers\/[0-9]+',
|
||||||
|
'WallpapersHD',
|
||||||
|
'wangling',
|
||||||
|
'Wappalyzer',
|
||||||
|
'WatchMouse',
|
||||||
|
'WbSrch\/',
|
||||||
|
'WDT\.io',
|
||||||
|
'web-capture\.net',
|
||||||
|
'Web-sniffer',
|
||||||
|
'Web Auto',
|
||||||
|
'Web Collage',
|
||||||
|
'Web Enhancer',
|
||||||
|
'Web Fetch',
|
||||||
|
'Web Fuck',
|
||||||
|
'Web Pix',
|
||||||
|
'Web Sauger',
|
||||||
|
'Web Sucker',
|
||||||
|
'Webalta',
|
||||||
|
'Webauskunft',
|
||||||
|
'WebAuto',
|
||||||
|
'WebCapture',
|
||||||
|
'WebClient\/',
|
||||||
|
'webcollage',
|
||||||
|
'WebCookies',
|
||||||
|
'WebCopier',
|
||||||
|
'WebCorp',
|
||||||
|
'WebDataStats',
|
||||||
|
'WebDoc',
|
||||||
|
'WebEnhancer',
|
||||||
|
'WebFetch',
|
||||||
|
'WebFuck',
|
||||||
|
'WebGazer',
|
||||||
|
'WebGo IS',
|
||||||
|
'WebImageCollector',
|
||||||
|
'WebImages',
|
||||||
|
'WebIndex',
|
||||||
|
'webkit2png',
|
||||||
|
'WebLeacher',
|
||||||
|
'webmastercoffee',
|
||||||
|
'webmon ',
|
||||||
|
'WebPix',
|
||||||
|
'WebReaper',
|
||||||
|
'WebSauger',
|
||||||
|
'webscreenie',
|
||||||
|
'Webshag',
|
||||||
|
'Webshot',
|
||||||
|
'Website Quester',
|
||||||
|
'websitepulse agent',
|
||||||
|
'WebsiteQuester',
|
||||||
|
'Websnapr',
|
||||||
|
'WebSniffer',
|
||||||
|
'Webster',
|
||||||
|
'WebStripper',
|
||||||
|
'WebSucker',
|
||||||
|
'Webthumb\/',
|
||||||
|
'WebThumbnail',
|
||||||
|
'WebWhacker',
|
||||||
|
'WebZIP',
|
||||||
|
'WeLikeLinks',
|
||||||
|
'WEPA',
|
||||||
|
'WeSEE',
|
||||||
|
'wf84',
|
||||||
|
'Wfuzz\/',
|
||||||
|
'wget',
|
||||||
|
'WhatsApp',
|
||||||
|
'WhatsMyIP',
|
||||||
|
'WhatWeb',
|
||||||
|
'WhereGoes\?',
|
||||||
|
'Whibse',
|
||||||
|
'WhoRunsCoinHive',
|
||||||
|
'Whynder Magnet',
|
||||||
|
'Windows-RSS-Platform',
|
||||||
|
'WinPodder',
|
||||||
|
'wkhtmlto',
|
||||||
|
'wmtips',
|
||||||
|
'Woko',
|
||||||
|
'woorankreview',
|
||||||
|
'Word\/',
|
||||||
|
'WordPress\/',
|
||||||
|
'WordupinfoSearch',
|
||||||
|
'wotbox',
|
||||||
|
'WP Engine Install Performance API',
|
||||||
|
'wpif',
|
||||||
|
'wprecon\.com survey',
|
||||||
|
'WPScan',
|
||||||
|
'wscheck',
|
||||||
|
'Wtrace',
|
||||||
|
'WWW-Collector-E',
|
||||||
|
'WWW-Mechanize',
|
||||||
|
'WWW::Document',
|
||||||
|
'WWW::Mechanize',
|
||||||
|
'www\.monitor\.us',
|
||||||
|
'WWWOFFLE',
|
||||||
|
'x09Mozilla',
|
||||||
|
'x22Mozilla',
|
||||||
|
'XaxisSemanticsClassifier',
|
||||||
|
'Xenu Link Sleuth',
|
||||||
|
'XING-contenttabreceiver',
|
||||||
|
'xpymep([0-9]?)\.exe',
|
||||||
|
'Y!J-(ASR|BSC)',
|
||||||
|
'Y\!J-BRW',
|
||||||
|
'Yaanb',
|
||||||
|
'yacy',
|
||||||
|
'Yahoo Link Preview',
|
||||||
|
'YahooCacheSystem',
|
||||||
|
'YahooYSMcm',
|
||||||
|
'YandeG',
|
||||||
|
'Yandex(?!Search)',
|
||||||
|
'yanga',
|
||||||
|
'yeti',
|
||||||
|
'Yo-yo',
|
||||||
|
'Yoleo Consumer',
|
||||||
|
'yoogliFetchAgent',
|
||||||
|
'YottaaMonitor',
|
||||||
|
'Your-Website-Sucks',
|
||||||
|
'yourls\.org',
|
||||||
|
'YoYs\.net',
|
||||||
|
'YP\.PL',
|
||||||
|
'Zabbix',
|
||||||
|
'Zade',
|
||||||
|
'Zao',
|
||||||
|
'Zauba',
|
||||||
|
'Zemanta Aggregator',
|
||||||
|
'Zend_Http_Client',
|
||||||
|
'Zend\\\\Http\\\\Client',
|
||||||
|
'Zermelo',
|
||||||
|
'Zeus ',
|
||||||
|
'zgrab',
|
||||||
|
'ZnajdzFoto',
|
||||||
|
'Zombie\.js',
|
||||||
|
'Zoom\.Mac',
|
||||||
|
'ZyBorg',
|
||||||
|
'[a-z0-9\-_]*(bot|crawl|archiver|transcoder|spider|uptime|validator|fetcher|cron|checker|reader|extractor|monitoring|analyzer)',
|
||||||
|
);
|
||||||
|
}
|
||||||
72
blockbot/vendor/jaybizzle/crawler-detect/src/Fixtures/Exclusions.php
vendored
Normal file
72
blockbot/vendor/jaybizzle/crawler-detect/src/Fixtures/Exclusions.php
vendored
Normal file
|
|
@ -0,0 +1,72 @@
|
||||||
|
<?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\Fixtures;
|
||||||
|
|
||||||
|
class Exclusions extends AbstractProvider
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* List of strings to remove from the user agent before running the crawler regex
|
||||||
|
* Over a large list of user agents, this gives us about a 55% speed increase!
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $data = array(
|
||||||
|
'Safari.[\d\.]*',
|
||||||
|
'Firefox.[\d\.]*',
|
||||||
|
' Chrome.[\d\.]*',
|
||||||
|
'Chromium.[\d\.]*',
|
||||||
|
'MSIE.[\d\.]',
|
||||||
|
'Opera\/[\d\.]*',
|
||||||
|
'Mozilla.[\d\.]*',
|
||||||
|
'AppleWebKit.[\d\.]*',
|
||||||
|
'Trident.[\d\.]*',
|
||||||
|
'Windows NT.[\d\.]*',
|
||||||
|
'Android [\d\.]*',
|
||||||
|
'Macintosh.',
|
||||||
|
'Ubuntu',
|
||||||
|
'Linux',
|
||||||
|
'[ ]Intel',
|
||||||
|
'Mac OS X [\d_]*',
|
||||||
|
'(like )?Gecko(.[\d\.]*)?',
|
||||||
|
'KHTML,',
|
||||||
|
'CriOS.[\d\.]*',
|
||||||
|
'CPU iPhone OS ([0-9_])* like Mac OS X',
|
||||||
|
'CPU OS ([0-9_])* like Mac OS X',
|
||||||
|
'iPod',
|
||||||
|
'compatible',
|
||||||
|
'x86_..',
|
||||||
|
'i686',
|
||||||
|
'x64',
|
||||||
|
'X11',
|
||||||
|
'rv:[\d\.]*',
|
||||||
|
'Version.[\d\.]*',
|
||||||
|
'WOW64',
|
||||||
|
'Win64',
|
||||||
|
'Dalvik.[\d\.]*',
|
||||||
|
' \.NET CLR [\d\.]*',
|
||||||
|
'Presto.[\d\.]*',
|
||||||
|
'Media Center PC',
|
||||||
|
'BlackBerry',
|
||||||
|
'Build',
|
||||||
|
'Opera Mini\/\d{1,2}\.\d{1,2}\.[\d\.]*\/\d{1,2}\.',
|
||||||
|
'Opera',
|
||||||
|
' \.NET[\d\.]*',
|
||||||
|
'cubot',
|
||||||
|
'; M bot',
|
||||||
|
'; CRONO',
|
||||||
|
'; B bot',
|
||||||
|
'; IDbot',
|
||||||
|
'; ID bot',
|
||||||
|
'; POWER BOT',
|
||||||
|
';', // Remove the following characters ;
|
||||||
|
);
|
||||||
|
}
|
||||||
37
blockbot/vendor/jaybizzle/crawler-detect/src/Fixtures/Headers.php
vendored
Normal file
37
blockbot/vendor/jaybizzle/crawler-detect/src/Fixtures/Headers.php
vendored
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
<?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\Fixtures;
|
||||||
|
|
||||||
|
class Headers extends AbstractProvider
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* All possible HTTP headers that represent the user agent string.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $data = array(
|
||||||
|
// The default User-Agent string.
|
||||||
|
'HTTP_USER_AGENT',
|
||||||
|
// Header can occur on devices using Opera Mini.
|
||||||
|
'HTTP_X_OPERAMINI_PHONE_UA',
|
||||||
|
// Vodafone specific header: http://www.seoprinciple.com/mobile-web-community-still-angry-at-vodafone/24/
|
||||||
|
'HTTP_X_DEVICE_USER_AGENT',
|
||||||
|
'HTTP_X_ORIGINAL_USER_AGENT',
|
||||||
|
'HTTP_X_SKYFIRE_PHONE',
|
||||||
|
'HTTP_X_BOLT_PHONE_UA',
|
||||||
|
'HTTP_DEVICE_STOCK_UA',
|
||||||
|
'HTTP_X_UCBROWSER_DEVICE_UA',
|
||||||
|
// Sometimes, bots (especially Google) use a genuine user agent, but fill this header in with their email address
|
||||||
|
'HTTP_FROM',
|
||||||
|
'HTTP_X_SCANNER', // Seen in use by Netsparker
|
||||||
|
);
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue