- Miasma는 AI 웹 스크레이퍼를 무한 루프에 빠뜨려 훈련 데이터 수집을 방해하는 Rust 기반 서버 도구
- 웹사이트 콘텐츠를 대규모로 수집하는 AI 기업의 트래픽을 리디렉션해, ‘poison fountain’에서 가져온 오염된 데이터와 자기참조 링크를 반환
- 빠른 처리 속도와 낮은 메모리 사용량으로 서버 자원 낭비 없이 방어 가능
- Nginx 리버스 프록시와 숨겨진 링크 삽입을 통해 스크레이퍼를 /bots 경로로 유도해 무한 순환 구조 형성
- 정상 검색엔진은 robots.txt 예외 규칙으로 보호하며, 오픈소스로 커뮤니티 기여를 허용함
설치 및 실행
-
Cargo를 이용해 설치 가능
- cargo install miasma 명령으로 설치
- GitHub Releases 페이지에서 미리 빌드된 바이너리 다운로드 가능
- 기본 설정으로 실행 시 miasma 명령만 입력
- 모든 설정 옵션은 miasma --help로 확인 가능
스크레이퍼 트랩 설정 방법
- /bots 경로를 스크레이퍼 유입 지점으로 설정
-
Nginx를 리버스 프록시로 사용해 /bots 경로의 요청을 Miasma 서버로 전달
location ~ ^/bots($|/.*)$ {
proxy_pass http://localhost:9855;
}
- /bots, /bots/, /bots/12345 등 모든 변형 경로를 매칭
-
숨겨진 링크 삽입
- 웹페이지 내에 인간 방문자에게는 보이지 않지만 스크레이퍼가 탐지할 수 있는 숨겨진 링크 추가 <a href="/bots" style="display: none;" aria-hidden="true" tabindex="1"> Amazing high quality data here! </a>
- display: none, aria-hidden="true", tabindex="1" 속성으로 접근성 도구와 사용자에게는 비노출
-
Miasma 실행
- /bots를 링크 접두사로 지정하고 포트와 동시 연결 제한 설정 miasma --link-prefix '/bots' -p 9855 -c 50
- 최대 50개의 동시 연결을 허용하며, 초과 요청은 HTTP 429 응답 반환
- 50개 연결 시 약 50~60MB 메모리 사용량 예상
-
배포 후 동작
- 설정 완료 후 배포하면 스크레이퍼는 /bots 경로를 따라 무한히 오염된 데이터 페이지를 순환
- 로그를 통해 스크레이퍼의 반복 요청을 실시간으로 확인 가능
robots.txt 설정
- 정상적인 검색엔진 크롤러가 Miasma에 접근하지 않도록 robots.txt에 예외 규칙 추가 필요 User-agent: Googlebot User-agent: Bingbot User-agent: DuckDuckBot User-agent: Slurp User-agent: SomeOtherNiceBot Disallow: /bots Allow: /
설정 옵션
- CLI 옵션을 통해 세부 설정 가능
| port | 9999 | 서버가 바인딩할 포트 |
| host | localhost | 서버가 바인딩할 호스트 주소 |
| max-in-flight | 500 | 동시에 처리 가능한 최대 요청 수. 초과 시 429 응답 반환. 메모리 사용량은 이 값에 비례 |
| link-prefix | / | 자기참조 링크의 접두사. 예: /bots |
| link-count | 5 | 각 응답 페이지에 포함할 자기참조 링크 수 |
| force-gzip | false | 클라이언트의 Accept-Encoding 헤더와 무관하게 항상 gzip 압축 적용. 전송 비용 절감에 유용 |
| poison-source | https://rnsaffn.com/poison2/ | 오염된 훈련 데이터를 가져올 프록시 소스 |
개발 및 기여
- 버그 리포트나 기능 제안은 GitHub Issues를 통해 제출 가능
- AI가 생성한 코드 기여는 자동으로 거부됨
- 커뮤니티 기여를 환영하며, 프로젝트는 오픈소스로 유지됨

3 days ago
5







English (US) ·