• В случае проблем с регистрацией или восстановлением пароля пишите здесь

Ведение списка заблокированных сайтов: базы, импорт, фильтр

moder

moder

Администратор
Команда форума
Поскольку сейчас нет таких уже проектов или последние обновления были давно, запускаем свой реестр.

Реестр работает по адресу: reestr.roszapret.ru
В реестре за раз отображается только 400 доменов, пагинации нет, поэтому пользуйтесь фильтром.

4568


В реестре не все заблокированные сайты (свыше 1 млн.), а только часть: отфильтрованы многие зеркала казино, киносайтов, технических сайтов (например, содержащих нижнее подчеркивание) и т.д.
Кроме того, полностью отфильтрованные следующие доменные зоны: air, quest, lol, tech, art, monster, homes, world, digital, casino, win, lux, lat, pics, sbs, bond, fr, cloud, cyou, life, cfd, space, live, top, su, buzz, pw, host , fun, bid, icu, vip, xn--p1ai, rs, games, casa, rest, how, one, xxx, bio, club, run, fit, bet, study, website, to, cz, at, tattoo, red, ws, gg, ink, рф, cam.

Также отфильтрованы домены, содержащие кириллицу. Таких доменов не очень много, но без них можно поставить кодировку latin1, а она значительно уменьшает размер базы и работа со списком осуществляется быстрее.

Ссылка на репозиторий: https://github.com/Roscenzura-com/rkn/tree/master

Если вы хотите сделать аналогичный список, регистрируйтесь на форуме и пишите запрос в ЛС.

PHP-функции для фильтрации:
Код:
function multi_strpos($str, $find=[], $operator='or')
{
    foreach ($find as $s)
    {
        if (strpos($str, $s)!==false)
        {
            if ($operator=='or') return true;
        }
        elseif ($operator=='and') return false;
    }

    if ($operator=='or') return false; else return true;
}

function multi_substr($str, $find=[])
{
    foreach ($find as $s)
    {
        if ($str==$s) return false;
 
        if (substr($str, 0, strlen($s) ) == $s)
        {
            return true;
        }
    }

    return false;
}

function isLikelyCasino($domain)
{
    if ( multi_substr($domain, ['azino', 'casino', 'kazino', 'maksbet',  'sloty', 'igrovie', 'joycasino']) ) return true;
}

function isMirrorCasino($domain)
{
    if ( multi_substr($domain, ['winlinebk', 'winline', '1xred', '24vulkan','888a', 'baltplay', 'casino-x', 'fonbet', 'joycasino', 'ligastavok', 'melbet-', 'winlinebet', 'vulkan-', 'vulcan-', 'wylkan', 'upcasino', 'swleon', 'paripartner', 'parimatch', 'casinos', 'solcasino' ,'roxcasino', 'xcasino', 'zzslot', 'vavada', 'mostbet',  '7k-casino',  '1xbet', '1x-bet', '7kcasino', '777v','777-']) ) return true;

    if (multi_strpos($domain, ['vulcan-', 'casino-', '-casino', '-cazino', '1xbet', 'joycasino', 'pokerdom'])) return true;

    if ( substr($domain, 0,4)=='leon' ) return true;
}

function isLikelyMirror($domain)
{
    if (multi_strpos($domain, ['lordfilm', '-zerkalo', '_', '--', '-vulkan-', 'lord-film', 'livetv', 'cloudfront.net', 'azureedge.net', 'hdrezka'])!==false) return true;

    if (strpos($domain, '?')!==false) return true;

    $a=explode('.', $domain);

    $domainPartsCount=count($a);
    if ($domainPartsCount>3) return true;

    $part1=current($a);

    if (substr($part1, 0, 4)=='1win') return true;

    if (strpos($domain,'sex')!==false)
    {
        if (is_numeric(substr($part1,0,1))) return true;
        if (is_numeric(substr($part1,-1))) return true;
 
        if ($part1=='sex') return true;
    }

    if ($domainPartsCount==3)
    {
        $sub=$part1;

        if (multi_strpos($domain, ['kasino', 'casino', 'kinogo', 'film', 'serial', 'proxy', 'appspot.com'])!==false) return true;
        //if (multi_strpos($sub, ['-'])) return true;
 
        if (is_numeric(substr($a[1],0,1))) return true; // sdf.1wer.ru
        if (is_numeric(substr($a[1],-2))) return true;  // wer.wer1.com
 
 
        if (is_numeric(substr($sub,1))) return true; // w123.domain.com
        if (is_numeric(substr($sub,-2))) return true; // mirror23.domain.com
 
        if (mb_strlen($sub)>32) return true;
        if (mb_strlen($sub)<2) return true;
 
        if (is_numeric(substr($part1,0,4))) return true;
        if (is_numeric(substr($part1,0,3))) return true;
        if (is_numeric(substr($part1,0,2))) return true;
 
        $f4=substr($part1, 0, 4);
        if ($f4=='xn--') return true;
 
        $f5=substr($sub, 0, 5);
        if (in_array($f5, ['prost'])) return true;
    }
    else
    {
        if (substr($part1, 0, 2)=='1w') return true;
        if (substr($part1, 0, 2)=='1x') return true;
        if (substr($part1, 0, 2)=='01') return true;
    //    if (substr($part1, 0, 3)=='1ux') return true;
        if (substr($part1, 0, 5)=='vodka') return true;
 
        if (strlen($part1)>41) return true;
 
        if (multi_strpos($domain, ['kasino', 'admira', 'casino', 'kazino', 'diplom', 'prava', 'film', 'serial', 'fresh', 'kinogo'])!==false)
        {
             if (is_numeric(substr($part1,0,1)) || is_numeric(substr($part1,-1))) return true;
        }
 
        $f4=substr($part1, 0, 4);
        if (in_array($f4, ['vvul', 'wull', 'www-', 'vull', 'alco', '1xbe', 'xbet', 'zeon', 'xn--', '1kra', '1dip', '1cas', '1bet'])) return true;
        // slon
 
        $f6=substr($part1, 0, 6);
        if (in_array($f6, ['zerkal', 'maxbet', 'kinogo', 'diplom', 'kraken', 'vulkan', 'vulcan', 'wulcan', 'wulkan', 'vylkan', 'volnac', 'volna-', 'volnak'])) return true;
 
        if (substr($part1, 0, 5)=='zooma') return true;
        if (substr($part1, 0, 5)=='zenit') return true;

        if (is_numeric($part1) && strlen($part1)<5) return true;
 
        if (is_numeric(substr($part1,0,4))) return true;
        if (is_numeric(substr($part1,-4))) return true;
        if (is_numeric(substr($part1,0,3))) return true;
    }

    $parts=explode('-', $part1);
    $count=count($parts);
    if ($count>1)
    {
        if (is_numeric($parts[0])) return true;
        if (is_numeric(end($parts))) return true;
    }

    if ($count>3) return true;

    $z=end($a);

    if (in_array($z, ['ru', 'com', 'org', 'biz', 'ai', 'net', 'shop', 'info'])) return false;

    if (in_array($z, ['air', 'quest', 'lol', 'tech', 'art', 'monster', 'homes', 'world', 'digital', 'casino', 'win', 'lux', 'lat', 'pics', 'sbs', 'bond', 'fr', 'cloud', 'cyou', 'life', 'cfd', 'space', 'live', 'top', 'su', 'buzz', 'pw' , 'host' , 'fun', 'bid', 'icu', 'vip' , 'xn--p1ai', 'rs', 'games', 'casa', 'rest', 'how', 'one', 'xxx', 'bio', 'club', 'run', 'fit', 'bet', 'study', 'website', 'to', 'cz', 'at', 'tattoo', 'red', 'ws', 'gg', 'ink', 'рф', 'cam'])) return true;

    if (is_numeric(substr($part1,-1))) return true; // mirror3.domain.xyz, domain3.xyz
    if (is_numeric(substr($part1,0,2))) return true; // 33mirror.domain.xyz, 32domain.xyz

    if (multi_strpos($domain, ['smotr', 'online', 'sezon', 'mp3', 'serial', 'rutor', 'russkie', 'prostitutk', '-hd-', 'casin', 'films', 'prava', 'diplom'])!==false) return true;

    $f4=substr($part1, 0, 4);
    if (in_array($f4, ['lord', 'alco'])) return true;

    return false;
}

// проверка на кириллицу
function hasCyrillic($string) {
    return preg_match('/[А-Яа-яЁё]/u', $string);
}
 
Последнее редактирование:
Сверху