이 상황은 꽤 불행합니다. 검색 기능이 모든 사용자에게 제공되어야 한다고 믿지만, 이 봇으로 인해 얼마나 큰 혼란이 발생하고 있는지 공감할 수 있습니다. 또한, 사용자가 특정 지역에서 온 것으로 확인되는 경우, 위에 언급된 지오토킹(geo-blocking) 제안은 1차 방어선으로 매우 유용하다고 생각합니다.
처음에는 search_allowed_groups를 고려해 보았지만, allow_anonymous_search(기본값 true)가 더 나을 것 같습니다. 그룹 기반 기능을 구현하면 search에 의존하는 일부 내부 기능이 지나치게 복잡해집니다.
위와 같이 allow_anonymous_search가 비활성화되면, 모든 검색 기능(API/UI)이 비로그인 사용자에게 허용되지 않습니다. 사이트 설정 설명에도 이를 명시합니다.
고민이 되었던 점은, 이 PR과 사이트 설정의 이유가 괴롭힘(griefing) 때문이긴 하지만, allow_anonymous_search가 비활성화되었을 때 검색 텍스트 상자(작동하지 않는)를 여전히 표시하여 사용자가 가입/로그인하도록 유도해야 하는지 여부입니다. 그러나 이것이 이 PR의 병합을 막아야 한다고 생각하지는 않습니다.
아직 /search 범위로 한정된 이 특정 요청에 다른 기능을 혼합하지 않는 것이 좋겠습니다.