Skip to content

Zeichen32/ReferrerSpamDetector

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ReferrerSpam Detector

Referrer spam (also known as log spam or referrer bombing) is a kind of spamming aimed at web analytics tools. A spammer bot makes repeated web site requests using a fake referrer URL to the site the spammer wishes to advertise.

How to use?

composer setup

This is the easiest method, but requires the use of Composer. Add ReferrerSpamDetector to your project by running the following in your terminal:

composer require twodevs/referrer-spam-detector

Get a blocklist

This library will not provide any blocklist, but many list are online available:

Download one or more list into you project directory.

Create a ReferrerDetector

There are multiple Providers available:

Basic example

// DomainParser
$pslManager = new Pdp\PublicSuffixListManager();
$parser = new Pdp\Parser($pslManager->getList());

// Referrer Provider
$provider = new \TwoDevs\ReferrerSpamDetector\Provider\TxtListProvider(__DIR__.'/data/blocked.txt');

// Create detector
$detector = new \TwoDevs\ReferrerSpamDetector\ReferrerDetector($provider, $parser);


// Mock Referrer - Remove this line in production environment
$_SERVER['HTTP_REFERER'] = 'http://example.org/index.php?id=3';

$referrer = !empty($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
var_dump($detector->isSpamReferrer($referrer));

Multiple Provider at once

// DomainParser
$pslManager = new Pdp\PublicSuffixListManager();
$parser = new Pdp\Parser($pslManager->getList());

// Create as many provider as you want
$provider = new \TwoDevs\ReferrerSpamDetector\Provider\ChainProvider(array(
    new \TwoDevs\ReferrerSpamDetector\Provider\TxtListProvider(__DIR__.'/data/blocked.txt'),
    new \TwoDevs\ReferrerSpamDetector\Provider\JsonListProvider(__DIR__.'/data/blocked.json'),
));

// Create detector
$detector = new \TwoDevs\ReferrerSpamDetector\ReferrerDetector($provider, $parser);


// Mock Referrer - Remove this line in production environment
$_SERVER['HTTP_REFERER'] = 'http://dev.example.org/index.php?id=3';

$referrer = !empty($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
var_dump($detector->isSpamReferrer($referrer));

contribute

Yes, please! Feel free to open issues or pull-requests.

licence

MIT

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages