Π˜Π·Ρ‡ΠΈΡΠ»ΡΠ²Π°ΠΌΠ΅ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΈΡ‚Π΅ "Π·Π»ΠΈ" Π±ΠΎΡ‚ΠΎΠ²Π΅ ΠΈ Π³ΠΈ Π±Π»ΠΎΠΊΠΈΡ€Π°ΠΌΠ΅ ΠΏΠΎ IP

Π˜Π·Ρ‡ΠΈΡΠ»ΡΠ²Π°ΠΌΠ΅ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΈΡ‚Π΅ "Π·Π»ΠΈ" Π±ΠΎΡ‚ΠΎΠ²Π΅ ΠΈ Π³ΠΈ Π±Π»ΠΎΠΊΠΈΡ€Π°ΠΌΠ΅ ΠΏΠΎ IP

Π”ΠΎΠ±ΡŠΡ€ Π΄Π΅Π½! Π’ статията Ρ‰Π΅ обясня ΠΊΠ°ΠΊ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π½Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ хостинг ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° уловят IP адрСситС, Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‰ΠΈ ΠΏΡ€Π΅ΠΊΠΎΠΌΠ΅Ρ€Π½ΠΎ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ Π½Π° сайта ΠΈ слСд Ρ‚ΠΎΠ²Π° Π΄Π° Π³ΠΈ Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° хостинг срСдствата, Ρ‰Π΅ Π²ΠΊΠ»ΡŽΡ‡Π° ΠΌΠ°Π»ΠΊΠΎ PHP ΠΊΠΎΠ΄ ΠΈ няколко снимки Π½Π° Π΅ΠΊΡ€Π°Π½Π°.

Π’Ρ…ΠΎΠ΄Π½ΠΈ Π΄Π°Π½Π½ΠΈ:

  1. Π‘Π°ΠΉΡ‚, създадСн Π½Π° CMS WordPress
  2. Π₯остинг Π‘Π΅Π³Π΅Ρ‚ (Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ Ρ€Π΅ΠΊΠ»Π°ΠΌΠ°, Π½ΠΎ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ администраторския ΠΏΠ°Π½Π΅Π» Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° Ρ‚ΠΎΠ·ΠΈ хостинг ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€)
  3. WordPress ΡΠ°ΠΉΡ‚ΡŠΡ‚ Π΅ Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ ΠΎΡ‚ Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° 2000-Ρ‚Π΅ Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΈ ΠΈΠΌΠ° голямо количСство статии ΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈ
  4. ВСрсия Π½Π° PHP 7.2
  5. WP ΠΈΠΌΠ° послСдната вСрсия
  6. ΠžΡ‚ извСстно Π²Ρ€Π΅ΠΌΠ΅ ΡΠ°ΠΉΡ‚ΡŠΡ‚ Π·Π°ΠΏΠΎΡ‡Π½Π° Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° високо Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ Π½Π° MySQL спорСд Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π½Π° хостинга. ВсСки Π΄Π΅Π½ Ρ‚ΠΎΠ²Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ надвишавашС 120% ΠΎΡ‚ Π½ΠΎΡ€ΠΌΠ°Ρ‚Π° Π·Π° Π°ΠΊΠ°ΡƒΠ½Ρ‚Π°.
  7. Π‘ΠΏΠΎΡ€Π΅Π΄ ЯндСкс. ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠ° ΡΠ°ΠΉΡ‚ΡŠΡ‚ посСщават 100-200 Π΄ΡƒΡˆΠΈ Π½Π° Π΄Π΅Π½.

ΠŸΡŠΡ€Π²ΠΎ бСшС Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΎ:

  1. ΠŸΠΎΡ‡ΠΈΡΡ‚Π΅Π½ΠΈ бяха Ρ‚Π°Π±Π»ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Π‘Π” ΠΎΡ‚ Π½Π°Ρ‚Ρ€ΡƒΠΏΠ°Π½ Π±ΠΎΠΊΠ»ΡƒΠΊ
  2. Π˜Π·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈ бяха Π½Π΅Π½ΡƒΠΆΠ½ΠΈ плъгини, ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚ΠΈ ΡƒΡ‡Π°ΡΡ‚ΡŠΡ†ΠΈ ΠΎΡ‚ остарял ΠΊΠΎΠ΄

ΠšΠ°Ρ‚ΠΎ отбСлязвам, ΠΈΠ·ΠΏΡ€ΠΎΠ±Π²Π°Π½ΠΈ бяха Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΈ Π·Π° ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅ (плъгини Π·Π° ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅), ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈ наблюдСния β€” Π½ΠΎ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ ΠΎΡ‚ 120% ΠΎΡ‚ Π΅Π΄ΠΈΠ½ сайт остана Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎ ΠΈ само моТСшС Π΄Π° нараства.

Как изглСТдашС ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎΡ‚ΠΎ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ Π½Π° Π±Π°Π·ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ Π½Π° хостинга

Π˜Π·Ρ‡ΠΈΡΠ»ΡΠ²Π°ΠΌΠ΅ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΈΡ‚Π΅ "Π·Π»ΠΈ" Π±ΠΎΡ‚ΠΎΠ²Π΅ ΠΈ Π³ΠΈ Π±Π»ΠΎΠΊΠΈΡ€Π°ΠΌΠ΅ ΠΏΠΎ IP
На Π²ΡŠΡ€Ρ…Π° Π΅ ΡΠ°ΠΉΡ‚ΡŠΡ‚, Π·Π° ΠΊΠΎΠΉΡ‚ΠΎ става Π²ΡŠΠΏΡ€ΠΎΡ, ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ са Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ сайтовС, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠ°Ρ‚ ΡΡŠΡ‰Π°Ρ‚Π° CMS ΠΈ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ ΡΡŠΡ‰Π°Ρ‚Π° посСщаСмост, Π½ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅.

Анализ

  • Бяха Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠΈΡ‚ΠΈ с Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΈ Π·Π° ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ, ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈ наблюдСния Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° няколко сСдмици (Π·Π° щастиС, Ρ…ΠΎΡΡ‚ΠΈΠ½Π³ΡŠΡ‚ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ‚ΠΎΠ²Π° Π½ΠΈΡ‰ΠΎ Π½Π΅ ΠΊΠ°Π·Π°, Ρ‡Π΅ съм Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° лош ΠΈ Ρ‰Π΅ ΠΌΠ΅ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π°Ρ‚)
  • Π‘Π΅ΡˆΠ΅ Π½Π°ΠΏΡ€Π°Π²Π΅Π½ Π°Π½Π°Π»ΠΈΠ· ΠΈ Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅ Π½Π° Π±Π°Π²Π½ΠΈ заявки, слСд Ρ‚ΠΎΠ²Π° структурата Π½Π° Π‘Π” ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ бяха ΠΌΠ°Π»ΠΊΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½ΠΈ.
  • Π—Π° Π°Π½Π°Π»ΠΈΠ·Π° Π² ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π΅Π½ стадий сС използвашС Π²Π³Ρ€Π°Π΄Π΅Π½ΠΎΡ‚ΠΎ AWStats (интСрСсно, Ρ‡Π΅ Ρ‚ΠΎΠΉ ΠΏΠΎΠΌΠΎΠ³Π½Π° Π΄Π° сС изчисли Π½Π°ΠΉ-Π»ΠΎΡˆΠΈΡΡ‚ IP адрСс ΠΏΠΎ ΠΎΠ±Π΅ΠΌ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°)
  • ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠ°Ρ‚Π° β€” ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°Ρ‚Π° Π΄Π°Π²Π° информация само Π·Π° Ρ…ΠΎΡ€Π°Ρ‚Π°, Π° Π½Π΅ Π·Π° Π±ΠΎΡ‚ΠΎΠ²Π΅Ρ‚Π΅.
  • Бяха Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΈ ΠΎΠΏΠΈΡ‚ΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° плъгини Π·Π° WP, ΠΊΠΎΠΈΡ‚ΠΎ умСят Π΄Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Ρ‚ ΠΈ Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚ посСтитСли Π΄ΠΎΡ€ΠΈ ΠΏΠΎ страна Π½Π° мСстополоТСниС ΠΈ ΠΏΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ.
  • БъвсСм Ρ€Π°Π΄ΠΈΠΊΠ°Π»Π΅Π½ Π½Π°Ρ‡ΠΈΠ½ Π·Π° затварянС Π½Π° сайта Π·Π° Π΅Π΄ΠΈΠ½ Π΄Π΅Π½ с Π±Π΅Π»Π΅ΠΆΠΊΠ° "Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° смС Π½Π° тСхничСско обслуТванС" - бСшС Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° извСстния плъгин. Π’ Ρ‚ΠΎΠ·ΠΈ случай Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ наистина ΠΏΠ°Π΄Π½Π°, Π½ΠΎ Π½Π΅ Π΄ΠΎ Π½ΡƒΠ»Π΅Π²ΠΈ стойности, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ идСологията Π½Π° WP сС основава Π½Π° Ρ…ΡƒΠΊΠΎΠ²Π΅ ΠΈ ΠΏΠ»ΡŠΠ³ΠΈΠ½ΠΈΡ‚Π΅ Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‚ активността си ΠΏΡ€ΠΈ Π½Π°ΡΡ‚ΡŠΠΏΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° някакъв "Ρ…ΡƒΠΊ", Π° Π΄ΠΎ Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅ Π²Π΅Ρ‡Π΅ Π΄Π° са Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΈ заявки към Π‘Π”.

ИдСя

  1. Π˜Π·Ρ‡ΠΈΡΠ»Π΅Ρ‚Π΅ IP адрСситС, ΠΊΠΎΠΈΡ‚ΠΎ правят ΠΌΠ½ΠΎΠ³ΠΎ заявки Π·Π° ΠΊΡ€Π°Ρ‚ΡŠΠΊ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅.
  2. ЀиксирайтС броя Π½Π° посСщСнията Π½Π° сайта.
  3. На Π±Π°Π·Π°Ρ‚Π° Π½Π° броя Π½Π° посСщСнията Π±Π»ΠΎΠΊΠΈΡ€Π°ΠΉΡ‚Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π΄ΠΎ сайта.
  4. Π‘Π»ΠΎΠΊΠΈΡ€Π°ΠΉΡ‚Π΅ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° записа "Deny from" Π² Ρ„Π°ΠΉΠ»Π° .htaccess.
  5. Π”Ρ€ΡƒΠ³ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΈ, ΠΊΠ°Ρ‚ΠΎ iptables ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° Nginx, Π½Π΅ сС Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π°Ρ‚, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ пиша Π·Π° хостинг.

Появила сС Π΅ идСя, Π·Π½Π°Ρ‡ΠΈ трябва Π΄Π° я Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅, ΠΊΠ°ΠΊ ΠΈΠ½Π°Ρ‡Π΅...

  • БъздавамС Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ Π·Π° Π½Π°Ρ‚Ρ€ΡƒΠΏΠ²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ.
    CREATE TABLE `wp_visiters_bot` (
    	`id` INT(11) NOT NULL AUTO_INCREMENT,
    	`ip` VARCHAR(300) NULL DEFAULT NULL,
    	`browser` VARCHAR(500) NULL DEFAULT NULL,
    	`cnt` INT(11) NULL DEFAULT NULL,
    	`request` TEXT NULL,
    	`input` TEXT NULL,
    	`data_update` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    	PRIMARY KEY (`id`),
    	UNIQUE INDEX `ip` (`ip`)
    )
    COMMENT='ΠšΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ΠΈ Π·Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅'
    COLLATE='utf8_general_ci'
    ENGINE=InnoDB
    AUTO_INCREMENT=1;
    

    CREATE TABLE `wp_visiters_bot_blocked` (
    	`id` INT(11) NOT NULL AUTO_INCREMENT,
    	`ip` VARCHAR(300) NOT NULL,
    	`data_update` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    	PRIMARY KEY (`id`),
    	UNIQUE INDEX `ip` (`ip`)
    )
    COMMENT='Бписък Π½Π° Π²Π΅Ρ‡Π΅ Π±Π»ΠΎΠΊΠΈΡ€Π°Π½ΠΈΡ‚Π΅'
    COLLATE='utf8_general_ci'
    ENGINE=InnoDB
    AUTO_INCREMENT=59;
    

    CREATE TABLE `wp_visiters_bot_history` (
    	`id` INT(11) NOT NULL AUTO_INCREMENT,
    	`ip` VARCHAR(300) NULL DEFAULT NULL,
    	`browser` VARCHAR(500) NULL DEFAULT NULL,
    	`cnt` INT(11) NULL DEFAULT NULL,
    	`data_update` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    	`data_add` DATETIME NULL DEFAULT CURRENT_TIMESTAMP,
    	PRIMARY KEY (`id`),
    	UNIQUE INDEX `ip` (`ip`)
    )
    COMMENT='Π˜ΡΡ‚ΠΎΡ€ΠΈΡ Π½Π° всички заявки Π·Π° Π΄Π΅Π±Π°Π³'
    COLLATE='utf8_general_ci'
    ENGINE=InnoDB
    AUTO_INCREMENT=1;
    
  • Π©Π΅ създадСм Ρ„Π°ΠΉΠ», Π² ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ слоТим ΠΊΠΎΠ΄Π°. ΠšΠΎΠ΄ΡŠΡ‚ Ρ‰Π΅ записва Π² Ρ‚Π°Π±Π»ΠΈΡ†ΠΈΡ‚Π΅ с ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ΠΈ Π·Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ Ρ‰Π΅ Π²ΠΎΠ΄ΠΈ история Π·Π° дСбъг.

    Код Π½Π° Ρ„Π°ΠΉΠ»Π°, Π·Π° записванС Π½Π° IP адрСситС.

    <?php
    
    if (!defined('ABSPATH')) {
        return;
    }
    
    global $wpdb;
    
    /**
     * Π’Π΅Ρ€Π½Ρ‘Ρ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ IP адрСс посСтитСля
     * @return boolean
     */
    function coderun_get_user_ip() {
    
        $client_ip = '';
    
        $address_headers = array(
            'HTTP_CLIENT_IP',
            'HTTP_X_FORWARDED_FOR',
            'HTTP_X_FORWARDED',
            'HTTP_X_CLUSTER_CLIENT_IP',
            'HTTP_FORWARDED_FOR',
            'HTTP_FORWARDED',
            'REMOTE_ADDR',
        );
    
        foreach ($address_headers as $header) {
            if (array_key_exists($header, $_SERVER)) {
    
                $address_chain = explode(',', $_SERVER[$header]);
                $client_ip = trim($address_chain[0]);
    
                break;
            }
        }
    
        if (!$client_ip) {
            return '';
        }
    
    
        if ('0.0.0.0' === $client_ip || '::' === $client_ip || $client_ip == 'unknown') {
            return '';
        }
    
        return $client_ip;
    }
    
    $ip = esc_sql(coderun_get_user_ip()); // IP адрСс посСтитСля
    
    if (empty($ip)) {// НСт IP, Π½Ρƒ ΠΈ ΠΈΠ΄ΠΈΡ‚Π΅ лСсом...
        header('Content-type: application/json;');
        die('Big big bolt....');
    }
    
    $browser = esc_sql($_SERVER['HTTP_USER_AGENT']); //Π”Π°Π½Π½Ρ‹Π΅ для Π°Π½Π°Π»ΠΈΠ·Π° Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°
    
    $request = esc_sql(wp_json_encode($_REQUEST)); //ПослСдний запрос ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΠΊ сайту
    
    $input = esc_sql(file_get_contents('php://input')); //Π’Π΅Π»ΠΎ запроса, Ссли Π±Ρ‹Π»ΠΎ
    
    $cnt = 1;
    
    //Запрос Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ с Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠ½Π΄ΠΈΠ΄Π°Ρ‚Π°ΠΌΠΈ Π½Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ
    $query = <<<EOT
        INSERT INTO wp_visiters_bot (`ip`,`browser`,`cnt`,`request`,`input`)
            VALUES  ('{$ip}','{$browser}','{$cnt}','{$request}','$input')
             ON DUPLICATE KEY UPDATE cnt=cnt+1,request=VALUES(request),input=VALUES(input),browser=VALUES(browser)
    EOT;
    
    //Запрос для истории
    $query2 = <<<EOT
        INSERT INTO wp_visiters_bot_history (`ip`,`browser`,`cnt`)
            VALUES  ('{$ip}','{$browser}','{$cnt}')
             ON DUPLICATE KEY UPDATE cnt=cnt+1,browser=VALUES(browser)
    EOT;
    
    
    $wpdb->query($query);
    
    $wpdb->query($query2);
    
    

    Π‘ΡŠΡ‰Π½ΠΎΡΡ‚Ρ‚Π° Π½Π° ΠΊΠΎΠ΄Π° Π΅ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈ IP адрСса Π½Π° посСтитСля ΠΈ Π΄Π° Π³ΠΎ запишС Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°. Ако IP Π°Π΄Ρ€Π΅ΡΡŠΡ‚ Π²Π΅Ρ‡Π΅ Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°, Ρ‰Π΅ сС ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈ ΠΏΠΎΠ»Π΅Ρ‚ΠΎ cnt (броя Π½Π° заявкитС към сайта).

  • Π‘Π΅Π³Π° Π·Π°ΡΡ‚Ρ€Π°ΡˆΠΈΡ‚Π΅Π»Π½ΠΎΡ‚ΠΎ... Π‘Π΅Π³Π° Ρ‰Π΅ ΠΌΠ΅ изгорят Π·Π° ΠΌΠΎΠΈΡ‚Π΅ дСйствия πŸ™‚
    Π—Π° Π΄Π° записвамС всяко посСщСниС Π½Π° сайта, добавямС ΠΊΠΎΠ΄Π° Π½Π° Ρ„Π°ΠΉΠ»Π° Π² основния Ρ„Π°ΠΉΠ» Π½Π° WordPress β€” wp-load.php. Π”Π°, Ρ‚ΠΎΡ‡Π½ΠΎ измСнямС основния Ρ„Π°ΠΉΠ» ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ слСд ΠΊΠ°Ρ‚ΠΎ Π²Π΅Ρ‡Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° Π³Π»ΠΎΠ±Π°Π»Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° $wpdb.

Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠΎΠ»ΠΊΠΎ чСсто ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ IP адрСс Π΅ отбСлязан Π² Π½Π°ΡˆΠ°Ρ‚Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΈ с Ρ‡Π°ΡˆΠ° ΠΊΠ°Ρ„Π΅ ΠΏΠΎΠ³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ Ρ‚Π°ΠΌ Π½Π° всСки 5 ΠΌΠΈΠ½ΡƒΡ‚ΠΈ, Π·Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π°Ρ‚Π°.

Π˜Π·Ρ‡ΠΈΡΠ»ΡΠ²Π°ΠΌΠ΅ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΈΡ‚Π΅ "Π·Π»ΠΈ" Π±ΠΎΡ‚ΠΎΠ²Π΅ ΠΈ Π³ΠΈ Π±Π»ΠΎΠΊΠΈΡ€Π°ΠΌΠ΅ ΠΏΠΎ IP

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° просто ΠΊΠΎΠΏΠΈΡ€Π°Ρ…ΠΌΠ΅ 'врСдния' IP, ΠΎΡ‚Π²ΠΎΡ€ΠΈΡ…ΠΌΠ΅ Ρ„Π°ΠΉΠ»Π° .htaccess ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ…ΠΌΠ΅ Π² края Π½Π° Ρ„Π°ΠΉΠ»Π°.

Order allow,deny
Allow from all
# start_auto_deny_list
Deny from 94.242.55.248
# end_auto_deny_list

Всичко, сСга 94.242.55.248 няма Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ сайта ΠΈ Π½Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ.

Но всСки ΠΏΡŠΡ‚ Π΄Π° ΠΊΠΎΠΏΠΈΡ€Π°ΠΌΠ΅ Ρ€ΡŠΡ‡Π½ΠΎ Π½Π΅ Π΅ особСно приятно Π·Π°Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π° ΠΈ ΠΊΠΎΠ΄ΡŠΡ‚ Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Π΅ замислСн ΠΊΠ°Ρ‚ΠΎ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ΅Π½.

ДобавямС Ρ„Π°ΠΉΠ», ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ сС изпълнява ΠΏΠΎ CRON Π½Π° всСки 30 ΠΌΠΈΠ½ΡƒΡ‚ΠΈ:

Код Π·Π° Ρ„Π°ΠΉΠ»Π°, ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Ρ‰ .htaccess

get_results("SELECT * FROM wp_visiters_bot WHERE cnt>{$limit_cnt}");

$new_blocked = [];

$exclude_ip = [
    '87.236.16.70' // адрСс Π½Π° хостинга
];

foreach ($deny_table as $result) {

    if (in_array($result->ip, $exclude_ip)) {
        continue;
    }

    $wpdb->insert('wp_visiters_bot_blocked', ['ip' => $result->ip], ['%s']);
}

$deny_table_blocked = $wpdb->get_results("SELECT * FROM wp_visiters_bot_blocked");

foreach ($deny_table_blocked as $blocked) {
    $new_blocked[] = $blocked->ip;
}

// Π˜Π·Ρ‡ΠΈΡΡ‚Π²Π°Π½Π΅ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°
$wpdb->query("DELETE FROM wp_visiters_bot");

// echo '
';print_r($new_blocked);echo '
';$file = '.htaccess';$start_searche_tag = 'start_auto_deny_list';$end_searche_tag = 'end_auto_deny_list';$handle = @fopen($file, "r"); if ($handle) {$replace_string = ''; // ВСстова ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π·Π° вставка във Ρ„Π°ΠΉΠ»Π° .htaccess$target_content = false; // Π€Π»Π°Π³ Π·Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°Ρ‚Π° част ΠΎΡ‚ ΠΊΠΎΠ΄Π°while (($buffer = fgets($handle, 4096)) !== false) {if (stripos($buffer, 'start_auto_deny_list') !== false) { $target_content = true; continue; }if (stripos($buffer, 'end_auto_deny_list') !== false) { $target_content = false; continue; }if ($target_content) { $replace_string .= $buffer; } } if (!feof($handle)) { echo "Ошибка: fgets() Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ ΠΏΠΎΡ‚Π΅Ρ€ΠΏΠ΅Π» Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒn"; } fclose($handle); }// Π’Π΅ΠΊΡƒΡ‰ Ρ„Π°ΠΉΠ» .htaccess $content = file_get_contents($file);$content = str_replace($replace_string, '', $content);// Π˜Π·Ρ‡ΠΈΡΡ‚Π²Π°ΠΌΠ΅ всички Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ във Ρ„Π°ΠΉΠ»Π° .htaccess file_put_contents($file, $content);// Запис Π½Π° Π½ΠΎΠ²ΠΈΡ‚Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ $str = "# {$start_searche_tag}" . PHP_EOL;foreach ($new_blocked as $key => $value) { $str .= "Deny from {$value}" . PHP_EOL; }file_put_contents($file, str_replace("# {$start_searche_tag}", $str, file_get_contents($file)));

ΠšΠΎΠ΄ΡŠΡ‚ Π½Π° Ρ„Π°ΠΉΠ»Π° Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ прост ΠΈ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π΅Π½, Π° основната ΠΌΡƒ идСя Π΅ Π΄Π° Π²Π·Π΅ΠΌΠ΅ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ΠΈΡ‚Π΅ Π·Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ Π΄Π° впишС ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° Π·Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° във Ρ„Π°ΠΉΠ»Π° .htaccess ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡ‚Π΅.
# start_auto_deny_list ΠΈ # end_auto_deny_list

Π‘Π΅Π³Π° 'Π²Ρ€Π΅Π΄Π½ΠΈΡ‚Π΅' IP адрСси сС Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚ сами, Π° Ρ„Π°ΠΉΠ»ΡŠΡ‚ .htaccess ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ Ρ‚Π°ΠΊΠ°:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Order allow,deny
Allow from all

# start_auto_deny_list
Deny from 94.242.55.248
Deny from 207.46.13.122
Deny from 66.249.64.164
Deny from 54.209.162.70
Deny from 40.77.167.86
Deny from 54.146.43.69
Deny from 207.46.13.168
....... Π½ΠΈΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ адрСса
# end_auto_deny_list

Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° старта Π½Π° Ρ‚Π°ΠΊΡŠΠ² ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π° Π² хостинг ΠΏΠ°Π½Π΅Π»Π°:

Π˜Π·Ρ‡ΠΈΡΠ»ΡΠ²Π°ΠΌΠ΅ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΈΡ‚Π΅ "Π·Π»ΠΈ" Π±ΠΎΡ‚ΠΎΠ²Π΅ ΠΈ Π³ΠΈ Π±Π»ΠΎΠΊΠΈΡ€Π°ΠΌΠ΅ ΠΏΠΎ IP

PS: ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΡŠΡ‚ Π΅ авторски, ΠΌΠ°ΠΊΠ°Ρ€ Ρ‡Π΅ част ΠΎΡ‚ Π½Π΅Π³ΠΎ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Ρ… Π½Π° моят сайт, Π½ΠΎ Π½Π° Habre сС ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΏΠΎ-Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½Π° вСрсия.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster