Shieldon, a PHP library that provides anti-scraping and online session control for your web application. As if you are using a shield on your web applicaion to fight against bad-behavior bots, crawlers or vulnerability scanning and so on.
- Document: https://shield-on-php.github.io
Use PHP Composer:
composer require terrylinooo/shieldon
Or, download it and include the Shieldon autoloader.
require 'Shieldon/src/autoload.php';
Here is a full example to let you know how Shieldon works.
$shieldon = new \Shieldon\Shieldon();
// Use SQLite as the data driver.
$dbLocation = APPPATH . 'cache/shieldon.sqlite3';
$pdoInstance = new \PDO('sqlite:' . $dbLocation);
$shieldon->setDriver(new \Shieldon\Driver\SqliteDriver($pdoInstance));
// Set components.
// This component will only allow popular search engine.
// Other bots will go into the checking process.
$shieldon->setComponent(new \Shieldon\Component\TrustedBot());
// You can ignore this setting if you only use one Shieldon on your web application. This is for multiple instances.
$shieldon->setChannel('web_project');
// Only allow 10 sessions to view current page.
// The default expire time is 300 seconds.
$shieldon->limitSession(10);
// Set a Captcha servie. For example: Google recaptcha.
$shieldon->setCaptcha(new \Shieldon\Captcha\Recaptcha([
'key' => '6LfkOaUUAAAAAH-AlTz3hRQ25SK8kZKb2hDRSwz9',
'secret' => '6LfkOaUUAAAAAJddZ6k-1j4hZC1rOqYZ9gLm0WQh',
]));
// Start protecting your website!
$result = $shieldon->run();
if ($result !== $shieldon::RESPONSE_ALLOW) {
if ($shieldon->captchaResponse()) {
// Unban current session.
$shieldon->unban();
}
// Output the result page with HTTP status code 200.
$shieldon->output(200);
}
When the users or robots are trying to view many your web pages in a short period of time, they will temporarily get banned. Get unbanned by solving a Catpcha.
When an user has reached the online session limit. You can set the online session limit by using limitSession
API.
When an user has been permanently banned.
I have made a WordPress plugin called WP Shieldon, it is based on Shieldon library. You can check out the source code to understand about how to implement Shieldon in your PHP project.
MIT
Shieldon library is brought to you by Terry L. from Taiwan.