Π“ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΡƒΠ²Π°ΠΌΠ΅ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΡ˜Π°Π»Π½ΠΈΡ‚Π΅ β€žΠ·Π»ΠΎΠ±Π½ΠΈβ€œ Π±ΠΎΡ‚ΠΎΠ²ΠΈ ΠΈ Π³ΠΈ Π±Π»ΠΎΠΊΠΈΡ€Π°ΠΌΠ΅ со IP

Π“ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΡƒΠ²Π°ΠΌΠ΅ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΡ˜Π°Π»Π½ΠΈΡ‚Π΅ β€žΠ·Π»ΠΎΠ±Π½ΠΈβ€œ Π±ΠΎΡ‚ΠΎΠ²ΠΈ ΠΈ Π³ΠΈ Π±Π»ΠΎΠΊΠΈΡ€Π°ΠΌΠ΅ со IP

Π”ΠΎΠ±Π°Ρ€ Π΄Π΅Π½! Π’ΠΎ написот ќС Π²ΠΈ ΠΊΠ°ΠΆΠ°ΠΌ ΠΊΠ°ΠΊΠΎ корисницитС Π½Π° Ρ€Π΅Π΄ΠΎΠ²Π½ΠΈΠΎΡ‚ хостинг ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° Ρ„Π°Ρ‚Π°Ρ‚ IP адрСси ΠΊΠΎΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π°Ρ‚ ΠΏΡ€Π΅ΠΊΡƒΠΌΠ΅Ρ€Π½ΠΎ ΠΎΠΏΡ‚ΠΎΠ²Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ Π½Π° страницата ΠΈ ΠΏΠΎΡ‚ΠΎΠ° Π΄Π° Π³ΠΈ Π±Π»ΠΎΠΊΠΈΡ€Π°Π°Ρ‚ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π°Π»Π°Ρ‚ΠΊΠΈ Π·Π° Ρ…ΠΎΡΡ‚ΠΈΡ€Π°ΡšΠ΅, ќС ΠΈΠΌΠ° β€žΠΌΠ°Π»ΠΊΡƒβ€œ php ΠΊΠΎΠ΄, Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ слики ΠΎΠ΄ Π΅ΠΊΡ€Π°Π½ΠΎΡ‚.

Π’Π»Π΅Π·Π½ΠΈ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ:

  1. Π’Π΅Π±-страница ΠΊΡ€Π΅ΠΈΡ€Π°Π½Π° Π½Π° CMS WordPress
  2. Π₯остинг Beget (ΠΎΠ²Π° Π½Π΅ Π΅ Ρ€Π΅ΠΊΠ»Π°ΠΌΠ°, Π½ΠΎ сликитС ΠΎΠ΄ Π΅ΠΊΡ€Π°Π½ΠΎΡ‚ Π½Π° административниот ΠΏΠ°Π½Π΅Π» ќС Π±ΠΈΠ΄Π°Ρ‚ ΠΎΠ΄ овој ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ хостинг ΠΏΡ€ΠΎΠ²Π°Ρ˜Π΄Π΅Ρ€)
  3. Π’Π΅Π±-страницата Π½Π° WordPress бСшС лансирана Π½Π΅ΠΊΠ°Π΄Π΅ Π½Π° ΠΏΠΎΡ‡Π΅Ρ‚ΠΎΠΊΠΎΡ‚ Π½Π° 2000 Π³ΠΎΠ΄ΠΈΠ½Π° ΠΈ ΠΈΠΌΠ° Π³ΠΎΠ»Π΅ΠΌ Π±Ρ€ΠΎΡ˜ написи ΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΡ˜Π°Π»ΠΈ
  4. PHP Π²Π΅Ρ€Π·ΠΈΡ˜Π° 7.2
  5. WP ја ΠΈΠΌΠ° Π½Π°Ρ˜Π½ΠΎΠ²Π°Ρ‚Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π°
  6. Π’Π΅ΡœΠ΅ Π½Π΅ΠΊΠΎΠ΅ Π²Ρ€Π΅ΠΌΠ΅, страницата ΠΏΠΎΡ‡Π½Π° Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Π³ΠΎΠ»Π΅ΠΌΠΎ ΠΎΠΏΡ‚ΠΎΠ²Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ Π½Π° MySQL спорСд ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ Π·Π° хостинг. БСкој Π΄Π΅Π½ ΠΎΠ²Π°Π° врСдност Π½Π°Π΄ΠΌΠΈΠ½ΡƒΠ²Π°ΡˆΠ΅ 120% ΠΎΠ΄ Π½ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΏΠΎ смСтка
  7. Π‘ΠΏΠΎΡ€Π΅Π΄ Yandex. Π‘Π°Ρ˜Ρ‚ΠΎΡ‚ Metrica Π³ΠΎ посСтуваат 100-200 Π»ΡƒΡ“Π΅ Π΄Π½Π΅Π²Π½ΠΎ

Како ΠΏΡ€Π²ΠΎ, ΠΎΠ²Π° бСшС Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΎ:

  1. Π’Π°Π±Π΅Π»ΠΈΡ‚Π΅ со Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π±Π΅Π° исчистСни ΠΎΠ΄ насобраното Ρ“ΡƒΠ±Ρ€Π΅
  2. НСпотрСбнитС Π΄ΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π±Π΅Π° ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ΠΈ, Π΄Π΅Π»ΠΎΠ²ΠΈΡ‚Π΅ Π½Π° застарСниот ΠΊΠΎΠ΄ Π±Π΅Π° отстранСти

Π’ΠΎ исто Π²Ρ€Π΅ΠΌΠ΅, Π±ΠΈ сакал Π΄Π° Π³ΠΎ ΠΏΡ€ΠΈΠ²Π»Π΅Ρ‡Π°ΠΌ Π²Π°ΡˆΠ΅Ρ‚ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ„Π°ΠΊΡ‚ΠΎΡ‚ Π΄Π΅ΠΊΠ° Π±Π΅Π° испробани ΠΎΠΏΡ†ΠΈΠΈΡ‚Π΅ Π·Π° ΠΊΠ΅ΡˆΠΈΡ€Π°ΡšΠ΅ (ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΡ†ΠΈ Π·Π° ΠΊΠ΅ΡˆΠΈΡ€Π°ΡšΠ΅), Π±Π΅Π° Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΈ Π½Π°Π±Ρ™ΡƒΠ΄ΡƒΠ²Π°ΡšΠ° - Π½ΠΎ ΠΎΠΏΡ‚ΠΎΠ²Π°Ρ€ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ ΠΎΠ΄ 120% ΠΎΠ΄ Π΅Π΄Π½Π° Π»ΠΎΠΊΠ°Ρ†ΠΈΡ˜Π° бСшС Π½Π΅ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Ρ‚ΠΎ ΠΈ моТСшС само Π΄Π° растС.

Како изглСдашС ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ½ΠΎΡ‚ΠΎ ΠΎΠΏΡ‚ΠΎΠ²Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π±Π°Π·ΠΈΡ‚Π΅ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π·Π° Ρ…ΠΎΡΡ‚ΠΈΡ€Π°ΡšΠ΅

Π“ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΡƒΠ²Π°ΠΌΠ΅ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΡ˜Π°Π»Π½ΠΈΡ‚Π΅ β€žΠ·Π»ΠΎΠ±Π½ΠΈβ€œ Π±ΠΎΡ‚ΠΎΠ²ΠΈ ΠΈ Π³ΠΈ Π±Π»ΠΎΠΊΠΈΡ€Π°ΠΌΠ΅ со IP
На Π²Ρ€Π²ΠΎΡ‚ Π΅ мСстото Π·Π° ΠΊΠΎΠ΅ станува Π·Π±ΠΎΡ€, вСднаш ΠΏΠΎΠ΄ΠΎΠ»Ρƒ сС Π΄Ρ€ΡƒΠ³ΠΈ ΡΠ°Ρ˜Ρ‚ΠΎΠ²ΠΈ ΠΊΠΎΠΈ ΠΈΠΌΠ°Π°Ρ‚ ист cms ΠΈ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ ист ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜, Π½ΠΎ создаваат ΠΏΠΎΠΌΠ°Π»ΠΊΡƒ ΠΎΠΏΡ‚ΠΎΠ²Π°Ρ€ΡƒΠ²Π°ΡšΠ΅.

Анализа

  • Π‘Π΅Π° Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΈ ΠΌΠ½ΠΎΠ³Ρƒ ΠΎΠ±ΠΈΠ΄ΠΈ со ΠΎΠΏΡ†ΠΈΠΈ Π·Π° ΠΊΠ΅ΡˆΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ, Π½Π°Π±Ρ™ΡƒΠ΄ΡƒΠ²Π°ΡšΠ°Ρ‚Π° Π±Π΅Π° ΠΈΠ·Π²Ρ€ΡˆΠ΅Π½ΠΈ Π²ΠΎ Ρ‚Π΅ΠΊΠΎΡ‚ Π½Π° Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ Π½Π΅Π΄Π΅Π»ΠΈ (Π·Π° ΡΡ€Π΅ΡœΠ°, Π·Π° ΠΎΠ²Π° Π²Ρ€Π΅ΠΌΠ΅ хостингот никогаш Π½Π΅ ΠΌΠΈ напиша Π΄Π΅ΠΊΠ° сум Ρ‚ΠΎΠ»ΠΊΡƒ лош ΠΈ Π΄Π΅ΠΊΠ° ќС Π±ΠΈΠ΄Π°ΠΌ исклучСн)
  • ИмашС Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ ΠΏΡ€Π΅Π±Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ Π·Π° Π±Π°Π²Π½ΠΈ ΠΏΡ€Π°ΡˆΠ°ΡšΠ°, ΠΏΠΎΡ‚ΠΎΠ° структурата Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΈ Ρ‚ΠΈΠΏΠΎΡ‚ Π½Π° Ρ‚Π°Π±Π΅Π»Π°Ρ‚Π° Π±Π΅Π° ΠΌΠ°Π»ΠΊΡƒ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Ρ‚ΠΈ
  • Π—Π° Π°Π½Π°Π»ΠΈΠ·Π°, првСнствСно Π³ΠΈ користСвмС Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈΡ‚Π΅ 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 ќС сС Π·Π³ΠΎΠ»Π΅ΠΌΠΈ (Π±Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° Π±Π°Ρ€Π°ΡšΠ° Π΄ΠΎ страницата)

  • Π‘Π΅Π³Π° ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎΡ‚ΠΎ... Π‘Π΅Π³Π° ќС ΠΌΠ΅ ΠΈΠ·Π³ΠΎΡ€Π°Ρ‚ Π·Π° ΠΌΠΎΠΈΡ‚Π΅ постапки :)
    Π—Π° Π΄Π° Π³ΠΎ снимимС сСкоС Π±Π°Ρ€Π°ΡšΠ΅ Π½Π° страницата, Π³ΠΎ ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π°ΠΌΠ΅ ΠΊΠΎΠ΄ΠΎΡ‚ Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° со Π³Π»Π°Π²Π½Π°Ρ‚Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° Π½Π° WordPress - 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 and # 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

П.Π‘.: ΠœΠ°Ρ‚Π΅Ρ€ΠΈΡ˜Π°Π»ΠΎΡ‚ Π΅ Π½Π° Π°Π²Ρ‚ΠΎΡ€ΠΎΡ‚, ΠΈΠ°ΠΊΠΎ Π΄Π΅Π» ΠΎΠ΄ Π½Π΅Π³ΠΎ објавив Π½Π° ΠΌΠΎΡ˜Π°Ρ‚Π° Π²Π΅Π±-страница, Π½Π° Π₯Π°Π±Ρ€Π΅ Π΄ΠΎΠ±ΠΈΠ² ΠΏΠΎΠΏΡ€ΠΎΡˆΠΈΡ€Π΅Π½Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π°.

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€