Skip to content

🚯 Client to use Google's and Yandex Safe Browsing API (v4)

Notifications You must be signed in to change notification settings

saippuakauppias/safe-browsing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
Denis Veselov
May 17, 2019
a31383b Β· May 17, 2019

History

9 Commits
May 17, 2019
Dec 14, 2017
May 17, 2019
May 17, 2019

Repository files navigation

Safe Browsing

Client to use Google's and Yandex Safe Browsing API (v4). This library is fork of the bitecodes/safe-browsing with some improvements and updates.

Requirements

  1. PHP7+ (tested only on PHP7.2 and PHP7.3)

  2. guzzlehttp/guzzle >= v6

Installation

The preferred way to install this library is through composer.

Either run

$ composer require saippuakauppias/safe-browsing

or add

"saippuakauppias/safe-browsing": "^1.0"

to the require section of your composer.json file.

Usage

require 'vendor/autoload.php';

use Saippuakauppias\SafeBrowsing\Client as SBClient;
use Http\Adapter\Guzzle6\Client as GuzzleClient;


// config for Safe Browsing request
$config = [
    'api_key'           => '0123456789', // see API Keys section
    'client_id'         => 'ShortClientName', // change to your client name
    'client_version'    => '1.0.0', // change to your client version
];

// create HTTP Client
$guzzle = new GuzzleClient();

// create Safe Browsing Client from HTTP Client and config
$sbc = new SBClient($guzzle, $config);

// if you need to check urls in Yandex Safe Browsing
// uncomment next line (and change API Key of course!):
// $sbc->setHost('sba.yandex.net');

// urls array (up to 500)
$urls_need_check = [
    // yandex safe browsing test urls
    "https://ydx-phish-shavar.cepera.ru",
    "https://ydx-malware-driveby-shavar.cepera.ru",

    // google safe browsing test urls
    // (see all in: https://testsafebrowsing.appspot.com )
    "https://testsafebrowsing.appspot.com/s/phishing.html",
    "https://testsafebrowsing.appspot.com/s/malware.html",
];

// check urls in SB (execute 'threatMatches:find' request)
$result = $sbc->lookup($urls_need_check);

// example: result as php array
var_dump($result->getContent());
// array(1) {
//   ["matches"]=>
//   array(2) {
//     [0]=>
//     array(5) {
//       ["threatType"]=>
//       string(18) "SOCIAL_ENGINEERING"
//       ["platformType"]=>
//       string(12) "ANY_PLATFORM"
//       ["threat"]=>
//       array(1) {
//         ["url"]=>
//         string(52) "https://testsafebrowsing.appspot.com/s/phishing.html"
//       }
//       ["cacheDuration"]=>
//       string(4) "300s"
//       ["threatEntryType"]=>
//       string(3) "URL"
//     }
//     [1]=>
//     array(5) {
//       ["threatType"]=>
//       string(7) "MALWARE"
//       ["platformType"]=>
//       string(12) "ANY_PLATFORM"
//       ["threat"]=>
//       array(1) {
//         ["url"]=>
//         string(51) "https://testsafebrowsing.appspot.com/s/malware.html"
//       }
//       ["cacheDuration"]=>
//       string(4) "300s"
//       ["threatEntryType"]=>
//       string(3) "URL"
//     }
//   }
// }


// example: show url valid or not one by one
foreach($urls_need_check as $test_url) {
    echo $test_url . ' is valid: ' . (int) $result->isValid($test_url)  . PHP_EOL;
}
// https://ydx-phish-shavar.cepera.ru is valid: 1
// https://ydx-malware-driveby-shavar.cepera.ru is valid: 1
// https://testsafebrowsing.appspot.com/s/phishing.html is valid: 0
// https://testsafebrowsing.appspot.com/s/malware.html is valid: 0

Usage Yandex Safe Browsing

To use Yandex Safe Browsing, you must change the API Key and replace the base host via the method:

$sbc->setHost('sba.yandex.net');

API Keys

Get Google API Key here.

Get Yandex API Key here.

Misc

Usage limits for Google SafeBrowsing.