botprotection draft
¶
웹 크롤러 등의 로봇을 통한 HTTP 요청을 제어한다.
/usr/local/m2/setting.json
다음 영역에 대해 기술한다.
{
"functions": {
"contents": {
"botprotection": {
"meta": {
"enable": true,
"OverridingCmd": false
},
"detect": {
"robotsTxt": {
"enable": true
},
"ip": {
"enable": true
},
"userAgent": {
"enable": true
},
"js": {
"enable": true,
"category" {
...
}
}
},
"flows": {
"matchingList": [
"name": "basic",
"path": "/",
"action": {
"lv2": {"code": 403},
"lv5": {"location": "/captcha?redirect=$URL"},
"lv7": {"location": "/home"}
}
]
}
}
}
}
}
How to use¶
Important
이 함수는 바이패스 함수이므로, 캐싱엔진을 경유하지 않는다.
명령어 리스트¶
명령어 |
파라미터 |
동작 |
---|---|---|
|
(하위설정) |
detect 실행 |
|
(하위설정) |
flows 실행 |
Important
이 함수는 프로덕션 환경에서 명령어 사용을 금지한다.
클라이언트에서 명령어 사용시, 보안 우회로가 만들어질 수 있으므로 아래 설정토록 한다.
meta.OverridingCmd: false
meta¶
"meta" : {
"enable" : false,
"OverridingCmd" : false
}
enable (기본: false)
Bot Protection 활성화
OverridingCmd (기본: false)
명령어에 의한 설정 오버라이딩 활성화
프로덕션 환경에서는 사용하지 않는다.
detect¶
"detect": {
"robotsTxt": {
"enable": true
},
"ip": {
"enable": true,
"disallows": [],
"allows": []
},
"userAgent": {
"enable": true,
"disallows": [],
"allows": []
},
"js": {
"enable": true,
"category": {
"headless": true,
"graphics": true,
"audio": true,
"locale": true,
"extention": true,
"cookie": true,
"input": true,
"system": true
}
}
}
robotsTxt¶
enable (기본: false)
robots.txt
에 허가되지 않은 (Disallow 명시된) 요청을 차단한다. 처리 방법은 flows 에 따른다.갱신 주기는 원본의
Cache-Control
에 따른다. (기본값:max-age=86400
)
ip¶
허가되지 않은 IP의 요청을 차단한다.
enable (기본: false)
IP 탐지 기능 활성화
disallows (기본: null)
IP 차단 목록
allows (기본: null)
IP 허용 목록
userAgent¶
허가되지 않은 클라이언트 요청을 차단한다.
enable (기본: false)
User-Agent
를 활용한 bot 탐지 기능 활성화disallows (기본: null)
User-Agent
차단 키워드 목록allows (기본: null)
User-Agent
허용 키워드 목록
Note
설정에 명기한
disallows
또는allows
항목을 DB 보다 우선순위가 높다.disallows
설정은allows
보다 우선순위가 높다.
js¶
클라이언트 브라우저 환경을 통해 로봇을 감지한다.
이를 위해 다음의 <script>
가 삽입된다.
<script src="https://{서비스도메인}/botprotection/fe/dd69345f-91a1-442f-b522-caddfb67c1dd.js/proxy/src/cache" type="text/javascript" charset="utf-8"></script>
enable (기본: false)
브라우저 정보를 활용한 로봇 탐지 기능 활성화
category
headless (기본: true)
puppeteer와 같은 headless 브라우저 탐지graphics (기본: true)
브라우저의 렌더링 정보를 활용한 Bot 탐지audio (기본: true)
오디오 정보를 활용한 Bot 탐지locale (기본: true)
시간대 및 언어 정보를 활용한 Bot 탐지extention (기본: true)
브라우저 확장프로그램 정보를 활용한 Bot 탐지cookie (기본: true)
cookie 기능 동작 여부를 활용한 Bot 탐지input (기본: true)
키보드, 마우스, 터치패널 등의 각종 입력디바이스를 활용한 Bot 탐지system (기본: true)
시스템 정보(OS, 메모리, 파일시스템 등)를 활용한 Bot 탐지
flows¶
"flows": {
"matchingList": [
"name": "basic",
"path": "/",
"action": {
"lv2": {"code": 403},
"lv5": {"location": "/captcha?redirect=$URL"},
"lv7": {"location": "/home"}
}
]
}
matchingList¶
matchingList (기본: null)
name
패턴의 이름path
매칭할 요청 경로action
lv0
~lv10
code
응답 상태코드location
리디렉션 경로.code
가 명기되지 않았다면302
상태코드를 응답한다.