Как бороться со скачиванием страниц сайта с разных IP?

1 23
E1
На сайте с 11.08.2024
Offline
3
#21
Vladimir K #:

видимо хорошо вы инфу на сайте собрали, раз люди так стараются.

все же очень хотелось накормить бы его леваком)

У меня на сайте в базе более 5000 страниц с информацией об изделиях.

Еще и боты официальные всякие лезут (не вредоносные которые) и много запрашивают страниц, но от них я избавился:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^.*(Custom-AsyncHttpClient|ZoominfoBot|SurdotlyBot|AwarioBot|Go-http-client|ias_crawler|IABot|Amazonbot|AmazonAdBot|HeadlessChrome|GPTBot|ChatGLM-Spider|MJ12bot|OAI-SearchBot|SeznamBot|CriteoBot|ias-ie|ias-jp|ias-or|ias-va|AhrefsBot|BLEXBot|SemrushBot|DotBot).*$ [NC]
RewriteRule .* - [F,L]

E1
На сайте с 11.08.2024
Offline
3
#22

Еще и вот этих в брандмауэре пришлось забанить сразу диапазонами, ибо тоже с них лезли и качали чуть ли не весь сайт, создавая нагрузку на процессор:

34.*.*.* - Google Cloud
35.*.*.* - Google Cloud
132.145.*.* - Oracle Public Cloud
140.238.*.* - Oracle Public Cloud
152.67.*.* - Oracle Public Cloud
47.128.*.* - Amazon Data Services Singapore
47.129.*.* - Amazon Data Services Singapore
47.130.*.* - Amazon Data Services Singapore
47.131.*.* - Amazon Data Services Singapore
47.235.*.* - Alibaba Cloud
47.236.*.* - Alibaba Cloud
47.237.*.* - Alibaba Cloud
47.238.*.* - Alibaba Cloud
47.239.*.* - Alibaba Cloud
47.240.*.* - Alibaba Cloud
47.241.*.* - Alibaba Cloud
47.242.*.* - Alibaba Cloud
47.243.*.* - Alibaba Cloud
47.244.*.* - Alibaba Cloud
47.245.*.* - Alibaba Cloud
47.246.*.* - Alibaba Cloud

E1
На сайте с 11.08.2024
Offline
3
#23
Тяжело жить сайтовладельцу.
vashfreelancer
На сайте с 24.10.2023
Offline
38
#24

Вы не сказали прямые ли это заходы, по логу сервера посмотрите.

Как бы сделал я:

1. установить клауд.
2. Написать WAF правила, которые блочат ASN сети - разными сервисами можно узнать, тем же клаудом пропустить через него и посмотреть кто ходит (логи клауда, ASN страна протокол, страница и тд).
3. Блокировка тех стран, откуда нет тарфика ну или обязательную капчу.
4. Сделать допустим вообще капчу на прямые заходы (если это прямой заход), исключив поисковики. Если прямой и HTTP 1 или 1.1 - то совместить. Чем больше данных для анализа, тем легче составить правило защиты.

А так да, есть помимо клауда - капча гугла и вообще много чего другого.

Защита сайта от ботов - накрутки ПФ, роботность, DDoS, Cloudflare ДДос - https://kwork.ru/user/vashfreelancer
E1
На сайте с 11.08.2024
Offline
3
#25

Вот такое коротенькое решение реализовал, если кому интересно:
    
    global $post;
    
    $IP = $_SERVER['REMOTE_ADDR'];
    
    if (isset($_SERVER['HTTP_CLIENT_IP'])) {
    
        $IP = $_SERVER['HTTP_CLIENT_IP'];
            
    }
    
    elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    
        $IP = $_SERVER['HTTP_X_FORWARDED_FOR'];
        
    };
    
    $IP = preg_replace('/[^0-9a-zA-Z\.\:]/', '', $IP);    
    
    // инициализируем массив запросов
    
    $requests = array();
    
    // загружаем лог для IP в массив
    
    $file_name = '/xxx/logs/IP/'.$IP.'.log';
    
    $file_name_blocked = '/xxx/logs/IP/'.$IP.'.blocked';
    
    if (@file_exists($file_name_blocked)) {
    
        header("Location: /403.php");
        
        die();
        
    };
    
    $result = @file_get_contents($file_name);
    
    if ($result != FALSE) {
    
        $lines = explode(PHP_EOL, $result);
        
        $i = 0;
        
        while ($i < (count($lines)-1)) {
        
            $requests[] = array(
    
                'date' => str_ireplace('DATE: ', '', $lines[$i]),
                'URL' => str_ireplace('URL: ', '', $lines[$i+1]),
                'postID' => str_ireplace('ID: ', '', $lines[$i+2]),
    
            );
            
            $i = $i+3;
        
        };
            
    };
    
    // добавляем в массив новый запрос
    
    $requests[] = array(
    
        'date' => date('Y-m-d H:i:s'),
        'URL' => $_SERVER['REQUEST_URI'],
        'postID' => $post->ID,
    
    );
    
    // записываем массив в лог
    
    $file = @fopen($file_name, 'w');
    
    if ($file != FALSE) {
    
        foreach($requests as $r)
        
            @fwrite($file, 'DATE: '.$r['date'].PHP_EOL.'URL: '.$r['URL'].PHP_EOL.'ID: '.$r['postID'].PHP_EOL);
            
        @fclose($file);
    
    };    
    
    // Анализируем и блокируем
    
    // Правило 1: обращение к advanced-search (ID=84889) три раза подряд с интервалом менее 5 секунд
    
    for($i=0;$i<count($requests);$i++) {
    
        $found = FALSE;
    
        if ($i >= 2) {
        
            if ($requests[$i-2]['postID'] == 84889 && $requests[$i-1]['postID'] == 84889 && $requests[$i]['postID'] == 84889)
            
                $found = TRUE;
        
        };
    
        if ($found) {
        
            $time1 = $requests[$i-2]['date'];
            
            $time2 = $requests[$i-1]['date'];
            
            $time3 = $requests[$i]['date'];
            
            $diff_21 = strtotime($time2) - strtotime($time1);
            
            $diff_32 = strtotime($time3) - strtotime($time2);
            
            if ($diff_21 < 5 && $diff_32 < 5)
                        
                @rename($file_name, $file_name_blocked);
        
        };
        
    };
  

SA
На сайте с 12.04.2024
Offline
37
#26
404 php зачем отдавать, ресурсов многовато уйдёт. Обычный html с текстом: тру ля ля...
damn-doubleclick
На сайте с 10.09.2021
Offline
58
#27
eugene-1979 #:

Вот такое коротенькое решение реализовал, если кому интересно:
    
  
  

Вот ещё идея: https://searchengines.guru/ru/forum/1082826/page2#comment_16932086

Лучший хостер с адекватными сис. админами: https://clck.ru/35zGfN
BotsSTOP.ru
На сайте с 15.11.2024
Offline
1
#28
Подключите антибот
Антибот защита сайта от ПФ-ботов, скликивания, спама, парсинга | BotsStop.ru
1 23

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий