wget
HTTP 요청을 전송하여 웹 페이지 또는 API 응답을 가져옵니다. HTML DOM 요소를 CSS 셀렉터로 추출하거나, JSON/XML API 응답을 수신할 수 있습니다.
명령어 속성
| 항목 | 설명 |
|---|---|
| 명령어 유형 | 드라이버 쿼리 또는 가공 쿼리 |
| 필요 권한 | 없음 |
| 라이선스 사용량 | 집계함 |
| 병렬 실행 | 미지원 |
| 분산 실행 | 미지원 |
문법
URL을 직접 지정하여 HTTP 요청을 전송하려면
입력 레코드의 url 필드 값을 사용하여 HTTP 요청을 전송하려면
옵션
url=STR- HTTP 요청할 URL.
http://또는https://로 시작해야 합니다. 이 옵션을 생략하면 명령어는 가공 쿼리로 동작하며, 입력 레코드의url필드에서 URL을 읽습니다. method={get|post|put|delete}- HTTP 메소드 (기본값:
get)
get: GET 요청post: POST 요청put: PUT 요청delete: DELETE 요청
selector=STR- CSS 셀렉터. 지정하면 HTML 응답에서 셀렉터와 일치하는 DOM 요소를 추출하여
elements필드에 배열로 할당합니다. 미지정 시 전체 응답을line필드에 할당합니다. timeout=INT- HTTP 연결 및 읽기 타임아웃 (초 단위) (기본값:
30) encoding=STR- HTTP 응답 해석에 사용할 문자 인코딩 (기본값:
utf-8) auth=STR- HTTP Basic 인증 정보.
사용자:비밀번호형식으로 지정합니다. format={form|json|xml}- POST, PUT, DELETE 요청 시 Content-Type 헤더로 전송할 형식 (기본값:
form)
form:application/x-www-form-urlencodedjson:application/jsonxml:application/xml
header=STR- HTTP 헤더 필드 이름. 입력 레코드의 해당 필드 값(문자열 맵)을 HTTP 요청 헤더로 사용합니다.
body=STR- HTTP 본문 필드 이름. 입력 레코드의 해당 필드 값을 HTTP 요청 본문으로 전송합니다.
proxy=STR- HTTP 프록시.
호스트:포트형식으로 지정합니다.
입력 필드
| 필드 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| url | 문자열 | url 옵션 미지정 시 필수 | HTTP 요청할 URL. url 옵션을 생략한 경우 이 필드에서 URL을 읽습니다. |
출력 필드
| 필드 | 타입 | 설명 |
|---|---|---|
| line | 문자열 | HTTP 응답 본문. selector 옵션 미지정 시 할당합니다. |
| elements | 배열 | CSS 셀렉터와 일치하는 DOM 요소 목록. selector 옵션 지정 시 할당합니다. |
| _wget_code | 32비트 정수 | HTTP 응답 코드 |
| _wget_error | 문자열 | 오류 메시지. 응답 크기가 최대 크기(기본값 10MB)를 초과한 경우 exceeds-max-size 값을 할당합니다. |
오류 코드
파싱 오류
| 오류 코드 | 메시지 | 설명 |
|---|---|---|
| 14100 | 지원되지 않는 HTTP 메소드입니다. | method 값이 get, post, put, delete 중 하나가 아닌 경우 |
| 14101 | 지원되지 않는 본문 포맷입니다. | format 값이 form, json, xml 중 하나가 아닌 경우 |
| 14102 | 유효하지 않은 URL 형식입니다. | url 값이 올바른 URL 형식이 아닌 경우 |
| 14103 | 유효하지 않은 HTTP 프록시 형식입니다. | proxy 값이 호스트:포트 형식이 아닌 경우 |
런타임 오류
해당 사항 없음
설명
wget 명령어는 HTTP 요청을 전송하고 응답을 레코드로 변환합니다.
url 옵션을 지정하면 드라이버 쿼리로 동작하며, 지정한 URL에 HTTP 요청을 전송하여 하나의 레코드를 생성합니다. url 옵션을 생략하면 가공 쿼리로 동작하며, 입력 레코드의 url 필드에서 URL을 읽어 각 레코드마다 HTTP 요청을 전송합니다. 가공 쿼리 모드에서는 url 필드가 null인 레코드를 건너뛰고, 요청 실패 시에도 레코드를 다음 명령어로 전달합니다.
selector 옵션을 지정하면 HTML 응답을 파싱하여 CSS 셀렉터와 일치하는 DOM 요소를 추출합니다. 각 요소는 속성(attribute)을 키-값 쌍으로 포함하며, own_text와 text 필드에 텍스트 내용을 담은 맵의 배열로 elements 필드에 할당합니다.
POST, PUT, DELETE 요청 시 body 옵션을 지정하면 해당 필드의 값을 요청 본문으로 전송합니다. body 옵션을 지정하지 않으면 입력 레코드의 필드를 format 옵션에 따라 자동으로 인코딩하여 전송합니다. form 형식은 URL 인코딩, json 형식은 JSON 직렬화, xml 형식은 자동 변환을 지원하지 않습니다.
HTTPS 요청 시 서버 인증서 검증을 수행하지 않습니다.
HTTP 응답 크기가 최대 크기(기본값 10MB, araqne.logdb.wget_max_size 시스템 속성으로 변경 가능)를 초과하면 드라이버 쿼리 모드에서는 오류를 발생시키고, 가공 쿼리 모드에서는 _wget_error 필드에 exceeds-max-size를 할당합니다.
사용 예
-
웹 페이지 가져오기
wget url="https://example.com"지정한 URL에서 웹 페이지를 가져와
line필드에 응답 본문을 할당합니다. -
CSS 셀렉터로 DOM 요소 추출
wget url="https://example.com" selector="h1"웹 페이지에서
h1태그를 추출하여elements필드에 배열로 할당합니다. -
JSON API 호출
wget url="https://api.example.com/data" encoding=utf-8 | parsejsonJSON API를 호출하고 응답을 파싱합니다.
-
POST 요청으로 데이터 전송
json "{'src_ip': '192.0.2.1', 'action': 'block'}" | wget url="https://api.example.com/report" method=post format=json입력 레코드의 필드를 JSON 형식으로 POST 요청의 본문에 포함하여 전송합니다.
-
입력 레코드의 URL 필드를 사용하여 순차 요청
json "[{'url': 'https://api.example.com/info/1'}, {'url': 'https://api.example.com/info/2'}]" | wget각 레코드의
url필드 값으로 HTTP GET 요청을 전송합니다. -
HTTP 프록시를 사용하여 요청
wget url="https://example.com" proxy="198.51.100.10:8080"지정한 프록시 서버를 경유하여 HTTP 요청을 전송합니다.
-
커스텀 헤더와 인증을 사용하여 요청
json "{'url': 'https://api.example.com/secure'}" | eval headers = dict("X-Custom-Header", "value1") | wget header=headers auth="user:pass"커스텀 HTTP 헤더와 Basic 인증을 사용하여 요청을 전송합니다.
-
연결 타임아웃 설정
wget url="https://api.example.com/report" timeout=60응답 시간이 긴 서버에 접속할 때 연결 및 읽기 타임아웃을 60초로 설정합니다.
-
직렬화된 본문 명시 전송
json "{'payload': 'action=block&ip=198.51.100.1'}" | wget url="https://api.example.com/block" method=post body=payloadbody옵션으로 지정한 필드의 값을 가공 없이 그대로 HTTP 요청 본문으로 전송합니다.body옵션을 생략하면 레코드의 모든 필드가format옵션에 따라 자동 인코딩됩니다. -
PUT 요청으로 리소스 업데이트
json "{'status': 'active'}" | wget url="https://api.example.com/items/42" method=put format=json입력 레코드의 필드를 JSON 형식으로 직렬화하여 PUT 요청으로 전송합니다.
-
DELETE 요청으로 리소스 삭제
wget url="https://api.example.com/items/42" method=delete auth="admin:pass"Basic 인증을 사용하여 지정한 리소스를 삭제합니다.
호환성
wget 명령어는 소나 4.0 이전 버전부터 제공되었습니다.