- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году Google заблокировал более 170 млн фальшивых отзывов на Картах
Это на 45% больше, чем в 2022 году
Оксана Мамчуева
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
А ведь через .htaccess можно прямо по подсети забанить...хм, хотя вдруг юзер какой целевой попадет в бан...наверное бан по подсети отметается??? Как думаете?
Думаю, по подсети опасно, вы правильно думаете про целевых посетителей. Подсеть точно не надо. Да и в бан по конкретному ip тоже может кто-то хороший попасть...
Если уж совсем всё по уму делать, то предлагаю такой вариант:
1. При каждом заходе на страницу записываем $REMOTE_ADDR в базу MySQL и время (до секунды) доступа. При этом предварительно проверяем базу на наличие в ней такого $REMOTE_ADDR и если он там есть, то смотрим, сколько страниц он этот ip просмотрел за последний час (минуту). Если больше скольки-то (подобрать можно только опыткым путём), то начинаем сканировать хуиз $REMOTE_ADDRа с помощью функции, которую я привёл ниже.
2. Если при проверке функции вылез "TurkTelecom" или ещё одно из запретных слов, то тогда выдаём 404 ошибку.
А вот этот кусок php кода! Где что менять надо?
МОжно такой небольшой мануальчик?
Так а что там непонятно? Давайте я в виде функции перепишу:
{
$ban = false;
$sock = fsockopen ("whois.ripe.net",43,$errno,$errstr);
if (!$sock)
{
return;
}
else
{
fputs ($sock, $ip."\r\n");
$country = "";
$city = "";
$lastcity = "";
while (!feof($sock))
{
$str = fgets ($sock,128);
foreach ($bantextarray as $bantext )
{
if (strpos($str, $bantext ) > 0)
{
$ban = true;
break;
}
}
if ($ban)
{
break;
}
}
fclose ($sock);
}
Итого, общий алгоритм:
// функция проверки ip
// требуется две таблицы - ips, поля ip - VARCHAR(20) и dat - DATETIME
// и whiteip (список уже проверенных ip, чтобы снизить нагрузку на сервер) - поля - ip - VARCHAR(20)
function correctip($ip)
{
$query = "SELECT ip FROM whiteip WHERE ip='$ip'";
if ($record = mysql_query($query))
{
if ($row = mysql_fetch_object($query))
{
return true;
}
}
$start = strftime ('%Y-%m-%d %H:%M:%S', localtime(time() - 60 * 60)); // проверяем за последний час
$end = strftime ('%Y-%m-%d %H:%M:%S');
$query = "SELECT count(ip) as raz FROM ips WHERE ip='$ip' and dat>='$start' and dat <='$end'";
if ($record = mysql_query($query))
{
if ($row = mysql_fetch_object($query))
{
if ($row->raz > 100) // если больше 100 страниц за час, то
{
return false;
}
}
}
// добавляем в базу
$query = "INSERT INTO ips (ip, dat) VALUES ('$ip', '$end')";
mysql_query($query);
return true;
}
$bantextarray[] = "TurkTelecom";
$bantextarray[] = "Вася Пупкин";
// и т.д.
if (!correctip($REMOTE_ADDR))
{
if (!testip($REMOTE_ADDR, $bantextarray))
{
header("HTTP/1.0 404 Not Found");
exit;
}
else
{
$query = "INSERT INTO whiteip (ip) VALUES ('".$REMOTE_ADDR."')";
mysql_query($query);
}
}
?>
Вроде так. Если что, то можем обсудить, улучшить и т.д.)