เจ…เจธเฉ€เจ‚ เจธเฉฐเจญเจพเจตเฉ€ "เจฌเจฆเฉ€" เจฌเฉ‹เจŸเจพเจ‚ เจฆเฉ€ เจชเจ›เจพเจฃ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ IP เจฆเฉเจ†เจฐเจพ เจฌเจฒเฉŒเจ• เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚

เจ…เจธเฉ€เจ‚ เจธเฉฐเจญเจพเจตเฉ€ "เจฌเจฆเฉ€" เจฌเฉ‹เจŸเจพเจ‚ เจฆเฉ€ เจชเจ›เจพเจฃ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ IP เจฆเฉเจ†เจฐเจพ เจฌเจฒเฉŒเจ• เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚

เจšเฉฐเจ—เจพ เจฆเจฟเจจ! เจฒเฉ‡เจ– เจตเจฟเจš เจฎเฉˆเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฆเฉฑเจธเจพเจ‚เจ—เจพ เจ•เจฟ เจจเจฟเจฏเจฎเจค เจนเฉ‹เจธเจŸเจฟเฉฐเจ— เจฆเฉ‡ เจ‰เจชเจญเฉ‹เจ—เจคเจพ IP เจเจกเจฐเฉˆเฉฑเจธ เจ•เจฟเจตเฉ‡เจ‚ เจซเฉœ เจธเจ•เจฆเฉ‡ เจนเจจ เจœเฉ‹ เจธเจพเจˆเจŸ 'เจคเฉ‡ เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจฒเฉ‹เจก เจชเฉˆเจฆเจพ เจ•เจฐเจฆเฉ‡ เจนเจจ เจ…เจคเฉ‡ เจซเจฟเจฐ เจ‰เจจเฉเจนเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉ‹เจธเจŸเจฟเฉฐเจ— เจŸเฉ‚เจฒเจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจฌเจฒเฉŒเจ• เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจจ, php เจ•เฉ‹เจก เจฆเจพ "เจฅเฉ‹เฉœเจพ เจœเจฟเจนเจพ" เจนเฉ‹เจตเฉ‡เจ—เจพ, เจ•เฉเจ เจธเจ•เฉเจฐเฉ€เจจเจธเจผเฉŒเจŸเจธ.

เจ‡เจจเจชเฉเจŸ เจกเฉ‡เจŸเจพ:

  1. CMS เจตเจฐเจกเจชเจฐเฉˆเจธ 'เจคเฉ‡ เจฌเจฃเจพเจˆ เจ—เจˆ เจตเฉˆเฉฑเจฌเจธเจพเจˆเจŸ
  2. เจนเฉ‹เจธเจŸเจฟเฉฐเจ— เจฌเฉ‡เจ—เฉ‡เจŸ (เจ‡เจน เจ•เฉ‹เจˆ เจ‡เจธเจผเจคเจฟเจนเจพเจฐ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจชเจฐ เจเจกเจฎเจฟเจจ เจชเฉˆเจจเจฒ เจฆเฉ‡ เจธเจ•เฉเจฐเฉ€เจจเจธเจผเจพเจŸ เจ‡เจธ เจ–เจพเจธ เจนเฉ‹เจธเจŸเจฟเฉฐเจ— เจชเฉเจฐเจฆเจพเจคเจพ เจคเฉ‹เจ‚ เจนเฉ‹เจฃเจ—เฉ‡)
  3. เจตเจฐเจกเจชเจฐเฉˆเจธ เจธเจพเจˆเจŸ เจจเฉ‚เฉฐ 2000 เจฆเฉ‡ เจธเจผเฉเจฐเฉ‚ เจตเจฟเฉฑเจš เจ•เจฟเจคเฉ‡ เจฒเจพเจ‚เจš เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€ เจ…เจคเฉ‡ เจ‡เจธ เจตเจฟเฉฑเจš เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจฒเฉ‡เจ– เจ…เจคเฉ‡ เจธเจฎเฉฑเจ—เจฐเฉ€ เจนเจจ
  4. PHP เจธเฉฐเจธเจ•เจฐเจฃ 7.2
  5. WP เจฆเจพ เจจเจตเฉ€เจจเจคเจฎ เจธเฉฐเจธเจ•เจฐเจฃ เจนเฉˆ
  6. เจนเฉเจฃ เจ•เฉเจ เจธเจฎเฉ‡เจ‚ เจฒเจˆ, เจธเจพเจˆเจŸ เจจเฉ‡ เจนเฉ‹เจธเจŸเจฟเฉฐเจ— เจกเฉ‡เจŸเจพ เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ MySQL 'เจคเฉ‡ เจ‡เฉฑเจ• เจ‰เฉฑเจš เจฒเฉ‹เจก เจชเฉˆเจฆเจพ เจ•เจฐเจจเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจฆเจฟเฉฑเจคเจพ เจนเฉˆ. เจนเจฐ เจฆเจฟเจจ เจ‡เจน เจฎเฉเฉฑเจฒ เจชเฉเจฐเจคเฉ€ เจ–เจพเจคเฉ‡ เจฆเฉ‡ เจ†เจฆเจฐเจธเจผ เจฆเฉ‡ 120% เจคเฉ‹เจ‚ เจตเฉฑเจง เจ—เจฟเจ†
  7. Yandex เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ. เจฎเฉ€เจŸเฉเจฐเจฟเจ•เจพ เจธเจพเจˆเจŸ เจชเฉเจฐเจคเฉ€ เจฆเจฟเจจ 100-200 เจฒเฉ‹เจ•เจพเจ‚ เจฆเฉเจ†เจฐเจพ เจตเจฟเจœเจผเจฟเจŸ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ

เจธเจญ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจ‡เจน เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€:

  1. เจกเจพเจŸเจพเจฌเฉ‡เจธ เจŸเฉ‡เจฌเจฒ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เฉ‚เฉœเจพ เจธเจพเจซเจผ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€
  2. เจฌเฉ‡เจฒเฉ‹เฉœเฉ‡ เจชเจฒเฉฑเจ—เจ‡เจจ เจ…เจธเจฎเจฐเฉฑเจฅ เจ•เฉ€เจคเฉ‡ เจ—เจ เจธเจจ, เจชเฉเจฐเจพเจฃเฉ‡ เจ•เฉ‹เจก เจฆเฉ‡ เจญเจพเจ—เจพเจ‚ เจจเฉ‚เฉฐ เจนเจŸเจพ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจธเฉ€

เจ‰เจธเฉ‡ เจธเจฎเฉ‡เจ‚, เจฎเฉˆเจ‚ เจ‡เจธ เจคเฉฑเจฅ เจตเฉฑเจฒ เจคเฉเจนเจพเจกเจพ เจงเจฟเจ†เจจ เจ–เจฟเฉฑเจšเจฃเจพ เจšเจพเจนเจพเจ‚เจ—เจพ เจ•เจฟ เจ•เฉˆเจšเจฟเฉฐเจ— เจตเจฟเจ•เจฒเจช (เจ•เฉˆเจšเจฟเฉฐเจ— เจชเจฒเฉฑเจ—เจ‡เจจ) เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจธเฉ€, เจจเจฟเจฐเฉ€เจ–เจฃ เจ•เฉ€เจคเฉ‡ เจ—เจ เจธเจจ - เจชเจฐ เจ‡เฉฑเจ• เจธเจพเจˆเจŸ เจคเฉ‹เจ‚ 120% เจฆเจพ เจฒเฉ‹เจก เจฌเจฆเจฒเจฟเจ† เจจเจนเฉ€เจ‚ เจธเฉ€ เจ…เจคเฉ‡ เจธเจฟเจฐเจซ เจตเจง เจธเจ•เจฆเจพ เจธเฉ€.

เจนเฉ‹เจธเจŸเจฟเฉฐเจ— เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ 'เจคเฉ‡ เจ…เฉฐเจฆเจพเจœเจผเจจ เจฒเฉ‹เจก เจ•เจฟเจนเฉ‹ เจœเจฟเจนเจพ เจฒเฉฑเจ—เจฆเจพ เจธเฉ€

เจ…เจธเฉ€เจ‚ เจธเฉฐเจญเจพเจตเฉ€ "เจฌเจฆเฉ€" เจฌเฉ‹เจŸเจพเจ‚ เจฆเฉ€ เจชเจ›เจพเจฃ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ IP เจฆเฉเจ†เจฐเจพ เจฌเจฒเฉŒเจ• เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚
เจธเจฟเจ–เจฐ 'เจคเฉ‡ เจธเจตเจพเจฒ เจตเจฟเฉฑเจš เจธเจพเจˆเจŸ เจนเฉˆ, เจฌเจฟเจฒเจ•เฉเจฒ เจนเฉ‡เจ เจพเจ‚ เจนเฉ‹เจฐ เจธเจพเจˆเจŸเจพเจ‚ เจนเจจ เจœเจฟเจจเฉเจนเจพเจ‚ เจ•เฉ‹เจฒ เจ‡เฉฑเจ•เฉ‹ เจœเจฟเจนเฉ‡ cm เจ…เจคเฉ‡ เจฒเจ—เจญเจ— เจ‡เฉฑเจ•เฉ‹ เจŸเฉเจฐเฉˆเจซเจฟเจ• เจนเจจ, เจชเจฐ เจ˜เฉฑเจŸ เจฒเฉ‹เจก เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจจเฅค

เจเจจเจพเจฒเจœเจผ

  • เจกเฉ‡เจŸเจพ เจ•เฉˆเจšเจฟเฉฐเจ— เจตเจฟเจ•เจฒเจชเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจ•เฉ‹เจธเจผเจฟเจธเจผเจพเจ‚ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจธเจจ, เจ•เจˆ เจนเจซเจผเจคเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจจเจฟเจฐเฉ€เจ–เจฃ เจ•เฉ€เจคเฉ‡ เจ—เจ เจธเจจ (เจ–เฉเจธเจผเจ•เจฟเจธเจฎเจคเฉ€ เจจเจพเจฒ, เจ‡เจธ เจธเจฎเฉ‡เจ‚ เจฆเฉŒเจฐเจพเจจ เจนเฉ‹เจธเจŸเจฟเฉฐเจ— เจจเฉ‡ เจฎเฉˆเจจเฉ‚เฉฐ เจ•เจฆเฉ‡ เจจเจนเฉ€เจ‚ เจฒเจฟเจ–เจฟเจ† เจ•เจฟ เจฎเฉˆเจ‚ เจ‡เฉฐเจจเจพ เจฌเฉเจฐเจพ เจธเฉ€ เจ…เจคเฉ‡ เจกเจฟเจธเจ•เจจเฉˆเจ•เจŸ เจนเฉ‹ เจœเจพเจตเฉ‡เจ—เจพ)
  • เจนเฉŒเจฒเฉ€ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฒเจˆ เจ‡เฉฑเจ• เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ…เจคเฉ‡ เจ–เฉ‹เจœ เจธเฉ€, เจซเจฟเจฐ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฌเจฃเจคเจฐ เจ…เจคเฉ‡ เจธเจพเจฐเจฃเฉ€ เจฆเฉ€ เจ•เจฟเจธเจฎ เจจเฉ‚เฉฐ เจฅเฉ‹เฉœเฉเจนเจพ เจฌเจฆเจฒเจฟเจ† เจ—เจฟเจ† เจธเฉ€
  • เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจฎเฉเฉฑเจ– เจคเฉŒเจฐ 'เจคเฉ‡ เจฌเจฟเจฒเจŸ-เจ‡เจจ AWStats เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจคเฉ€ (เจ‰เจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚, เจ‡เจธเจจเฉ‡ เจŸเฉเจฐเฉˆเจซเจฟเจ• เจตเจพเจฒเฉ€เจ…เจฎ เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡ เจธเจญ เจคเฉ‹เจ‚ เจฎเจพเฉœเฉ‡ IP เจชเจคเฉ‡ เจฆเฉ€ เจ—เจฃเจจเจพ เจ•เจฐเจจ เจตเจฟเฉฑเจš เจฎเจฆเจฆ เจ•เฉ€เจคเฉ€
  • เจฎเฉˆเจŸเฉเจฐเจฟเจ• - เจฎเฉˆเจŸเฉเจฐเจฟเจ• เจธเจฟเจฐเจซ เจฒเฉ‹เจ•เจพเจ‚ เจฌเจพเจฐเฉ‡ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆ, เจฌเฉ‹เจŸเจพเจ‚ เจฌเจพเจฐเฉ‡ เจจเจนเฉ€เจ‚
  • WP เจฒเจˆ เจชเจฒเฉฑเจ—เจ‡เจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€เจ†เจ‚ เจ•เฉ‹เจธเจผเจฟเจธเจผเจพเจ‚ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจนเจจ เจœเฉ‹ เจธเจฅเจพเจจ เจฆเฉ‡ เจฆเฉ‡เจธเจผ เจ…เจคเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– เจธเฉฐเจœเฉ‹เจ—เจพเจ‚ เจฆเฉเจ†เจฐเจพ เจตเจฟเจœเจผเจฟเจŸเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจซเจฟเจฒเจŸเจฐ เจ…เจคเฉ‡ เจฌเจฒเจพเจ• เจ•เจฐ เจธเจ•เจฆเฉ€เจ†เจ‚ เจนเจจ
  • "เจ…เจธเฉ€เจ‚ เจฆเฉ‡เจ–เจญเจพเจฒ เจ…เจงเฉ€เจจ เจนเจพเจ‚" เจจเฉ‹เจŸ เจฆเฉ‡ เจจเจพเจฒ เจธเจพเจˆเจŸ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฆเจฟเจจ เจฒเจˆ เจฌเฉฐเจฆ เจ•เจฐเจจ เจฆเจพ เจ‡เฉฑเจ• เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจจเจพเจฒ เจ•เฉฑเจŸเฉœเจชเฉฐเจฅเฉ€ เจคเจฐเฉ€เจ•เจพ เจจเจฟเจ•เจฒเจฟเจ† - เจ‡เจน เจฎเจธเจผเจนเฉ‚เจฐ เจชเจฒเฉฑเจ—เจ‡เจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจตเฉ€ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€เฅค เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจฒเฉ‹เจก เจฆเฉ‡ เจ˜เจŸเจฃ เจฆเฉ€ เจ‰เจฎเฉ€เจฆ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจชเจฐ เจœเจผเฉ€เจฐเฉ‹ เจฎเฉเฉฑเจฒเจพเจ‚ เจคเฉฑเจ• เจจเจนเฉ€เจ‚, เจ•เจฟเจ‰เจ‚เจ•เจฟ WP เจตเจฟเจšเจพเจฐเจงเจพเจฐเจพ เจนเฉเฉฑเจ•เจพเจ‚ 'เจคเฉ‡ เจ…เจงเจพเจฐเจค เจนเฉˆ เจ…เจคเฉ‡ เจชเจฒเฉฑเจ—เจ‡เจจ เจ†เจชเจฃเฉ€ เจ—เจคเฉ€เจตเจฟเจงเฉ€ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเฉ‡ เจนเจจ เจœเจฆเฉ‹เจ‚ เจ‡เฉฑเจ• "เจนเฉเฉฑเจ•" เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ "เจนเฉเฉฑเจ•" เจนเฉ‹เจฃ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเฉ‚เฉฐ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจฌเจฃเจพเจ‡เจ† เจœเจพเจตเฉ‡

เจ†เจˆเจกเฉ€เจ†

  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 เจฆเฉเจ†เจฐเจพ เจฌเจฒเฉŒเจ• เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚

PS: เจธเจฎเฉฑเจ—เจฐเฉ€ เจฒเฉ‡เจ–เจ• เจฆเฉ€ เจนเฉˆ, เจนเจพเจฒเจพเจ‚เจ•เจฟ เจฎเฉˆเจ‚ เจ‡เจธ เจฆเจพ เจ•เฉเจ เจนเจฟเฉฑเจธเจพ เจ†เจชเจฃเฉ€ เจตเฉˆเจฌเจธเจพเจˆเจŸ 'เจคเฉ‡ เจชเฉเจฐเจ•เจพเจธเจผเจค เจ•เฉ€เจคเจพ เจนเฉˆ, เจฎเฉˆเจจเฉ‚เฉฐ เจนเฉˆเจฌเจฐเฉ‡ 'เจคเฉ‡ เจตเจงเฉ‡เจฐเฉ‡ เจตเจฟเจธเจคเฉเจฐเจฟเจค เจธเฉฐเจธเจ•เจฐเจฃ เจฎเจฟเจฒเจฟเจ† เจนเฉˆเฅค

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹