Как реализована фильтрация адресов в блокировщиках рекламы? Для повышения навыков решил написать свой блокировщик рекламы. В интернете нашел список адресов вида:
site1.ru
*.site2.ru
*.ru/ads/ и тд.
Допустим я получаю адрес вида site.ru или thissite.site.ru или site.ru/ad/ или даже thissite.site.ru/ad/.
Как мне проверить, подходит ли этот сайт под условия списка? Если каждый раз проверять перебором, то это займет много времени (в списке около 15000 строк). Была идея проверять с помощью ассоциативного массива, но это сработает только при полном совпадении.

21 Авг 2019 в 06:27
147 +1
0
Ответы
1

Для реализации фильтрации адресов в блокировщике рекламы можно использовать регулярные выражения. Вы можете преобразовать адреса из списка в регулярные выражения и затем проверять адреса на соответствие этим выражениям.

Например, адрес ".site2.ru" можно преобразовать в регулярное выражение "/^..site2.ru$/i", а адрес ".ru/ads/" в "/^..ru\/ads\/.*$/i". Затем вы можете создать массив регулярных выражений и проверять входящие адреса на соответствие каждому из них.

Пример кода на JavaScript:

const blockedAddresses = [
/^site1\.ru$/i,
/^.*\.site2\.ru$/i,
/^.*\.ru\/ads\/.*$/i
];
function isAddressBlocked(address) {
for (let i = 0; i < blockedAddresses.length; i++) {
if (blockedAddresses[i].test(address)) {
return true;
}
}
return false;
}
// Проверка адреса
const address = 'thissite.site2.ru';
if (isAddressBlocked(address)) {
console.log('Адрес заблокирован');
} else {
console.log('Адрес разрешен');
}

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

20 Апр в 13:18
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 887 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир