wget

HTTP 요청을 전송하여 웹 페이지 또는 API 응답을 가져옵니다. HTML DOM 요소를 CSS 셀렉터로 추출하거나, JSON/XML API 응답을 수신할 수 있습니다.

명령어 속성

항목설명
명령어 유형드라이버 쿼리 또는 가공 쿼리
필요 권한없음
라이선스 사용량집계함
병렬 실행미지원
분산 실행미지원

문법

URL을 직접 지정하여 HTTP 요청을 전송하려면

wget url=STR [method={get|post|put|delete}] [selector=STR] [timeout=INT] [encoding=STR] [auth=STR] [format={form|json|xml}] [header=STR] [body=STR] [proxy=STR]

입력 레코드의 url 필드 값을 사용하여 HTTP 요청을 전송하려면

wget [method={get|post|put|delete}] [selector=STR] [timeout=INT] [encoding=STR] [auth=STR] [format={form|json|xml}] [header=STR] [body=STR] [proxy=STR]

옵션

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-urlencoded
  • json: application/json
  • xml: 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_code32비트 정수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_texttext 필드에 텍스트 내용을 담은 맵의 배열로 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를 할당합니다.

사용 예

  1. 웹 페이지 가져오기

    wget url="https://example.com"
    

    지정한 URL에서 웹 페이지를 가져와 line 필드에 응답 본문을 할당합니다.

  2. CSS 셀렉터로 DOM 요소 추출

    wget url="https://example.com" selector="h1"
    

    웹 페이지에서 h1 태그를 추출하여 elements 필드에 배열로 할당합니다.

  3. JSON API 호출

    wget url="https://api.example.com/data" encoding=utf-8
    | parsejson
    

    JSON API를 호출하고 응답을 파싱합니다.

  4. POST 요청으로 데이터 전송

    json "{'src_ip': '192.0.2.1', 'action': 'block'}"
    | wget url="https://api.example.com/report" method=post format=json
    

    입력 레코드의 필드를 JSON 형식으로 POST 요청의 본문에 포함하여 전송합니다.

  5. 입력 레코드의 URL 필드를 사용하여 순차 요청

    json "[{'url': 'https://api.example.com/info/1'}, {'url': 'https://api.example.com/info/2'}]"
    | wget
    

    각 레코드의 url 필드 값으로 HTTP GET 요청을 전송합니다.

  6. HTTP 프록시를 사용하여 요청

    wget url="https://example.com" proxy="198.51.100.10:8080"
    

    지정한 프록시 서버를 경유하여 HTTP 요청을 전송합니다.

  7. 커스텀 헤더와 인증을 사용하여 요청

    json "{'url': 'https://api.example.com/secure'}"
    | eval headers = dict("X-Custom-Header", "value1")
    | wget header=headers auth="user:pass"
    

    커스텀 HTTP 헤더와 Basic 인증을 사용하여 요청을 전송합니다.

  8. 연결 타임아웃 설정

    wget url="https://api.example.com/report" timeout=60
    

    응답 시간이 긴 서버에 접속할 때 연결 및 읽기 타임아웃을 60초로 설정합니다.

  9. 직렬화된 본문 명시 전송

    json "{'payload': 'action=block&ip=198.51.100.1'}"
    | wget url="https://api.example.com/block" method=post body=payload
    

    body 옵션으로 지정한 필드의 값을 가공 없이 그대로 HTTP 요청 본문으로 전송합니다. body 옵션을 생략하면 레코드의 모든 필드가 format 옵션에 따라 자동 인코딩됩니다.

  10. PUT 요청으로 리소스 업데이트

    json "{'status': 'active'}"
    | wget url="https://api.example.com/items/42" method=put format=json
    

    입력 레코드의 필드를 JSON 형식으로 직렬화하여 PUT 요청으로 전송합니다.

  11. DELETE 요청으로 리소스 삭제

    wget url="https://api.example.com/items/42" method=delete auth="admin:pass"
    

    Basic 인증을 사용하여 지정한 리소스를 삭제합니다.

호환성

wget 명령어는 소나 4.0 이전 버전부터 제공되었습니다.