เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบ™เบปเบ” bots "เบŠเบปเปˆเบงเบฎเป‰เบฒเบ" เบ—เบตเปˆเบกเบตเบ—เปˆเบฒเปเบฎเบ‡เปเบฅเบฐเบชเบฐเบเบฑเบ”เบžเบงเบเป€เบ‚เบปเบฒเป‚เบ”เบ IP

เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบ™เบปเบ” bots "เบŠเบปเปˆเบงเบฎเป‰เบฒเบ" เบ—เบตเปˆเบกเบตเบ—เปˆเบฒเปเบฎเบ‡เปเบฅเบฐเบชเบฐเบเบฑเบ”เบžเบงเบเป€เบ‚เบปเบฒเป‚เบ”เบ IP

เบกเบทเป‰เบ—เบตเปˆเบ”เบต! เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบšเบญเบเบ—เปˆเบฒเบ™เบงเปˆเบฒเบœเบนเป‰เปƒเบŠเป‰เบ‚เบญเบ‡เป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ›เบปเบเบเบฐเบ•เบดเบชเบฒเบกเบฒเบ”เบˆเบฑเบšเบ—เบตเปˆเบขเบนเปˆ IP เบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบเบฒเบ™เป‚เบซเบผเบ”เบซเบผเบฒเบเป€เบเบตเบ™เป„เบ›เปƒเบ™เป€เบงเบฑเบšเป„เบŠเบ—เปŒเปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบชเบฐเบเบฑเบ”เบžเบงเบเป€เบ‚เบปเบฒเป‚เบ”เบเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบทเป‚เบฎเบ”เบ•เบดเป‰เบ‡, เบˆเบฐเบกเบต "เป€เบฅเบฑเบเบ™เป‰เบญเบ" เบฅเบฐเบซเบฑเบ” php, เบชเบญเบ‡เบชเบฒเบกเบซเบ™เป‰เบฒเบˆเป.

เบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™:

  1. เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™ CMS WordPress
  2. Hosting Beget (เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบเบฒเบ™เป‚เบ„เบชเบฐเบ™เบฒ, เปเบ•เปˆเบžเบฒเบšเบซเบ™เป‰เบฒเบˆเปเบ‚เบญเบ‡เบเบฐเบ”เบฒเบ™ admin เบˆเบฐเบกเบฒเบˆเบฒเบเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ™เบตเป‰เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ)
  3. เป€เบงเบฑเบšเป„เบŠเบ—เปŒ WordPress เป„เบ”เป‰เบ–เบทเบเป€เบ›เบตเบ”เบ•เบปเบงเบขเบนเปˆเบšเปˆเบญเบ™เปƒเบ”เบซเบ™เบถเปˆเบ‡เปƒเบ™เบ•เบปเป‰เบ™เบ›เบต 2000 เปเบฅเบฐเบกเบตเบšเบปเบ”เบ„เบงเบฒเบกเปเบฅเบฐเบงเบฑเบ”เบชเบฐเบ”เบธเบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบ
  4. PHP เป€เบงเบตเบŠเบฑเปˆเบ™ 7.2
  5. WP เบกเบตเบชเบฐเบšเบฑเบšเบซเบฅเป‰เบฒเบชเบธเบ”
  6. เบชเปเบฒเบฅเบฑเบšเบšเบฒเบ‡เป€เบงเบฅเบฒเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เป€เบงเบฑเบšเป„เบŠเบ—เปŒเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบชเป‰เบฒเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เบชเบนเบ‡เปƒเบ™ MySQL เบญเบตเบ‡เบ•เบฒเบกเบ‚เปเป‰เบกเบนเบ™เป‚เบฎเบ”เบ•เบดเป‰เบ‡. เบ—เบธเบเป†เบกเบทเป‰เบกเบนเบ™เบ„เปˆเบฒเบ™เบตเป‰เป€เบเบตเบ™ 120% เบ‚เบญเบ‡เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ•เปเปˆเบšเบฑเบ™เบŠเบต
  7. เบญเบตเบ‡เบ•เบฒเบก Yandex. เป€เบงเบฑเบšเป„เบŠเบ—เปŒ Metrica เปเบกเปˆเบ™เป„เบ›เบขเป‰เบฝเบกเบขเบฒเบก 100-200 เบ„เบปเบ™เบ•เปเปˆเบกเบทเป‰

เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ”, เบ™เบตเป‰เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป„เบ”เป‰:

  1. เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป„เบ”เป‰เบ–เบทเบเป€เบเบฑเบšเบเบนเป‰เบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบชเบฐเบชเบปเบก
  2. เบ›เบฑเปŠเบเบญเบดเบ™เบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ–เบทเบเบ›เบดเบ”เปƒเบŠเป‰เบ‡เบฒเบ™, เบžเบฒเบเบชเปˆเบงเบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบฅเป‰เบฒเบชเบฐเป„เบซเบกเป„เบ”เป‰เบ–เบทเบเบฅเบถเบšเบญเบญเบ

เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบขเบฒเบเบˆเบฐเบ”เบถเบ‡เบ”เบนเบ”เบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบเบฑเบšเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒ (caching plugins) เป„เบ”เป‰เบ–เบทเบเบžเบฐเบเบฒเบเบฒเบก, เบเบฒเบ™เบชเบฑเบ‡เป€เบเบ”เบเบฒเบ™เป„เบ”เป‰เบ–เบทเบเป€เบฎเบฑเบ” - เปเบ•เปˆเบเบฒเบ™เป‚เบซเบผเบ”เบ‚เบญเบ‡ 120% เบˆเบฒเบเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบซเบ™เบถเปˆเบ‡เปเบกเปˆเบ™เบšเปเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡เปเบฅเบฐเบžเบฝเบ‡เปเบ•เปˆเบชเบฒเบกเบฒเบ”เป€เบ•เบตเบšเป‚เบ•เป„เบ”เป‰.

เบเบฒเบ™เป‚เบซเบผเบ”เป‚เบ”เบเบ›เบฐเบกเบฒเบ™เบขเบนเปˆเปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป‚เบฎเบ”เบ•เบดเป‰เบ‡เป€เบšเบดเปˆเบ‡เบ„เบทเปเบ™เบงเปƒเบ”

เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบ™เบปเบ” bots "เบŠเบปเปˆเบงเบฎเป‰เบฒเบ" เบ—เบตเปˆเบกเบตเบ—เปˆเบฒเปเบฎเบ‡เปเบฅเบฐเบชเบฐเบเบฑเบ”เบžเบงเบเป€เบ‚เบปเบฒเป‚เบ”เบ IP
เบขเบนเปˆเป€เบ—เบดเบ‡เบชเบธเบ”เปเบกเปˆเบ™เป€เบงเบฑเบšเป„เบŠเบ—เปŒเปƒเบ™เบ„เปเบฒเบ–เบฒเบก, เบžเบฝเบ‡เปเบ•เปˆเบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เปเบกเปˆเบ™เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบญเบทเปˆเบ™เป†เบ—เบตเปˆเบกเบต cms เบ”เบฝเบงเบเบฑเบ™เปเบฅเบฐเบ›เบฐเบกเบฒเบ™เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ”เบฝเบงเบเบฑเบ™, เปเบ•เปˆเบชเป‰เบฒเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เบซเบ™เป‰เบญเบ.

ะะฝะฐะปะธะท

  • เบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบซเบผเบฒเบเบขเปˆเบฒเบ‡เป„เบ”เป‰เป€เบฎเบฑเบ”เบ”เป‰เบงเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™, เบเบฒเบ™เบชเบฑเบ‡เป€เบเบ”เบเบฒเบ™เป„เบ”เป‰เบ”เปเบฒเป€เบ™เบตเบ™เปƒเบ™เป„เบฅเบเบฐเบซเบผเบฒเบเบญเบฒเบ—เบดเบ” (เป‚เบŠเบเบ”เบต, เปƒเบ™เป€เบงเบฅเบฒเบ™เบตเป‰ hosting เบšเปเปˆเป€เบ„เบตเบเบ‚เบฝเบ™เบซเบฒเบ‚เป‰เบญเบเบงเปˆเบฒเบ‚เป‰เบญเบเบšเปเปˆเบ”เบตเปเบฅเบฐเบˆเบฐเบ–เบทเบเบ•เบฑเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ)
  • เบกเบตเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเปเบฅเบฐเบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเปเบšเบšเบชเบญเบšเบ–เบฒเบกเบ—เบตเปˆเบŠเป‰เบฒ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐเบ›เบฐเป€เบžเบ”เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบ
  • เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ, เบžเบงเบเป€เบฎเบปเบฒเบ•เบปเป‰เบ™เบ•เปเปƒเบŠเป‰ AWStats เบ—เบตเปˆเบกเบตเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ (เป‚เบ”เบเบงเบดเบ—เบตเบ—เบฒเบ‡เบเบฒเบ™, เบกเบฑเบ™เบŠเปˆเบงเบเบ„เบดเบ”เป„เบฅเปˆเบ—เบตเปˆเบขเบนเปˆ IP เบ—เบตเปˆเบฎเป‰เบฒเบเปเบฎเบ‡เบ—เบตเปˆเบชเบธเบ”เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบ›เบฐเบฅเบดเบกเบฒเบ™เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™.
  • Metric - metric เบชเบฐเบซเบ™เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบžเบฝเบ‡เปเบ•เปˆเบเปˆเบฝเบงเบเบฑเบšเบ„เบปเบ™, เบšเปเปˆเปเบกเปˆเบ™เบเปˆเบฝเบงเบเบฑเบš bots
  • เบกเบตเบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰ plugins เบชเปเบฒเบฅเบฑเบš WP เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบเบฑเปˆเบ™เบ•เบญเบ‡เปเบฅเบฐเบชเบฐเบเบฑเบ”เบœเบนเป‰เบกเบฒเบขเป‰เบฝเบกเบขเบฒเบกเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ›เบฐเป€เบ—เบ”เบ‚เบญเบ‡เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเปเบฅเบฐเบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ•เปˆเบฒเบ‡เป†
  • เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบฎเบธเบ™เปเบฎเบ‡เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบเบฒเบ™เบ›เบดเบ”เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบชเปเบฒเบฅเบฑเบšเบกเบทเป‰เบซเบ™เบถเปˆเบ‡เบ”เป‰เบงเบเบšเบฑเบ™เบ—เบถเบ "เบžเบงเบเป€เบฎเบปเบฒเบขเบนเปˆเบžเบฒเบเปƒเบ•เป‰เบเบฒเบ™เบšเปเบฒเบฅเบธเบ‡เบฎเบฑเบเบชเบฒ" - เบ™เบตเป‰เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเปƒเบŠเป‰ plugin เบ—เบตเปˆเบกเบตเบŠเบทเปˆเบชเบฝเบ‡. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบ„เบฒเบ”เบซเบงเบฑเบ‡เบงเปˆเบฒเบเบฒเบ™เป‚เบซเบผเบ”เบˆเบฐเบซเบผเบธเบ”เบฅเบปเบ‡, เปเบ•เปˆเบšเปเปˆเปเบกเปˆเบ™เบ„เปˆเบฒเบชเบนเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒเบญเบธเบ”เบปเบกเบเบฒเบ™ WP เปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆ hooks เปเบฅเบฐ plugins เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบดเบ”เบˆเบฐเบเปเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเป€เบกเบทเปˆเบญ "hook" เป€เบเบตเบ”เบ‚เบทเป‰เบ™, เปเบฅเบฐเบเปˆเบญเบ™เบ—เบตเปˆ "hook" เป€เบเบตเบ”เบ‚เบทเป‰เบ™, เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบเบฑเบšเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบชเบฒเบกเบฒเบ” เป€เบฎเบฑเบ”เปเบฅเป‰เบง

Idea

  1. เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบ—เบตเปˆเบขเบนเปˆ IP เบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบซเบผเบฒเบเปƒเบ™เป„เบฅเบเบฐเป€เบงเบฅเบฒเบชเบฑเป‰เบ™เป†.
  2. เบšเบฑเบ™เบ—เบถเบเบˆเปเบฒเบ™เบงเบ™ hits เบเบฑเบšเป€เบงเบฑเบšเป„เบŠเบ—เปŒ
  3. เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป€เบงเบฑเบšเป„เบŠเบ—เปŒเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบˆเปเบฒเบ™เบงเบ™ hits
  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 เบˆเบฐเบ–เบทเบเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™ (เบˆเปเบฒเบ™เบงเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเป„เบ›เบซเบฒเป€เบงเบฑเบšเป„เบŠเบ—เปŒ)

  • เบ”เบฝเบงเบ™เบตเป‰เบชเบดเปˆเบ‡เบ—เบตเปˆ เปœเป‰เบฒ เบขเป‰เบฒเบ™ ... เบ”เบฝเบงเบ™เบตเป‰เบžเบงเบเป€เบ‚เบปเบฒเบˆเบฐเป€เบœเบปเบฒเบ‚เป‰เบญเบ เบชเบณ เบฅเบฑเบšเบเบฒเบ™เบเบฐ เบ—เบณ เบ‚เบญเบ‡เบ‚เป‰เบญเบ :)
    เป€เบžเบทเปˆเบญเบšเบฑเบ™เบ—เบถเบเปเบ•เปˆเบฅเบฐเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเป„เบ›เบซเบฒเป€เบงเบฑเบšเป„เบŠเบ—เปŒ, เบžเบงเบเป€เบฎเบปเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบฅเบฐเบซเบฑเบ”เป„เบŸเบฅเปŒเบเบฑเบšเป„เบŸเบฅเปŒ WordPress เบ•เบปเป‰เบ™เบ•เป - wp-load.php . เปเบกเปˆเบ™เปเบฅเป‰เบง, เบžเบงเบเป€เบฎเบปเบฒเบ›เปˆเบฝเบ™เป„เบŸเบฅเปŒ kernel เปเบฅเบฐเบŠเบฑเบ”เป€เบˆเบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบ•เบปเบงเปเบ›เบ—เบปเปˆเบงเป‚เบฅเบ $wpdb เบกเบตเบขเบนเปˆเปเบฅเป‰เบง.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰เบงเปˆเบฒเบ™เบตเป‰เบซเบผเบทเบ—เบตเปˆเบขเบนเปˆ IP เบ–เบทเบเบซเบกเบฒเบเบขเบนเปˆเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบทเป‰เบญเบเป†เป€เบ—เบปเปˆเบฒเปƒเบ”เปเบฅเบฐเบ”เป‰เบงเบเบˆเบญเบเบเบฒเป€เบŸเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบšเบดเปˆเบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™เบ—เบธเบเป† 5 เบ™เบฒเบ—เบตเป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเปƒเบˆเบฎเบนเบšเบžเบฒเบš.

เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบ™เบปเบ” bots "เบŠเบปเปˆเบงเบฎเป‰เบฒเบ" เบ—เบตเปˆเบกเบตเบ—เปˆเบฒเปเบฎเบ‡เปเบฅเบฐเบชเบฐเบเบฑเบ”เบžเบงเบเป€เบ‚เบปเบฒเป‚เบ”เบ 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)));

เบฅเบฐเบซเบฑเบ”เป„เบŸเบฅเปŒเปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบเปเบฅเบฐ primitive เปเบฅเบฐเปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เบกเบฑเบ™เปเบกเปˆเบ™เบเบฒเบ™เป€เบญเบปเบฒเบœเบนเป‰เบชเบฐเบซเบกเบฑเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบฐเบเบฑเบ”เปเบฅเบฐเปƒเบชเปˆเบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เบชเบฐเบเบฑเบ”เปƒเบ™เป„เบŸเบฅเปŒ .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

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบฅเบฐเบซเบฑเบ”เบ™เบตเป‰เป€เบฅเบตเปˆเบกเป€เบฎเบฑเบ”เบงเบฝเบ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปƒเบ™เบเบฐเบ”เบฒเบ™เป‚เบฎเบ”เบ•เบดเป‰เบ‡:

เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบ™เบปเบ” bots "เบŠเบปเปˆเบงเบฎเป‰เบฒเบ" เบ—เบตเปˆเบกเบตเบ—เปˆเบฒเปเบฎเบ‡เปเบฅเบฐเบชเบฐเบเบฑเบ”เบžเบงเบเป€เบ‚เบปเบฒเป‚เบ”เบ IP

PS: เป€เบญเบเบฐเบชเบฒเบ™เปเบกเปˆเบ™เบ‚เบญเบ‡เบœเบนเป‰เบ‚เบฝเบ™, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ‚เป‰เบญเบเป„เบ”เป‰เป€เบœเบตเบเปเบœเปˆเบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ‚เบญเบ‡เบ‚เป‰เบญเบ, เบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฑเบšเบชเบฐเบšเบฑเบšเบ—เบตเปˆเบ‚เบฐเบซเบเบฒเบเบซเบผเบฒเบเบ‚เบถเป‰เบ™เปƒเบ™ Habre.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™