cloudflare-http-requests
Cloudflare Logpull API를 통해 존(zone) 단위의 HTTP 요청 로그를 조회합니다.
문법
cloudflare-http-requests from=DATETIME [profile=STRING] [to=DATETIME]
옵션
- profile=STRING
- 선택 옵션. Cloudflare 접속 프로파일 식별자입니다. 생략하면 사용 가능한 모든 Cloudflare 프로파일을 순회하며 조회합니다. 쉼표로 여러 프로파일을 지정할 수 있습니다.
- from=DATETIME
- 필수 옵션. yyyyMMddHHmmss 포맷으로 조회 범위의 시작 시각을 지정합니다. 뒷자리를 생략하면 0으로 채워집니다. 현재 시각으로부터 최근 7일 이내여야 합니다.
- to=DATETIME
- 선택 옵션. yyyyMMddHHmmss 포맷으로 조회 범위의 끝 시각을 지정합니다. 뒷자리를 생략하면 0으로 채워집니다. 생략하면 현재 시각보다 1분 이전으로 설정됩니다.
출력 필드
| 필드 | 타입 | 이름 | 설명 |
|---|---|---|---|
| profile | 문자열 | 접속 프로파일 | Cloudflare 접속 프로파일 식별자 |
| _time | 날짜 | 이벤트 시간 | 이벤트 발생 시각(end_time에서 채워짐) |
| ray_id | 문자열 | Ray ID | Cloudflare Ray ID |
| src_ip | IP 주소 | 출발지 IP | 방문자의 IP 주소 |
| src_port | 정수 | 출발지 port | 방문자의 출발지 포트 |
| src_asn | 정수 | 출발지 자율 시스템 번호 | 출발지 네트워크의 ASN |
| src_country | 문자열 | 출발지 국가 | 요청이 시작된 국가 |
| src_ip_class | 문자열 | 출발지 IP 평판 | IP 평판. 예: noRecord/tor/scan/badHost |
| method | 문자열 | HTTP 메소드 | 예: GET, POST |
| host | 문자열 | 호스트 ID | 요청 호스트 |
| path | 문자열 | 경로 | 요청 경로 |
| uri | 문자열 | URI | 요청 URI |
| http_ver | 문자열 | HTTP 버전 | 요청 HTTP 프로토콜 버전 |
| user_agent | 문자열 | 유저 에이전트 | 방문자의 유저 에이전트 |
| x_requested_with | 문자열 | X-Requested-With | X-Requested-With 요청 헤더 값 |
| status | 정수 | 상태 | 엣지 응답 상태 코드. 예: 200, 403, 404, 500 |
| origin_status | 정수 | 오리진 상태코드 | 오리진 응답 상태. 0 = 엣지가 응답 |
| sec_action | 문자열 | 보안 액션 | 종료 액션. 예: block/challenge |
| sec_actions | 목록 | 보안 액션 목록 | 수행된 액션 배열 |
| sec_sources | 목록 | 보안 매칭 소스 | 매칭 제품 배열. 예: waf/firewallRules/botManagement |
| sec_rule_id | 문자열 | 보안 룰 ID | 매칭된 보안 규칙 식별자 |
| attack_score | 정수 | WAF 공격 점수 | 낮을수록 공격 가능성 높음 (Logpull 미제공) |
| sqli_score | 정수 | WAF SQLi 점수 | WAF SQL 인젝션 점수 (Logpull 미제공) |
| xss_score | 정수 | WAF XSS 점수 | WAF XSS 점수 (Logpull 미제공) |
| rce_score | 정수 | WAF RCE 점수 | WAF 원격 코드 실행 점수 (Logpull 미제공) |
| bot_score | 정수 | 봇 점수 | 30 미만이면 자동화 트래픽 의심 (Logpull 미제공) |
| src_device | 문자열 | 출발지 장비 | 방문자 장비 유형 |
| tls_ver | 문자열 | TLS 버전 | 연결의 TLS 버전 |
| tls_cipher | 문자열 | TLS 암호화 | 연결의 TLS 암호화 스위트 |
| mtls_status | 문자열 | mTLS 인증 상태 | mTLS 인증 상태 |
| sent_bytes | 정수 | 송신 바이트 수 | 엣지가 전송한 바이트 수 |
| recv_bytes | 정수 | 수신 바이트 수 | 엣지가 수신한 바이트 수 |
| start_time | 날짜 | 시작 시각 | 엣지 요청 시작 시각 |
| end_time | 날짜 | 종료 시각 | 엣지 요청 종료 시각 |
| edge_server_ip | IP 주소 | Edge 서버 IP | 처리한 엣지 서버 IP |
| origin_ip | IP 주소 | 원본 IP | 오리진 서버 IP |
| request_headers | 맵 | 요청 헤더 | 요청 헤더 맵 |
| response_headers | 맵 | 응답 헤더 | 응답 헤더 맵 |
| cookies | 맵 | 쿠키 | 요청 쿠키 맵 |
설명
cloudflare-http-requests는 Cloudflare Logpull API(/zones/{zone_id}/logs/received)를 호출해 존 단위의 상세 HTTP 요청 로그를 조회합니다. 존 ID가 필요하므로, 조회 대상 프로파일에 Zone ID가 설정되어 있어야 합니다. 각 행에는 수집 출처가 profile 필드로 기록되고, 이벤트 시각(end_time)이 표준 _time 컬럼으로 채워집니다.
Logpull API는 단일 요청 구간을 최대 1시간으로 제한합니다. profile을 생략하면 모든 프로파일을 순회합니다.
Note
from은 현재 시각으로부터 최근 7일 이내여야 하고, to는 현재 시각보다 최소 1분 이전이어야 합니다. to를 생략하면 자동으로 (현재 시각 - 1분)으로 설정됩니다.
Caution
WAF 공격 점수(attack_score, sqli_score, xss_score, rce_score)와 봇 점수(bot_score)는 WAF Advanced/Bot Management 엔타이틀먼트에 의존하며 Logpull API로는 제공되지 않습니다. 스키마에는 존재하지만 이 명령어의 결과에서는 비어 있습니다. 해당 점수가 필요하면 방화벽 이벤트(cloudflare-firewall-events, Enterprise extra=t) 또는 Logpush 경로를 사용하십시오.
사용 예
예시: 최근 1시간 오류 응답 조회
상황: 최근 1시간 동안 4xx/5xx 상태 코드로 응답한 요청을 확인합니다.
cloudflare-http-requests profile=my_profile from=20260714090000 to=20260714100000
| search status >= 400
| sort -_time
예상 결과:
| _time | src_ip | method | host | path | status |
|---|---|---|---|---|---|
| 2026-07-14 09:59:12 | 192.0.2.1 | GET | example.com | /admin | 403 |
| 2026-07-14 09:57:40 | 192.0.2.2 | POST | example.com | /api/login | 500 |
결과 해석: 최근 1시간 동안 오류로 응답한 요청이 최신순으로 표시됩니다. status로 오류 유형을, path로 어떤 리소스에서 문제가 발생했는지 파악할 수 있습니다.
예시: 출발지 IP별 요청량 상위 집계
상황: 최근 6시간 동안 요청을 가장 많이 보낸 출발지 IP를 집계합니다.
cloudflare-http-requests profile=my_profile from=20260714030000 to=20260714090000
| stats count by src_ip, src_country
| sort -count
| limit 10
예상 결과:
| src_ip | src_country | count |
|---|---|---|
| 192.0.2.1 | KR | 15230 |
| 192.0.2.2 | US | 8110 |
결과 해석: 출발지 IP와 국가별 요청 건수가 상위 10개로 집계됩니다. 특정 IP의 요청량이 비정상적으로 많으면 스크래핑이나 DoS 시도를 의심하고 추가 분석 대상으로 삼을 수 있습니다.