Комментарии 8
Для определения страны по IP я взял сервис 2ip.io – старый, стабильный
А нет ли специальных оффлайн баз? Хоть в CSV, хоть в SQLite. Один запрос и … всё.
Тут даже точность (с городами) ведь не важна.
Если есть, то это даже лучше, от стороннего API не зависим, получаем безлимитное количество проверок.
И, скажем, раз в неделю / месяц эту базу обновляем.
Оффлайновые базы есть, и, в целом, они бесплатные но есть два нюанса:
1. Они редко обновляются. А в идеале апдейт должен быть раз в несколько дней.
2. Для того же MaxMind нужна отдельная библиотека для чтения их бинарника, а ее на большинстве shared-хостингов нет.
3. Есть территориальные нюансы.
У меня есть планы разработке связки нескольких платных баз и переключения апи на нее в последующем. Она должна быть более точной и, вероятнее всего, стоимость запросов можно будет сократить в 2-3 раза.
Путь с geo блокировкой и проверкой UA как основной способ борьбы со спамом изначально провальный, отсечет конечно low tier спамеров, но тех кто на хостингах (ну и конечно residential proxy) из разрешенного списка - даже не моргнут, про UA даже говорить нечего - все мимикрируют под браузерные ua.
Для полного избавления от спама в комментариях на wp достаточно Antispam Bee.
Для того же MaxMind нужна отдельная библиотека для чтения их бинарника, а ее на большинстве shared-хостингов нет.
Ну это не проблема, все популярные плагины (включая Woocommerce) используют php библиотеки для чтения MaxMind файлов.
Привязка только к 2ip.io без fallback к локальной гео базе выглядит шатко.
без убогой капчи, скрытых полей в формах и прочих костылей
Вот именно на этих "костылях" и работают популярные решения для борьбы со спамом, и в отличии с гео/ua блокировками это на порядок эффективнее. Honeypot поля и timing проверки не костыли, а ловушки основанные на поведенческой разнице между человеком и ботом.
Если трафик из условно разрешенного списка, то там и не всегда спасал claudflare и скрытые поля. Например та же вдсина и битерика, там только блочить по ASN.
По комментариям да, а еще проще перекрыть wp-comments-post полностью если функционал не используется.
По 2ip да, это быстрое и уверенное решение для старта. Если упадет 2ip, то трафик прошедший по остальным правилам и отсутствующий в кеше будет пропущен через геоблок. В будущем гео я проработаю.
Капча, скрытые поля и т.д., возвращаясь к главному – мое решение под обывателя, зашел сделал пару кликов и отсек основную массу шлака без потерь реального трафика и без привлечения разработчиков.
Собственно и потенциальная аудитория плагина – те, кто хочет сэкономить. А если есть деньги, решений борьбы со спамом валом, вопрос толщины кошелька и фантазии разрботчика)

Спам на WordPress: от Cloudflare до собственного плагина геоблокировки