
ΠΠΎΠ±ΡΡ Π΄Π΅Π½! Π ΡΡΠ°ΡΠΈΡΡΠ° ΡΠ΅ ΠΎΠ±ΡΡΠ½Ρ ΠΊΠ°ΠΊ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π½Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ Ρ
ΠΎΡΡΠΈΠ½Π³ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ»ΠΎΠ²ΡΡ IP Π°Π΄ΡΠ΅ΡΠΈΡΠ΅, Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠΈ ΠΏΡΠ΅ΠΊΠΎΠΌΠ΅ΡΠ½ΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°ΠΉΡΠ° ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π΄Π° Π³ΠΈ Π±Π»ΠΎΠΊΠΈΡΠ°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Ρ
ΠΎΡΡΠΈΠ½Π³ ΡΡΠ΅Π΄ΡΡΠ²Π°ΡΠ°, ΡΠ΅ Π²ΠΊΠ»ΡΡΠ° ΠΌΠ°Π»ΠΊΠΎ PHP ΠΊΠΎΠ΄ ΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ½ΠΈΠΌΠΊΠΈ Π½Π° Π΅ΠΊΡΠ°Π½Π°.
ΠΡ
ΠΎΠ΄Π½ΠΈ Π΄Π°Π½Π½ΠΈ:
- Π‘Π°ΠΉΡ, ΡΡΠ·Π΄Π°Π΄Π΅Π½ Π½Π° CMS WordPress
- Π₯ΠΎΡΡΠΈΠ½Π³ ΠΠ΅Π³Π΅Ρ (ΡΠΎΠ²Π° Π½Π΅ Π΅ ΡΠ΅ΠΊΠ»Π°ΠΌΠ°, Π½ΠΎ ΡΠΊΡΠΈΠ½ΡΠΎΡΠΈΡΠ΅ ΠΎΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡΠΊΠΈΡ ΠΏΠ°Π½Π΅Π» ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° ΡΠΎΠ·ΠΈ Ρ ΠΎΡΡΠΈΠ½Π³ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅Ρ)
- WordPress ΡΠ°ΠΉΡΡΡ Π΅ Π°ΠΊΡΠΈΠ²Π΅Π½ ΠΎΡ Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° 2000-ΡΠ΅ Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΈ ΠΈΠΌΠ° Π³ΠΎΠ»ΡΠΌΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠ°ΡΠΈΠΈ ΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈ
- ΠΠ΅ΡΡΠΈΡ Π½Π° PHP 7.2
- WP ΠΈΠΌΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ
- ΠΡ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ Π²ΡΠ΅ΠΌΠ΅ ΡΠ°ΠΉΡΡΡ Π·Π°ΠΏΠΎΡΠ½Π° Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ° Π²ΠΈΡΠΎΠΊΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ Π½Π° MySQL ΡΠΏΠΎΡΠ΅Π΄ Π΄Π°Π½Π½ΠΈΡΠ΅ Π½Π° Ρ ΠΎΡΡΠΈΠ½Π³Π°. ΠΡΠ΅ΠΊΠΈ Π΄Π΅Π½ ΡΠΎΠ²Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π°Π΄Π²ΠΈΡΠ°Π²Π°ΡΠ΅ 120% ΠΎΡ Π½ΠΎΡΠΌΠ°ΡΠ° Π·Π° Π°ΠΊΠ°ΡΠ½ΡΠ°.
- Π‘ΠΏΠΎΡΠ΅Π΄ Π―Π½Π΄Π΅ΠΊΡ. ΠΠ΅ΡΡΠΈΠΊΠ° ΡΠ°ΠΉΡΡΡ ΠΏΠΎΡΠ΅ΡΠ°Π²Π°Ρ 100-200 Π΄ΡΡΠΈ Π½Π° Π΄Π΅Π½.
ΠΡΡΠ²ΠΎ Π±Π΅ΡΠ΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΎ:
- ΠΠΎΡΠΈΡΡΠ΅Π½ΠΈ Π±ΡΡ Π° ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅ Π½Π° ΠΠ ΠΎΡ Π½Π°ΡΡΡΠΏΠ°Π½ Π±ΠΎΠΊΠ»ΡΠΊ
- ΠΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈ Π±ΡΡ Π° Π½Π΅Π½ΡΠΆΠ½ΠΈ ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ, ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π°ΡΠΈ ΡΡΠ°ΡΡΡΡΠΈ ΠΎΡ ΠΎΡΡΠ°ΡΡΠ» ΠΊΠΎΠ΄
ΠΠ°ΡΠΎ ΠΎΡΠ±Π΅Π»ΡΠ·Π²Π°ΠΌ, ΠΈΠ·ΠΏΡΠΎΠ±Π²Π°Π½ΠΈ Π±ΡΡ Π° Π²Π°ΡΠΈΠ°Π½ΡΠΈ Π·Π° ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ (ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ Π·Π° ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅), ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ β Π½ΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ ΠΎΡ 120% ΠΎΡ Π΅Π΄ΠΈΠ½ ΡΠ°ΠΉΡ ΠΎΡΡΠ°Π½Π° Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎ ΠΈ ΡΠ°ΠΌΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΡΠ°ΡΡΠ²Π°.
ΠΠ°ΠΊ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°ΡΠ΅ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎΡΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ Π½Π° Π±Π°Π·ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ Π½Π° Ρ ΠΎΡΡΠΈΠ½Π³Π°

ΠΠ° Π²ΡΡΡ
Π° Π΅ ΡΠ°ΠΉΡΡΡ, Π·Π° ΠΊΠΎΠΉΡΠΎ ΡΡΠ°Π²Π° Π²ΡΠΏΡΠΎΡ, ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-Π΄ΠΎΠ»Ρ ΡΠ° Π΄ΡΡΠ³ΠΈΡΠ΅ ΡΠ°ΠΉΡΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ°Ρ ΡΡΡΠ°ΡΠ° CMS ΠΈ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ ΡΡΡΠ°ΡΠ° ΠΏΠΎΡΠ΅ΡΠ°Π΅ΠΌΠΎΡΡ, Π½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ°Ρ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅.
ΠΠ½Π°Π»ΠΈΠ·
- ΠΡΡ Π° Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠΈΡΠΈ Ρ Π²Π°ΡΠΈΠ°Π½ΡΠΈ Π·Π° ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ, ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ΅Π΄ΠΌΠΈΡΠΈ (Π·Π° ΡΠ°ΡΡΠΈΠ΅, Ρ ΠΎΡΡΠΈΠ½Π³ΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠΎΠ²Π° Π½ΠΈΡΠΎ Π½Π΅ ΠΊΠ°Π·Π°, ΡΠ΅ ΡΡΠΌ ΡΠΎΠ»ΠΊΠΎΠ²Π° Π»ΠΎΡ ΠΈ ΡΠ΅ ΠΌΠ΅ ΠΈΠ·ΠΊΠ»ΡΡΠ°Ρ)
- ΠΠ΅ΡΠ΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ Π°Π½Π°Π»ΠΈΠ· ΠΈ ΡΡΡΡΠ΅Π½Π΅ Π½Π° Π±Π°Π²Π½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ, ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° ΠΠ ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ°Π±Π»ΠΈΡΠΈ Π±ΡΡ Π° ΠΌΠ°Π»ΠΊΠΎ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΈ.
- ΠΠ° Π°Π½Π°Π»ΠΈΠ·Π° Π² ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π΅Π½ ΡΡΠ°Π΄ΠΈΠΉ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π²Π³ΡΠ°Π΄Π΅Π½ΠΎΡΠΎ AWStats (ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΡΠ΅ ΡΠΎΠΉ ΠΏΠΎΠΌΠΎΠ³Π½Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΡΠΈΡΠ»ΠΈ Π½Π°ΠΉ-Π»ΠΎΡΠΈΡΡ IP Π°Π΄ΡΠ΅Ρ ΠΏΠΎ ΠΎΠ±Π΅ΠΌ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ°)
- ΠΠ΅ΡΡΠΈΠΊΠ°ΡΠ° β ΠΌΠ΅ΡΡΠΈΠΊΠ°ΡΠ° Π΄Π°Π²Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠ°ΠΌΠΎ Π·Π° Ρ ΠΎΡΠ°ΡΠ°, Π° Π½Π΅ Π·Π° Π±ΠΎΡΠΎΠ²Π΅ΡΠ΅.
- ΠΡΡ Π° Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈ ΠΎΠΏΠΈΡΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ Π·Π° WP, ΠΊΠΎΠΈΡΠΎ ΡΠΌΠ΅ΡΡ Π΄Π° ΡΠΈΠ»ΡΡΠΈΡΠ°Ρ ΠΈ Π±Π»ΠΎΠΊΠΈΡΠ°Ρ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»ΠΈ Π΄ΠΎΡΠΈ ΠΏΠΎ ΡΡΡΠ°Π½Π° Π½Π° ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ.
- Π‘ΡΠ²ΡΠ΅ΠΌ ΡΠ°Π΄ΠΈΠΊΠ°Π»Π΅Π½ Π½Π°ΡΠΈΠ½ Π·Π° Π·Π°ΡΠ²Π°ΡΡΠ½Π΅ Π½Π° ΡΠ°ΠΉΡΠ° Π·Π° Π΅Π΄ΠΈΠ½ Π΄Π΅Π½ Ρ Π±Π΅Π»Π΅ΠΆΠΊΠ° "Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΠΌΠ΅ Π½Π° ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠ²Π°Π½Π΅" - Π±Π΅ΡΠ΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΈΠ·Π²Π΅ΡΡΠ½ΠΈΡ ΠΏΠ»ΡΠ³ΠΈΠ½. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π°ΠΈΡΡΠΈΠ½Π° ΠΏΠ°Π΄Π½Π°, Π½ΠΎ Π½Π΅ Π΄ΠΎ Π½ΡΠ»Π΅Π²ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΈΠ΄Π΅ΠΎΠ»ΠΎΠ³ΠΈΡΡΠ° Π½Π° WP ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π²Π° Π½Π° Ρ ΡΠΊΠΎΠ²Π΅ ΠΈ ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈΡΠ΅ Π·Π°ΠΏΠΎΡΠ²Π°Ρ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° ΡΠΈ ΠΏΡΠΈ Π½Π°ΡΡΡΠΏΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π½ΡΠΊΠ°ΠΊΡΠ² "Ρ ΡΠΊ", Π° Π΄ΠΎ Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅ Π²Π΅ΡΠ΅ Π΄Π° ΡΠ° Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ ΠΊΡΠΌ ΠΠ.
ΠΠ΄Π΅Ρ
- ΠΠ·ΡΠΈΡΠ»Π΅ΡΠ΅ IP Π°Π΄ΡΠ΅ΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ°Π²ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°ΡΠ²ΠΊΠΈ Π·Π° ΠΊΡΠ°ΡΡΠΊ ΠΏΠ΅ΡΠΈΠΎΠ΄ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅.
- Π€ΠΈΠΊΡΠΈΡΠ°ΠΉΡΠ΅ Π±ΡΠΎΡ Π½Π° ΠΏΠΎΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ° Π½Π° ΡΠ°ΠΉΡΠ°.
- ΠΠ° Π±Π°Π·Π°ΡΠ° Π½Π° Π±ΡΠΎΡ Π½Π° ΠΏΠΎΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ° Π±Π»ΠΎΠΊΠΈΡΠ°ΠΉΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ° Π΄ΠΎ ΡΠ°ΠΉΡΠ°.
- ΠΠ»ΠΎΠΊΠΈΡΠ°ΠΉΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π·Π°ΠΏΠΈΡΠ° "Deny from" Π² ΡΠ°ΠΉΠ»Π° .htaccess.
- ΠΡΡΠ³ΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠΈ, ΠΊΠ°ΡΠΎ 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, ΠΎΡΠ²ΠΎΡΠΈΡ
ΠΌΠ΅ ΡΠ°ΠΉΠ»Π° .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
Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΡΠ°ΡΡΠ° Π½Π° ΡΠ°ΠΊΡΠ² ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° Π² Ρ ΠΎΡΡΠΈΠ½Π³ ΠΏΠ°Π½Π΅Π»Π°:

PS: ΠΠ°ΡΠ΅ΡΠΈΠ°Π»ΡΡ Π΅ Π°Π²ΡΠΎΡΡΠΊΠΈ, ΠΌΠ°ΠΊΠ°Ρ ΡΠ΅ ΡΠ°ΡΡ ΠΎΡ Π½Π΅Π³ΠΎ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Ρ
Π½Π° ΠΌΠΎΡΡ ΡΠ°ΠΉΡ, Π½ΠΎ Π½Π° Habre ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈ ΠΏΠΎ-ΡΠ°Π·ΡΠΈΡΠ΅Π½Π° Π²Π΅ΡΡΠΈΡ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
