ืื ื• ืžื–ื”ื™ื ื‘ื•ื˜ื™ื "ืจืฉืขื™ื" ืคื•ื˜ื ืฆื™ืืœื™ื™ื ื•ื—ื•ืกืžื™ื ืื•ืชื ื‘ืืžืฆืขื•ืช IP

ืื ื• ืžื–ื”ื™ื ื‘ื•ื˜ื™ื "ืจืฉืขื™ื" ืคื•ื˜ื ืฆื™ืืœื™ื™ื ื•ื—ื•ืกืžื™ื ืื•ืชื ื‘ืืžืฆืขื•ืช IP

ื™ื•ื ื˜ื•ื‘! ื‘ืžืืžืจ ืืกืคืจ ืœื›ื ืื™ืš ืžืฉืชืžืฉื™ื ื‘ืื™ืจื•ื— ืจื’ื™ืœ ื™ื›ื•ืœื™ื ืœืชืคื•ืก ื›ืชื•ื‘ื•ืช IP ืฉืžื™ื™ืฆืจื•ืช ืขื•ืžืก ื™ืชืจ ืขืœ ื”ืืชืจ ื•ืื– ืœื—ืกื•ื ืื•ืชืŸ ื‘ืืžืฆืขื•ืช ื›ืœื™ ืื™ืจื•ื—, ื™ื”ื™ื” "ืžืขื˜" ืฉืœ ืงื•ื“ php, ื›ืžื” ืฆื™ืœื•ืžื™ ืžืกืš.

ืงืœื˜ ื ืชื•ื ื™ื:

  1. ืืชืจ ืฉื ื•ืฆืจ ื‘-CMS WordPress
  2. ืื™ืจื•ื— Beget (ื–ื• ืœื ืคืจืกื•ืžืช, ืื‘ืœ ืฆื™ืœื•ืžื™ ื”ืžืกืš ืฉืœ ืคืื ืœ ื”ื ื™ื”ื•ืœ ื™ื”ื™ื• ืžืกืคืง ืื™ืจื•ื— ืžืกื•ื™ื ื–ื”)
  3. ืืชืจ ื•ื•ืจื“ืคืจืก ื”ื•ืฉืง ืื™ ืฉื ื‘ืชื—ื™ืœืช ืฉื ืช 2000 ื•ื™ืฉ ื‘ื• ืžืกืคืจ ืจื‘ ืฉืœ ืžืืžืจื™ื ื•ื—ื•ืžืจื™ื
  4. ื’ื™ืจืกืช PHP 7.2
  5. ืœ-WP ื™ืฉ ืืช ื”ื’ืจืกื” ื”ืขื“ื›ื ื™ืช ื‘ื™ื•ืชืจ
  6. ืžื–ื” ื–ืžืŸ ืžื”, ื”ืืชืจ ื”ื—ืœ ืœื™ื™ืฆืจ ืขื•ืžืก ื’ื‘ื•ื” ืขืœ MySQL ืœืคื™ ื ืชื•ื ื™ ื”ืื—ืกื•ืŸ. ื‘ื›ืœ ื™ื•ื ืขืจืš ื–ื” ืขืœื” ืขืœ 120% ืžื”ื ื•ืจืžื” ืœื—ืฉื‘ื•ืŸ
  7. ืœืคื™ Yandex. ื‘ืืชืจ Metrica ืžื‘ืงืจื™ื 100-200 ืื ืฉื™ื ื‘ื™ื•ื

ืงื•ื“ื ื›ืœ ื–ื” ื ืขืฉื”:

  1. ื˜ื‘ืœืื•ืช ืžืื’ืจื™ ืžื™ื“ืข ื ื•ืงื• ืžืืฉืคื” ืฉื”ืฆื˜ื‘ืจื”
  2. ืชื•ืกืคื™ื ืžื™ื•ืชืจื™ื ื”ื•ืฉื‘ืชื•, ืงื˜ืขื™ื ืฉืœ ืงื•ื“ ืžื™ื•ืฉืŸ ื”ื•ืกืจื•

ื™ื—ื“ ืขื ื–ืืช, ื‘ืจืฆื•ื ื™ ืœื”ืกื‘ ืืช ืชืฉื•ืžืช ืœื‘ื›ื ืœืขื•ื‘ื“ื” ืฉื ื•ืกื• ืืคืฉืจื•ื™ื•ืช ืžื˜ืžื•ืŸ (ืชื•ืกืคื™ ืžื˜ืžื•ืŸ), ื‘ื•ืฆืขื• ืชืฆืคื™ื•ืช - ืืš ื”ืขื•ืžืก ืฉืœ 120% ืžืืชืจ ืื—ื“ ื ื•ืชืจ ืœืœื ืฉื™ื ื•ื™ ื•ื™ื›ื•ืœ ื”ื™ื” ืจืง โ€‹โ€‹ืœื’ื“ื•ืœ.

ืื™ืš ื ืจืื” ื”ืขื•ืžืก ื”ืžืฉื•ืขืจ ืขืœ ืžืกื“ื™ ื ืชื•ื ื™ื ืœืื™ืจื•ื—

ืื ื• ืžื–ื”ื™ื ื‘ื•ื˜ื™ื "ืจืฉืขื™ื" ืคื•ื˜ื ืฆื™ืืœื™ื™ื ื•ื—ื•ืกืžื™ื ืื•ืชื ื‘ืืžืฆืขื•ืช IP
ื‘ื—ืœืง ื”ืขืœื™ื•ืŸ ื ืžืฆื ื”ืืชืจ ื”ืžื“ื•ื‘ืจ, ืžืžืฉ ืœืžื˜ื” ืืชืจื™ื ืื—ืจื™ื ื‘ืขืœื™ ืื•ืชื cms ื•ืื•ืชื” ืชื ื•ืขื” ื‘ืขืจืš, ืืš ื™ื•ืฆืจื™ื ืคื—ื•ืช ืขื•ืžืก.

ื ื™ืชื•ื— ืฉืœ

  • ื ืขืฉื• ื ื™ืกื™ื•ื ื•ืช ืจื‘ื™ื ืขื ืืคืฉืจื•ื™ื•ืช ืื—ืกื•ืŸ ื ืชื•ื ื™ื ื‘ืžื˜ืžื•ืŸ, ืชืฆืคื™ื•ืช ื‘ื•ืฆืขื• ื‘ืžืฉืš ืžืกืคืจ ืฉื‘ื•ืขื•ืช (ืœืžืจื‘ื” ื”ืžื–ืœ, ื‘ืžื”ืœืš ื”ืชืงื•ืคื” ื”ื–ื•, ื”ืื™ืจื•ื— ืžืขื•ืœื ืœื ื›ืชื‘ ืœื™ ืฉืื ื™ ื›ืœ ื›ืš ื’ืจื•ืข ื•ืฉืืชื ืชืง)
  • ื”ื™ื” ื ื™ืชื•ื— ื•ื—ื™ืคื•ืฉ ืื—ืจ ืฉืื™ืœืชื•ืช ืื™ื˜ื™ื•ืช, ื•ืื– ืžื‘ื ื” ืžืกื“ ื”ื ืชื•ื ื™ื ื•ืกื•ื’ ื”ื˜ื‘ืœื” ื”ืฉืชื ื• ืžืขื˜
  • ืœืฆื•ืจืš ื ื™ืชื•ื—, ื”ืฉืชืžืฉื ื• ื‘ืขื™ืงืจ ื‘-AWStats ื”ืžื•ื‘ื ื™ื (ืื’ื‘, ื–ื” ืขื–ืจ ืœื—ืฉื‘ ืืช ื›ืชื•ื‘ืช ื”-IP ื”ื’ืจื•ืขื” ื‘ื™ื•ืชืจ ืขืœ ืกืžืš ื ืคื— ื”ืชืขื‘ื•ืจื”
  • ืžื“ื“ - ื”ืžื“ื“ ืžืกืคืง ืžื™ื“ืข ืจืง ืขืœ ืื ืฉื™ื, ืœื ืขืœ ื‘ื•ื˜ื™ื
  • ื”ื™ื• ื ื™ืกื™ื•ื ื•ืช ืœื”ืฉืชืžืฉ ื‘ืชื•ืกืคื™ื ืขื‘ื•ืจ WP ืฉื™ื›ื•ืœื™ื ืœืกื ืŸ ื•ืœื—ืกื•ื ืžื‘ืงืจื™ื ืืคื™ืœื• ืœืคื™ ืžื“ื™ื ืช ืžื™ืงื•ื ื•ืฉื™ืœื•ื‘ื™ื ืฉื•ื ื™ื
  • ื“ืจืš ืจื“ื™ืงืœื™ืช ืœื—ืœื•ื˜ื™ืŸ ื”ืชื‘ืจืจื” ื›ืœืกื’ื•ืจ ืืช ื”ืืชืจ ืœื™ื•ื ืื—ื“ ืขื ื”ื”ืขืจื” "ืื ื—ื ื• ื‘ืชื—ื–ื•ืงื”" - ื–ื” ื ืขืฉื” ื’ื ื‘ืืžืฆืขื•ืช ื”ืชื•ืกืฃ ื”ืžืคื•ืจืกื. ื‘ืžืงืจื” ื–ื”, ืื ื• ืžืฆืคื™ื ืฉื”ืขื•ืžืก ื™ื™ืจื“, ืืš ืœื ืœืืคืก ืขืจื›ื™ื, ืžื›ื™ื•ื•ืŸ ืฉื”ืื™ื“ื™ืื•ืœื•ื’ื™ื” ืฉืœ ื”-WP ืžื‘ื•ืกืกืช ืขืœ ื”ื•ืงืก ื•ืชื•ืกืคื™ื ืžืชื—ื™ืœื™ื ืืช ืคืขื™ืœื•ืชื ื›ืืฉืจ ืžืชืจื—ืฉ "hook", ื•ืœืคื ื™ ืฉื”-"hook" ืžืชืจื—ืฉ, ื‘ืงืฉื•ืช ืœืžืกื“ ื”ื ืชื•ื ื™ื ื™ื›ื•ืœื•ืช ื›ื‘ืจ ืขืฉื•ื™ื•ืช

ืจืขื™ื•ืŸ

  1. ื—ืฉื‘ ื›ืชื•ื‘ื•ืช IP ืฉืžื‘ืฆืขื•ืช ื”ืจื‘ื” ื‘ืงืฉื•ืช ื‘ืคืจืง ื–ืžืŸ ืงืฆืจ.
  2. ืจืฉื•ื ืืช ืžืกืคืจ ื”ื›ื ื™ืกื•ืช ืœืืชืจ
  3. ื—ืกื•ื ื’ื™ืฉื” ืœืืชืจ ื‘ื”ืชืื ืœืžืกืคืจ ื”ื›ื ื™ืกื•ืช
  4. ื—ืกื•ื ื‘ืืžืฆืขื•ืช ื”ืขืจืš "ื“ื—ื” ืž" ื‘ืงื•ื‘ืฅ .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 ื™ื•ื’ื“ืœ (ืžืกืคืจ ื”ื‘ืงืฉื•ืช ืœืืชืจ)

  • ืขื›ืฉื™ื• ื”ื“ื‘ืจ ื”ืžืคื—ื™ื“... ืขื›ืฉื™ื• ื™ืฉืจืคื• ืื•ืชื™ ืขืœ ื”ืžืขืฉื™ื ืฉืœื™ :)
    ื›ื“ื™ ืœื”ืงืœื™ื˜ ื›ืœ ื‘ืงืฉื” ืœืืชืจ, ืื ื• ืžื—ื‘ืจื™ื ืืช ืงื•ื“ ื”ืงื•ื‘ืฅ ืœืงื•ื‘ืฅ ื”ื•ื•ืจื“ืคืจืก ื”ืจืืฉื™ - 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

<?php

/**
 * ะคะฐะนะป ะฐะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะพะณะพ ะทะฐะดะฐะฝะธั ะฑะปะพะบะธั€ะพะฒะพะบ ะฟะพ IP ะฐะดั€ะตััƒ
 * ะ”ะพะปะถะตะฝ ะทะฐะฟั€ะฐัˆะธะฒะฐั‚ัŒัั ั‡ะตั€ะตะท CRON
 */
if (empty($_REQUEST['key'])) {
    die('Hello');
}

require('wp-load.php');

global $wpdb;

$limit_cnt = 70; //ะ›ะธะผะธั‚ ะทะฐะฟั€ะพัะพะฒ ะฟะพ ะบะพั‚ะพั€ั‹ะผ ะพั‚ะฑะธั€ะฐั‚ัŒ

$deny_table = $wpdb->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 '<pre>';print_r($new_blocked);echo '</pre>';

$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

ื .ื‘: ื”ื—ื•ืžืจ ื”ื•ื ืฉืœ ื”ืžื—ื‘ืจ, ืœืžืจื•ืช ืฉืคืจืกืžืชื™ ื—ืœืง ืžืžื ื• ื‘ืืชืจ ืฉืœื™, ืงื™ื‘ืœืชื™ ื’ืจืกื” ืžื•ืจื—ื‘ืช ื™ื•ืชืจ ืขืœ Habre.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”