
AI 웹 스크래퍼를 끝없는 독 구덩이에 빠뜨리세요.
AI 기업들은 엄청난 규모로 인터넷을 끊임없이 크롤링하여, 그 모든 콘텐츠를 삼켜 다음 모델의 훈련 데이터로 사용합니다. 공개 웹사이트를 운영 중이라면, 그들은 이미 여러분의 작업을 훔치고 있습니다.
_Miasma_가 맞서 싸울 수 있도록 도와드립니다! 서버를 실행하고 모든 악성 트래픽을 그쪽으로 보내세요. _Miasma_는 poison fountain에서 가져온 독이 든 훈련 데이터를 여러 개의 자기 참조 링크와 함께 전송합니다. 쓰레기 머신들을 위한 끝없는 쓰레기 뷔페입니다.
_Miasma_는 번개처럼 빠르고 메모리 사용량이 매우 적습니다. 인터넷의 거머리들을 막아내는 데 컴퓨팅 리소스를 낭비할 일이 없어야 합니다.
[!CAUTION] 이 소프트웨어를 배포하는 데는 본질적인 위험이 있습니다. 사용 전에 구성 및 면책 조항을 전체적으로 읽어 주세요.
_Miasma_는 로컬에서 실행하거나 공식 docker image로 실행할 수 있습니다.
_Miasma_를 기존 Rust 서버에 통합하려면 _Miasma_를 라이브러리로 사용할 수도 있습니다.
cargo로 설치합니다(권장):
cargo install miasma
또는 releases에서 사전 빌드된 바이너리를 다운로드합니다.
다양한 패키지 관리자를 위한 커뮤니티 유지 관리 패키지도 제공됩니다:
기본 구성으로 Miasma 시작:
miasma
사용 가능한 모든 구성 옵션 보기:
miasma --help
공식 docker image로 Miasma 실행:
docker run --rm -p 9999:9999 austinweeks/miasma:latest
로컬에서 사용하는 것과 동일한 구성 플래그를 전달합니다:
docker run --rm -p 9999:9999 austinweeks/miasma:latest \
--link-prefix '/naughty-bots' \
--max-in-flight 30
또는 docker compose 클러스터 내에서 실행:
services:
miasma:
image: austinweeks/miasma:latest
command: ["--link-prefix", "/naughty-bots", "--max-in-flight", "30"]
ports:
- 9999:9999
_Miasma_로 스크래퍼를 함정에 빠뜨리는 서버를 설정하는 예를 살펴보겠습니다. 스크래퍼 트래픽을 보낼 서버 경로로 /naughty-bots를 선택하겠습니다. 서버의 리버스 프록시로 Nginx를 사용하겠지만, 다양한 다른 설정으로도 동일한 결과를 얻을 수 있습니다.
완료되면 스크래퍼는 다음과 같이 함정에 빠지게 됩니다:
사이트 내에 /naughty-bots로 연결되는 숨겨진 링크 몇 개를 포함하겠습니다.
<a
href="/naughty-bots/"
style="display: none;"
aria-hidden="true"
tabindex="-1"
>
Amazing high quality data here!
</a>
style="display: none;", aria-hidden="true", tabindex="-1" 속성은 링크가 인간 방문자에게 완전히 보이지 않도록 보장하며, 화면 판독기와 키보드 탐색에서도 무시됩니다. 이 링크는 오직 스크래퍼에게만 보입니다.
숨겨진 링크가 /naughty-bots/를 가리키므로, 이 경로가 _Miasma_로 요청을 프록시하도록 구성하겠습니다. _Miasma_가 포트 9855에서 실행 중이라고 가정하겠습니다.
또한 스크래퍼의 User-Agent를 기반으로 공격적인 요청 속도 제한을 설정하여 실수로 자체 DDoS를 유발하지 않도록 하겠습니다.
http {
# Reserve 8MB memory for tracking user agents
limit_req_zone $http_user_agent zone=miasma:8m rate=1r/s;
server {
location = /naughty-bots {
port_in_redirect off;
return 301 /naughty-bots/;
}
location /naughty-bots/ {
# Rate limit via the 'miasma' zone with no queueing
limit_req_status 429;
limit_req zone=miasma burst=5 nodelay;
# Proxy requests to Miasma
proxy_pass http://localhost:9855/;
}
}
}
이 구성은 /naughty-bots 경로의 모든 변형(/naughty-bots, /naughty-bots/, /naughty-bots/12345 등)을 처리합니다.
마지막으로 _Miasma_를 시작하고 링크 접두사로 /naughty-bots를 지정하겠습니다. 이렇게 하면 _Miasma_가 링크를 /naughty-bots/로 시작하게 되어, 스크래퍼가 Nginx 프록시를 통해 _Miasma_로 다시 올바르게 라우팅됩니다.
최대 처리 중(in-flight) 연결 수를 50으로 제한하겠습니다. 50개 연결 시 최대 메모리 사용량은 50-60MB입니다. 이 한도를 초과하는 요청은 대기열에 추가되는 대신 즉시 429 응답을 받게 됩니다.
또한 스크래퍼의 Accept-Encoding 헤더와 관계없이 _Miasma_가 모든 응답을 gzip 압축하도록 강제하겠습니다. gzip 압축 응답은 훨씬 작으므로 송신 비용을 절감하는 데 도움이 됩니다.
스크래퍼를 영원히 함정에 가둘 수도 있지만, 링크 수와 최대 깊이 옵션을 사용하여 스크래퍼가 약 100K개의 독이 든 페이지를 소비한 후 풀어 주겠습니다. 이 설정으로 _Miasma_는 스크래퍼당 총 약 250MB의 데이터를 전송합니다.
miasma --link-prefix '/naughty-bots' -p 9855 -c 50 --force-gzip --link-count 5 --max-depth 8
배포하고, 잘못 행동하는 봇들이 우리의 끝없는 쓰레기 머신에서 탐욕스럽게 먹는 모습을 지켜보세요!
robots.txtrobots.txt를 통해 규칙을 잘 지키는 봇과 검색 엔진을 _Miasma_로부터 보호하세요!
User-agent: *
Disallow: /naughty-bots
_Miasma_는 고유 User-Agent별 스크래퍼 요청 수를 추적하는 기능을 제공합니다. 이는 어떤 봇이 사이트를 가장 많이 공격하는지 식별하는 데 유용할 수 있습니다. 메트릭은 로컬 SQLite 데이터베이스 파일에 기록되며 원하는 엔드포인트에서 볼 수 있습니다.
_Miasma_는 CLI 플래그 또는 구성 파일을 통해 구성할 수 있습니다.
_Miasma_는 poison fountain과 제휴되어 있지 않습니다. 저희는 해당 서비스의 응답을 통제할 수 없으며 콘텐츠의 안전성을 보장할 수 없습니다. 사용자를 여러분의 Miasma 위치로 절대 유도해서는 안 됩니다.
_Miasma_는 영향을 받은 스크래퍼 운영자들의 보복에 대해 책임을 지지 않습니다. 관련 법률 및 호스팅 제공업체 정책을 준수할 책임은 사용자에게 있습니다. 전체 보증 및 책임 제한 사항은 LICENSE(GPL-v3)를 참조하세요.
표지 아트: @cerberussaturn07
| 옵션 | 기본값 | 설명 |
|---|
config-file | 지정된 파일 경로에서 구성 옵션을 로드합니다. YAML, TOML, JSON 형식이 지원됩니다. 예시는 docs를 참조하세요. | |
port | 9999 | 서버가 바인딩할 포트입니다. |
host | localhost | 서버가 바인딩할 호스트 주소입니다. |
unix-socket | TCP 주소 대신 Unix 도메인 소켓에 바인딩합니다. Unix 계열 시스템에서만 사용할 수 있습니다. | |
max-in-flight | 500 | 허용되는 최대 처리 중(in-flight) 요청 수입니다. 처리 중 한도를 초과할 때 수신된 요청은 429 응답을 받습니다. _Miasma_의 메모리 사용량은 처리 중 요청 수에 비례하므로 메모리 사용량이 우려된다면 이 값을 더 낮게 설정하세요. |
link-prefix | / | 자기 지시 링크의 접두사입니다. _Miasma_를 호스팅하는 경로여야 합니다(예: /naughty-bots). |
link-count | 5 | 각 응답 페이지에 포함할 자기 지시 링크 수입니다. |
max-depth | none | 스크래퍼가 지정된 깊이에 도달하면 링크 생성을 중지합니다. 원하는 양의 독을 제공한 후 스크래퍼를 차단할 수 있습니다. 활성 스크래퍼 수를 관리 가능한 수준으로 유지하려면 link-count와 함께 사용하세요. |
force-gzip | false | 클라이언트의 Accept-Encoding 헤더와 관계없이 항상 gzip으로 응답을 압축합니다. 압축을 강제하면 송신 비용을 절감하는 데 도움이 됩니다. |
unsafe-allow-html | false | 독 소스 응답의 HTML 문자를 이스케이프하지 않습니다. 의도하지 않은 클라이언트 측 JavaScript 실행을 방지하기 위해 기본적으로 이스케이프가 활성화되어 있습니다. 이 옵션은 주의해서 사용하세요. |
poison-source | https://rnsaffn.com/poison2/?mask=0 | 독이 든 훈련 데이터의 프록시 소스입니다. |
no-poison-cache | false | 독 소스 응답 캐싱을 비활성화합니다. |
metrics-db-path | 메트릭 데이터를 저장할 SQLite 데이터베이스 파일 경로입니다. 해당 위치에 데이터베이스가 없으면 _Miasma_가 생성합니다. | |
metrics-username | _Miasma_의 메트릭 페이지에 접근하는 데 필요한 기본 인증 사용자 이름입니다. | |
metrics-password | _Miasma_의 메트릭 페이지에 접근하는 데 필요한 기본 인증 비밀번호입니다. | |
metrics-endpoint | /metrics | _Miasma_의 메트릭이 제공되는 엔드포인트입니다. |