이 방법은 유닉스 계열 운영체제(예: Linux 또는 Mac)를 사용한다고 가정합니다. Windows를 사용하더라도 터미널에 복사/붙여넣기를 할 수 있다면 Discourse 서버에 ssh로 접속하여 이 내용을 붙여넣으면 됩니다.
이 스크립트는 제가 목격한 최근 공격에서 생성된 감시 단어(watched words) 집합을 생성하는 것입니다. nano 또는 유사한 편집기를 능숙하게 다룰 수 있다면 실행 전에 내용을 수정할 수 있습니다. 그렇지 않다면 이 스크립트를 실행한 후 원하지 않는 단어를 단어당 한 번의 클릭으로 삭제할 수 있습니다.
차단 단어(block words)는 해당 단어가 포함된 게시글을 합법적인 사용자가 작성하지 못하게 만들 수 있으므로 매우 번거로울 수 있습니다. 따라서 포럼의 합법적인 게시글에 그런 단어가 나올 가능성이 없는지 꼭 확인해 보세요!
아래 상자에 사이트 URL, API 키, API 사용자를 입력하세요 (이 정보는 브라우저에만 저장됩니다—그대로 붙여넣은 후 파일을 편집하는 것을 선호한다면 그렇게 하셔도 됩니다). 그런 다음 코드 블록을 터미널에 복사/붙여넣기하세요. upload_watched_words_full.sh 파일이 생성되고 실행 권한이 부여됩니다. 이후 ./upload_watched_words_full.sh 명령으로 실행할 수 있습니다.
cat <<'EOF' > upload_watched_words_full.sh
#!/usr/bin/env bash
# Usage: ./upload_watched_words_full.sh
DISCOURSE_URL="=URL="
API_KEY="=API_KEY="
API_USERNAME="=API_USERNAME="
# High-confidence block words
BLOCK_WORDS=(
"customer service number"
"contact number"
"support number"
"refund phone number"
"toll free"
"24/7 support"
"helpline"
"call us"
"live representative"
"technical support"
"lufthansa"
"royal caribbean"
"coinbase"
"robinhood"
"reservation number"
"booking number"
"flight cancellation"
"name change fee"
"║"
"⇆"
"★"
"®️"
"™️"
)
# Medium-risk flag words
FLAG_WORDS=(
"customer service"
"customer support"
"support team"
"help desk"
"hotline"
"agent"
"representative"
"contact us"
"phone support"
"service center"
)
# Require-approval words
REQUIRE_APPROVAL_WORDS=(
"urgent"
"immediate action"
"act now"
"limited time"
"exclusive offer"
"approve this"
"verify account"
)
# Function to send words in batch
add_words () {
local ACTION="$1"
shift
local WORDS=("$@")
# Build words[] parameters
local DATA=""
for w in "${WORDS[@]}"; do
DATA+="words%5B%5D=$(printf '%s' "$w" | jq -s -R -r @uri)&"
done
DATA+="replacement=&action_key=${ACTION}&case_sensitive=false&html=false"
echo "Uploading ${ACTION} words..."
curl -s -X POST "${DISCOURSE_URL}/admin/customize/watched_words.json" \
-H "Api-Key: ${API_KEY}" \
-H "Api-Username: ${API_USERNAME}" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data "$DATA"
echo -e "\nDone."
}
# Upload block words
add_words "block" "${BLOCK_WORDS[@]}"
# Upload flag words
add_words "flag" "${FLAG_WORDS[@]}"
# Upload require-approval words
add_words "require_approval" "${REQUIRE_APPROVAL_WORDS[@]}"
EOF
# Make the script executable
chmod +x upload_watched_words_full.sh
echo "Script 'upload_watched_words_full.sh' created and made executable."
그렇겠죠. 하지만 AI를 설정하는 데 비록 비용이 많이 들지는 않지만, 모든 Discourse에서 스팸을 막기 위해 AI를 설정해야 한다는 점은 다소 번거롭습니다. 제 포럼 중 많은 곳은 Discourse의 다른 유용한 AI 기능들과는 달리, AI를 필요로 하거나 원하지 않을 것입니다.
해결책은 게시물을 편집할 때 사이트의 보호 장치를 우회하지 못하도록 만드는 것입니다. 편집된 게시물에는 (우리가 이미 본 것처럼) 스팸, 혐오 표현, 또는 기타 바람직하지 않은 내용이 포함될 수 있습니다. 편집된 게시물이 감시 단어(Watched Words)나 기타 필터를 우회할 수 있다면, 이는 봇뿐 아니라 사이트의 보호 장치를 우회하려는 사용자들에게도 표준적인 방식으로 자리 잡게 될 것입니다.