/**
 * @param string $url
 * @param string $key
 * @return bool|null
 */
function localSearchUrl($url, $key)
{
    $safeBrowsing = new SafeBrowsingClient($key);
    //Creating hashes by url
    $hashes = $safeBrowsing->getHashesByUrl($url);
    $localDbFile = 'hosts_prefixes.json';
    if (!is_file($localDbFile)) {
        exit('File "' . $localDbFile . '" not found');
    }
    $data = file_get_contents($localDbFile);
    $localHashPrefixes = json_decode($data, true);
    foreach ($hashes as $hash) {
        foreach ($localHashPrefixes as $shavar) {
            foreach ($shavar as $chunkNum => $chunk) {
                foreach ($chunk as $hashPrefix) {
                    if ($hash['prefix'] === $hashPrefix) {
                        //Found prefix in local DB
                        echo '<div class="alert alert-info">
                        Префикс хеша найден в локальной БД. Ищем в списке опасных сайтов...
                        </div>';
                        //Check full hash
                        if ($safeBrowsing->searchUrl($url)) {
                            return true;
                        }
                    }
                }
            }
        }
    }
    return false;
}
Example #2
0
<div class="container">
    <div class="jumbotron">
        <h2><span class="glyphicon glyphicon glyphicon-certificate"></span> Пример работы с Safe Browsing API Яндекса</h2>
    </div>

    <h3>Проверить адреса</h3>
    <?php 
try {
    $settings = (require_once '../settings.php');
    if (!isset($settings["safebrowsing"]["key"]) || !$settings["safebrowsing"]["key"]) {
        throw new SafeBrowsingException('Empty Safe Browsing key');
    }
    if (isset($_GET['url']) && $_GET['url']) {
        $url = $_GET['url'];
        $key = $settings["safebrowsing"]["key"];
        $safeBrowsing = new SafeBrowsingClient($key);
        /**
         * Using "gethash" request
         */
        if ($safeBrowsing->searchUrl($url)) {
            ?>
                <div class="alert alert-danger">Найден полный хеш для "<?php 
            echo htmlentities($url);
            ?>
" в списке опасных сайтов</div>
            <?php 
        } else {
            ?>
                <div class="alert alert-success"><?php 
            echo htmlentities($url);
            ?>
    <link rel="stylesheet" href="//yandex.st/bootstrap/3.0.0/css/bootstrap.min.css">
    <link href="//netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.css" rel="stylesheet">
    <link rel="stylesheet" href="/examples/Disk/css/style.css">
</head>
<body>

<div class="container">
    <h3>Обновление локальной базы префиксов хешей вредоносных сайтов</h3>
    <?php 
try {
    $settings = (require_once '../settings.php');
    if (!isset($settings["safebrowsing"]["key"]) || !$settings["safebrowsing"]["key"]) {
        throw new SafeBrowsingException('Empty Safe Browsing key');
    }
    $key = $settings["safebrowsing"]["key"];
    $safeBrowsing = new SafeBrowsingClient($key);
    $localDbFile = 'hosts_prefixes.json';
    if (!is_file($localDbFile)) {
        exit('File "' . $localDbFile . '" not found');
    }
    $data = file_get_contents($localDbFile);
    $localHashPrefixes = json_decode($data, true);
    /**
     * Example:
     */
    //$savedChunks['ydx-malware-shavar'] = array(
    //    'added' => array(
    //        'min' => 1,
    //        'max' => 30000
    //    ),
    //    'removed' => array(
</head>
<body>

<div class="container">
    <h3>Lookup API и Check Adult API</h3>
    <?php 
try {
    $settings = (require_once '../settings.php');
    if (!isset($settings["safebrowsing"]["key"]) || !$settings["safebrowsing"]["key"]) {
        throw new SafeBrowsingException('Empty Safe Browsing key');
    }
    if (isset($_GET['url']) && $_GET['url']) {
        $url = $_GET['url'];
        $key = $settings["safebrowsing"]["key"];
        $safeBrowsing = new SafeBrowsingClient($key);
        /**
         * Using "lookup" request
         */
        $result = $safeBrowsing->lookup($url);
        if ($result) {
            ?>
                <div class="alert alert-danger">Небезопасный адресс. Lookup ответ: "<?php 
            echo $result;
            ?>
"</div>
            <?php 
        } else {
            ?>
                <div class="alert alert-success"><?php 
            echo htmlentities($url);
 public function testPrepareDownloadsRequestException()
 {
     $safeBrowsing = new SafeBrowsingClient();
     $safeBrowsing->setMalwareShavars([]);
     $this->setExpectedException('Yandex\\SafeBrowsing\\SafeBrowsingException');
     $safeBrowsing->getMalwaresData();
 }
    <link rel="stylesheet" href="//yandex.st/bootstrap/3.0.0/css/bootstrap.min.css">
    <link href="//netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.css" rel="stylesheet">
    <link rel="stylesheet" href="/examples/Disk/css/style.css">
</head>
<body>

<div class="container">
    <h3>Сохранение базы префиксов хешей вредоносных сайтов</h3>
    <?php 
try {
    $settings = (require_once '../settings.php');
    if (!isset($settings["safebrowsing"]["key"]) || !$settings["safebrowsing"]["key"]) {
        throw new SafeBrowsingException('Empty Safe Browsing key');
    }
    $key = $settings["safebrowsing"]["key"];
    $safeBrowsing = new SafeBrowsingClient($key);
    //Get all shavars from Yandex Safe Browsing
    /**
     * Using "list" request
     */
    $shavarsList = $safeBrowsing->getShavarsList();
    ?>

        <p>Списки опасных сайтов:</p>
        <ul>
            <?php 
    foreach ($shavarsList as $shavar) {
        ?>
                <li><?php 
        echo $shavar;
        ?>