ืžื™ืจ ื™ื“ืขื ื˜ื™ืคื™ืฆื™ืจืŸ ืคึผืึธื˜ืขื ืฆื™ืขืœ "ื‘ื™ื™ื–" ื‘ืึธืฅ ืื•ืŸ ืคืึทืจืฉืคึผืึทืจืŸ ื–ื™ื™ ื“ื•ืจืš IP

ืžื™ืจ ื™ื“ืขื ื˜ื™ืคื™ืฆื™ืจืŸ ืคึผืึธื˜ืขื ืฆื™ืขืœ "ื‘ื™ื™ื–" ื‘ืึธืฅ ืื•ืŸ ืคืึทืจืฉืคึผืึทืจืŸ ื–ื™ื™ ื“ื•ืจืš IP

ื ื’ื•ื˜ืŸ ื˜ืื’! ืื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ ืื™ืš ื•ื•ืขื˜ ื–ืึธื’ืŸ ืื™ืจ ื•ื•ื™ ื™ื•ื–ืขืจื– ืคื•ืŸ ืจืขื’ื•ืœืขืจ ื”ืึธืกื˜ื™ื ื’ ืงืขื ืขืŸ ื›ืึทืคึผืŸ IP ืึทื“ืจืขืกืขืก ื•ื•ืึธืก ื“ื–ืฉืขื ืขืจื™ื™ื˜ ื™ื‘ืขืจื™ืง ืžืึทืกืข ืื•ื™ืฃ ื“ืขื ืคึผืœืึทืฅ ืื•ืŸ ื“ืขืžืึธืœื˜ ืคืึทืจืฉืคึผืึทืจืŸ ื–ื™ื™ ืžื™ื˜ ื”ืึธืกื˜ื™ื ื’ ืžื›ืฉื™ืจื™ื, ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ "ืึท ื‘ื™ืกืœ" ืคื•ืŸ ืคืคึผ ืงืึธื“, ืึท ื‘ื™ืกืœ ืกืงืจืขืขื ืฉืึธืฅ.

ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘ ื“ืึทื˜ืŸ:

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

ืขืจืฉื˜ืขืจ ืคื•ืŸ ืึทืœืข, ื“ืึธืก ืื™ื– ื’ืขื˜ืืŸ:

  1. ื“ืึทื˜ืึทื‘ืึทืกืข ื˜ื™ืฉืŸ ื–ืขื ืขืŸ ืงืœื™ืจื“ ืคื•ืŸ ืึทืงื™ื•ืžื™ืึทืœื™ื™ื˜ื™ื“ ืžื™ืกื˜
  2. ื•ืžื ื™ื™ื˜ื™ืง ืคึผืœื•ื’ื™ื ืก ื–ืขื ืขืŸ ืคืึทืจืงืจื™ืคึผืœื˜, ืกืขืงืฉืึทื ื– ืคื•ืŸ ืึทื•ื˜ื“ื™ื™ื˜ื™ื“ ืงืึธื“ ื–ืขื ืขืŸ ืึทื•ื•ืขืงื’ืขื ื•ืžืขืŸ

ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜, ืื™ืš ื•ื•ืึธืœื˜ ื•ื•ื™ ืฆื• ืฆื™ืขืŸ ื“ื™ื™ืŸ ื•ืคืžืขืจืงื–ืึทืžืงื™ื™ื˜ ืฆื• ื“ื™ ืคืึทืงื˜ ืึทื– ืงืึทื˜ืฉื™ื ื’ ืึธืคึผืฆื™ืขืก (ืงืึทื˜ืฉื™ื ื’ ืคึผืœื•ื’ื™ื ืก) ื–ืขื ืขืŸ ื’ืขืคืจื•ื•ื•ื˜, ืึทื‘ื–ืขืจื•ื•ื™ื™ืฉืึทื ื– ื–ืขื ืขืŸ ื’ืขืžืื›ื˜ - ืึธื‘ืขืจ ื“ื™ ืžืึทืกืข ืคื•ืŸ โ€‹โ€‹120% ืคื•ืŸ ืื™ื™ืŸ ืคึผืœืึทืฅ ืื™ื– ื’ืขื•ื•ืขืŸ ืึทื ื˜ืฉื™ื™ื ื“ื–ืฉื“ ืื•ืŸ ืงืขืŸ ื ืึธืจ ื•ื•ืึทืงืกืŸ.

ื•ื•ื™ ื“ื™ ื“ืขืจื ืขื ื˜ืขืจื  ืžืึทืกืข ืื•ื™ืฃ ื”ืึธืกื˜ื™ื ื’ ื“ืึทื˜ืึทื‘ื™ื™ืกื™ื– ื’ืขืงื•ืงื˜ ื•ื•ื™

ืžื™ืจ ื™ื“ืขื ื˜ื™ืคื™ืฆื™ืจืŸ ืคึผืึธื˜ืขื ืฆื™ืขืœ "ื‘ื™ื™ื–" ื‘ืึธืฅ ืื•ืŸ ืคืึทืจืฉืคึผืึทืจืŸ ื–ื™ื™ ื“ื•ืจืš IP
ืื™ืŸ ื“ืขืจ ืฉืคึผื™ืฅ ืื™ื– ื“ื™ ืคึผืœืึทืฅ ืื™ืŸ ืงืฉื™ื, ืคึผื•ื ืงื˜ ืื•ื ื˜ืŸ ื–ืขื ืขืŸ ืื ื“ืขืจืข ื–ื™ื™ื˜ืœืขืš ื•ื•ืึธืก ื”ืึธื‘ืŸ ื“ื™ ื–ืขืœื‘ืข ืงืžืก ืื•ืŸ ื‘ืขืขืจืขืš ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืคืึทืจืงืขืจ, ืึธื‘ืขืจ ืžืึทื›ืŸ ื•ื•ื™ื™ื ื™ืงืขืจ ืžืึทืกืข.

ืึทื ืึทืœื™ืกื™ืก ืคื•ืŸ

  • ืคื™ืœืข ืคืจื•ื•ื•ืŸ ื–ืขื ืขืŸ ื’ืขืžืื›ื˜ ืžื™ื˜ ื“ืึทื˜ืŸ ืงืึทื˜ืฉื™ื ื’ ืึธืคึผืฆื™ืขืก, ืึทื‘ื–ืขืจื•ื•ื™ื™ืฉืึทื ื– ื–ืขื ืขืŸ ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ืื™ื‘ืขืจ ืขื˜ืœืขื›ืข ื•ื•ืึธื›ืŸ (ืฆื•ืž ื’ืœื™ืง, ื‘ืขืฉืึทืก ื“ืขื ืžืึธืœ ื“ื™ ื”ืึธืกื˜ื™ื ื’ ืงื™ื™ื ืžืึธืœ ื’ืขืฉืจื™ื‘ืŸ ืฆื• ืžื™ืจ ืึทื– ืื™ืš ืื™ื– ื’ืขื•ื•ืขืŸ ืึทื–ื•ื™ ืฉืœืขื›ื˜ ืื•ืŸ ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ื“ื™ืกืงืึทื ืขืงื˜ื™ื“)
  • ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึทืŸ ืึทื ืึทืœื™ืกื™ืก ืื•ืŸ ื–ื•ื›ืŸ ืคึฟืึทืจ ืคึผืึทืžืขืœืขืš ืคึฟืจืื’ืŸ, ื“ืขืจื ืึธืš ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ืกื˜ืจื•ืงื˜ื•ืจ ืื•ืŸ ื˜ื™ืฉ ื˜ื™ืคึผ ื–ืขื ืขืŸ ืึท ื‘ื™ืกืœ ืคืืจืขื ื“ืขืจื˜
  • ืคึฟืึทืจ ืึทื ืึทืœื™ืกื™ืก, ืžื™ืจ ื‘ืคึฟืจื˜ ื’ืขื•ื•ื™ื™ื ื˜ ื“ื™ ื’ืขื‘ื•ื™ื˜-ืื™ืŸ AWStats (ืื’ื‘, ืขืก ื’ืขื”ืึธืœืคึฟืŸ ืฆื• ืจืขื›ืขื ืขืŸ ื“ื™ ืขืจื’ืกื˜ IP ืึทื“ืจืขืก ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ืคืึทืจืงืขืจ ื‘ืึทื ื“
  • ืžืขื˜ืจื™ืง - ื“ื™ ืžืขื˜ืจื™ืง ื’ื™ื˜ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื‘ืœื•ื™ื– ื•ื•ืขื’ืŸ ืžืขื ื˜ืฉืŸ, ื ื™ืฉื˜ ื•ื•ืขื’ืŸ ื‘ืึธืฅ
  • ืขืก ื”ืึธื‘ืŸ ืฉื•ื™ืŸ ืคืจื•ื•ื•ืŸ ืฆื• ื ื•ืฆืŸ ืคึผืœื•ื’ื™ื ืก ืคึฟืึทืจ WP ื•ื•ืึธืก ืงืขื ืขืŸ ืคื™ืœื˜ืขืจ ืื•ืŸ ืคืึทืจืฉืคึผืึทืจืŸ ื•ื•ื™ื–ืึทื˜ืขืจื– ืืคื™ืœื• ืœื•ื™ื˜ ืœืึทื ื“ ืคื•ืŸ ืึธืจื˜ ืื•ืŸ ืคืึทืจืฉื™ื“ืŸ ืงืึทืžื‘ืึทื ื™ื™ืฉืึทื ื–
  • ื ื’ืึธืจ ืจืึทื“ื™ืงืึทืœ ื•ื•ืขื’ ืื™ื– ื’ืขื•ื•ืขืŸ ืฆื• ืคืึทืจืžืึทื›ืŸ ื“ืขื ืคึผืœืึทืฅ ืคึฟืึทืจ ืึท ื˜ืึธื’ ืžื™ื˜ ื“ื™ ื˜ืึธืŸ "ืžื™ืจ ื–ืขื ืขืŸ ืื•ื ื˜ืขืจ ื•ื™ืฉืึทืœื˜" - ื“ืึธืก ืื™ื– ืื•ื™ืš ื’ืขื˜ืืŸ ืžื™ื˜ ื“ื™ ื‘ืึทืจื™ืžื˜ ืคึผืœื•ื’ื™ืŸ. ืื™ืŸ ื“ืขื ืคืึทืœ, ืžื™ืจ ื“ืขืจื•ื•ืึทืจื˜ืŸ ืึทื– ื“ื™ ืžืึทืกืข ื•ื•ืขื˜ ืคืึทืœืŸ, ืึธื‘ืขืจ ื ื™ืฉื˜ ืฆื• ื ื•ืœ ื•ื•ืึทืœื•ืขืก, ื–ื™ื ื˜ ื“ื™ WP ื™ื“ืขืึธืœืึธื’ื™ืข ืื™ื– ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื›ื•ืงืก ืื•ืŸ ืคึผืœื•ื’ื™ื ืก ืึธื ื”ื™ื™ื‘ืŸ ื–ื™ื™ืขืจ ื˜ืขื˜ื™ืงื™ื™ื˜ ื•ื•ืขืŸ ืึท "ืงืจื•ืง" ืึทืงืขืจื–, ืื•ืŸ ืื™ื™ื“ืขืจ ื“ื™ "ืงืจื•ืง" ืึทืงืขืจื–, ืจื™ืงื•ื•ืขืก ืฆื• ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ืงืขื ืขืŸ ืฉื•ื™ืŸ ื’ืขืžืื›ื˜

ื’ืขื“ืึทื ืง

  1. ืจืขื›ืขื ืขืŸ IP ืึทื“ืจืขืกืขืก ื•ื•ืึธืก ืžืึทื›ืŸ ืึท ืคึผืœืึทืฅ ืคื•ืŸ ืจื™ืงื•ื•ืขืก ืื™ืŸ ืึท ืงื•ืจืฅ ืฆื™ื™ื˜.
  2. ืจืขืงืึธืจื“ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ื”ื™ืฅ ืฆื• ื“ืขื ืคึผืœืึทืฅ
  3. ืคืึทืจืฉืคึผืึทืจืŸ ืึทืงืกืขืก ืฆื• ื“ืขื ืคึผืœืึทืฅ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ื”ื™ืฅ
  4. ืคืึทืจืฉืคึผืึทืจืŸ ื ื™ืฆืŸ ื“ื™ "ืึธืคึผืœื™ื™ืงืขื ืขืŸ ืคื•ืŸ" ืคึผืึธื–ื™ืฆื™ืข ืื™ืŸ ื“ื™ .htaccess ื˜ืขืงืข
  5. ืื™ืš ื”ืึธื‘ ื ื™ืฉื˜ ื‘ืึทื˜ืจืึทื›ื˜ืŸ ืื ื“ืขืจืข ืึธืคึผืฆื™ืขืก, ื•ื•ื™ ื™ืคึผื˜ืึทื‘ืœืขืก ืื•ืŸ ื›ึผืœืœื™ื ืคึฟืึทืจ 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 ืžื™ื ื•ื˜:

ื˜ืขืงืข ืงืึธื“ ืžืึทื“ืึทืคื™ื™ื™ื ื’ .ื”ื˜ืึทืงืกืขืกืก

<?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

ืื™ืฆื˜ "ืฉืขื“ืœืขืš" IPs ื–ืขื ืขืŸ ืืคื’ืขืฉื˜ืขืœื˜ ื“ื•ืจืš ื–ื™ืš, ืื•ืŸ ื“ื™ .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

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’