이번에는 지난 포스팅에 이어 curl 라이브러리의 curl_easy_setopt() 함수의 옵션에 대해 더 알아보겠습니다.
오늘은 옵션값에 숫자나, 문자열을 넣는 옵션에 대해 알아보겠습니다.
숫자
CURLOPT_BUFFERSIZE
읽기 작업시 사용될 버퍼 크기를 지정한다. 하지만 늘 버퍼를 가득 채워가며 작업하지는 않는다. (cURL 7.10에서 추가됨)
CURLOPT_CLOSEPOLICY
cURL이 관리하는 커넥션 풀이 CURLOPT_MAXCONNECTS 만큼 생성됐을 때 다음 커넥션을 생성하려면 이전 커넥션 하나를 닫아야 하는데 어떤 커넥션을 닫을지의 기준이 되는 정책을 지정한다.
CURLCLOSEPOLICY_LEAST_RECENTLY_USED(가장 적게 사용된 것 지우기) 또는 CURLCLOSEPOLICY_OLDEST(가장 오래된 것 지우기) 값을 사용할 수 있고 다른 CURLCLOSEPOLICY_ 상수가 존재하긴 하지만 아직 cURL이 지원하지 않는 상태다.
CURLOPT_CONNECTTIMEOUT
커넥션을 하기 위해 최대로 대기할 시간을 초 단위로 지정한다. 0으로 지정하면 무한히 기다리게 된다.
CURLOPT_CONNECTTIMEOUT_MS
커넥션을 하기 위해 최대로 대기할 시간을 밀리세컨드 단위로 지정한다. 0으로 지정하면 무한히 기다리게 된다. libcurl이 시스템 표준 이름을 사용하도록 빌드된 경우 대기 시간은 초단위로만 지정할 수 있으며 최소 대기 시간은 1초로 고정된다. (cURL 7.16.2, PHP 5.2.3 버전에서 추가됨)
CURLOPT_DNS_CACHE_TIMEOUT
DNS 정보를 메모리에 유지할 시간을 초단위로 지정한다. 기본 값은 120초.
CURLOPT_FTPSSLAUTH
FTP 인증 방법을 지정한다. CURLFTPAUTH_SSL (SSL을 먼저 시도), CURLFTPAUTH_TLS (TLS를 먼저 시도), CURLFTPAUTH_DEFAULT (자동으로 결정) 값을 사용할 수 있다. (cURL 7.12.2 버전에서 추가됨)
CURLOPT_HTTP_VERSION
요청시 사용할 HTTP 버전을 지정한다. CURL_HTTP_VERSION_NONE (기본값, 자동으로 결정), CURL_HTTP_VERSION_1_0 (HTTP/1.0 사용), CURL_HTTP_VERSION_1_1 (HTTP/1.1 사용) 값을 사용할 수 있다.
CURLOPT_HTTPAUTH
HTTP 인증에 사용할 방법을 지정한다. CURLAUTH_BASIC, CURLAUTH_DIGEST, CURLAUTH_GSSNEGOTIATE, CURLAUTH_NTLM, CURLAUTH_ANY, CURLAUTH_ANYSAFE 값을 OR 비트 연산(|)으로 조합해 사용한다. 이 값이 지정되면 cURL이 지정된 값 중에 가장 적합한 방법을 선택한다.
CURLAUTH_ANY, CURLAUTH_ANYSAFE 상수는 아래처럼 미리 조합된 값이다.
CURLAUTH_ANY = CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM
CURLAUTH_ANYSAFE = CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM
CURLOPT_INFILESIZE
업로드할 파일의 크기를 바이트 단위로 지정한다. 실제 파일 크기보다 작은 값을 지정한다고 해도 지정된 값만큼 전송하고 멈추지는 않는다. 실제로 전송된 내용은 CURLOPT_READFUNCTION 함수에서 리턴하는 값에 의존한다.
CURLOPT_LOW_SPEED_LIMIT
최하 전송 속도를 초당 전송될 바이트 단위로 지정한다. 이 속도가 CURLOPT_LOW_SPEED_TIME 옵션으로 지정된 시간 만큼 지속되면 전송이 취소된다.
CURLOPT_LOW_SPEED_TIME
CURLOPT_LOW_SPEED_LIMIT 옵션으로 지정된 속도 이하로 전송될 수 있는 최대 시간을 초단위로 지정한다. 이 시간 이상 지속되면 전송이 취소된다.
CURLOPT_MAXCONNECTS
내부적으로 유지할 최대 커넥션 수를 지정한다. 커넥션이 이 수치만큼 많아지면 CURLOPT_CLOSEPOLICY 옵션에 지정된 규칙대로 커넥션을 닫는다.
CURLOPT_MAXREDIRS
리디렉션 될 수 있는 최대 횟수를 지정한다. CURLOPT_FOLLOWLOCATION 옵션과 함께 사용된다.
CURLOPT_PORT
URL과 상관없이 접속할 포트를 지정한다.
CURLOPT_PROTOCOLS
libcurl이 사용할 프로토콜을 비트마스크로 지정한다. 다양한 프로토콜을 사용할 수 있도록 libcurl이 빌드되어 있더라도 이 옵션을 통해 사용 가능한 프로토콜을 제한할 수 있다. (cURL 7.19.4 버전에서 추가됨)
CURLPROTO_HTTP, CURLPROTO_HTTPS, CURLPROTO_FTP, CURLPROTO_FTPS, CURLPROTO_SCP, CURLPROTO_SFTP, CURLPROTO_TELNET, CURLPROTO_LDAP, CURLPROTO_LDAPS, CURLPROTO_DICT, CURLPROTO_FILE, CURLPROTO_TFTP, CURLPROTO_ALL 옵션을 OR 비트 연산(|)으로 조합해 사용한다.
CURLOPT_PROXYAUTH
프록시 접속에 사용할 HTTP 인증 방법을 지정한다. CURLOPT_HTTPAUTH 옵션에서 설명한 것과 동일한 값을 사용할 수 있지만 프록시 인증에 사용할 수 있는 방법은 CURLAUTH_BASIC, CURLAUTH_NTLM 두 가지 뿐이다. (cURL 7.10.7 버전에서 추가됨)
CURLOPT_PROXYPORT
프록시 접속에 사용할 포트를 지정한다. CURLOPT_PROXY 옵션에서 URL을 지정하며 함께 지정할 수도 있다.
CURLOPT_PROXYTYPE
프록시 서버의 형태를 지정한다. CURLPROXY_HTTP (기본값), CURLPROXY_SOCKS5 중 하나를 사용할 수 있다. (cURL 7.10 버전에서 추가됨)
CURLOPT_REDIR_PROTOCOLS
리디렉션에 사용될 프로토콜을 CURLOPT_PROTOCOLS 옵션에서와 같이 지정한다. CURLOPT_FOLLOWLOCATION 옵션을 지정해 리디렉션을 지원하는 경우 특정 프로토콜만 리디렉션을 하도록 제한 할 수 있다. 기본적으로는 FILE과 SCP 프로토콜을 제외한 모든 프로토콜을 허용한다. (cURL 7.19.4 버전에서 추가됨)
CURLOPT_RESUME_FROM
전송을 이어서 진행할 바이트 단위의 오프셋을 지정한다.
CURLOPT_SSL_VERIFYHOST
인증서의 호스트 정보를 확인하는 방법을 지정한다. 1로 지정하면 인증서에 일반 호스트명이 존재하는지만 확인하고 2로 지정하면 추가로 실제 호스트명과 일치하는지 확인한다. 실제 운영 환경에서는 이 값을 2로 지정해야 한다. (기본값은 2)
CURLOPT_SSLVERSION
사용할 SSL 버전을 2, 3 중에 지정한다. 기본적으로는 PHP가 결정하지만 수동으로 설정할 수도 있다.
CURLOPT_TIMECONDITION
CURLOPT_TIMEVALUE 옵션에 설정된 값을 어떻게 다룰지 지정한다. CURLOPT_TIMEVALUE 옵션에 설정된 시각 이후에 변경된 페이지만 가져오고 싶을 때는 CURL_TIMECOND_IFMODSINCE 라고 지정하면 페이지가 변경되지 않았고 CURLOPT_HEADER 옵션이 TRUE로 설정됐을 경우 304 Not Modified 응답을 받을 수 있다. CURL_TIMECOND_IFUNMODSINCE 옵션은 반대로 동작하고 기본 값은 CURL_TIMECOND_IFMODSINCE이다.
CURLOPT_TIMEOUT
cURL 함수가 실행될 수 있는 최대 시간을 초단위로 지정한다.
CURLOPT_TIMEOUT_MS
cURL 함수가 실행될 수 있는 최대 시간을 밀리세컨드 단위로 지정한다. libcurl이 시스템 표준 이름을 사용하도록 빌드된 경우 대기 시간은 초단위로만 지정할 수 있으며 최소 대기 시간은 1초로 고정된다. (cURL 7.16.2, PHP 5.2.3 버전에서 추가됨)
CURLOPT_TIMEVALUE
CURLOPT_TIMECONDITION 옵션에서 사용될 기준이 되는 시각을 유닉스 타임스탬프로 지정한다.
CURLOPT_MAX_RECV_SPEED_LARGE
최대 다운로드 속도를 초당 전송될 바이트 단위로 지정한다. 다운로드 중에 평균 속도가 이 값을 초과하면 평균 속도가 이 값 이하가 될 때 까지 기다린다. 기본 값은 무제한이다. (cURL 7.15.5, PHP 5.4.0 버전에서 추가됨)
CURLOPT_MAX_SEND_SPEED_LARGE
최대 업로드 속도를 초당 전송될 바이트 단위로 지정한다. 업로드 중에 평균 속도가 이 값을 초과하면 평균 속도가 이 값 이하가 될 때 까지 기다린다. 기본 값은 무제한이다. (cURL 7.15.5, PHP 5.4.0 버전에서 추가됨)
CURLOPT_SSH_AUTH_TYPES
SSH 인증 방식을 지정한다. CURLSSH_AUTH_PUBLICKEY, CURLSSH_AUTH_PASSWORD, CURLSSH_AUTH_HOST, CURLSSH_AUTH_KEYBOARD 중 하나를 지정할 수 있고 CURLSSH_AUTH_ANY로 지정하면 libcurl이 적당한 방식을 자동으로 선택한다.
문자열
CURLOPT_CAINFO
서버를 확인할 수 있는 임의의 인증서 위치를 절대경로로 지정한다. CURLOPT_SSL_VERIFYPEER 옵션과 함께 사용해야 한다.
CURLOPT_CAPATH
서버를 확인할 수 있는 임의의 인증서들이 저장된 디렉토리를 지정한다. CURLOPT_SSL_VERIFYPEER 옵션과 함께 사용해야 한다.
CURLOPT_COOKIE
HTTP 요청시 Cookie: 헤더에 전송될 값을 지정한다. 여러개의 쿠키를 전송해야 할 때는 세미콜론과 공백으로 구분한다. (예: fruit=apple; colour=red)
CURLOPT_COOKIEFILE
서버에 전송할 쿠키 데이터 파일명을 지정한다. 데이터 파일은 Netscape 쿠키 파일 형식이거나 일반적인 HTTP 헤더 스타일로 표현되어야 한다. 파일명에 빈 문자열을 지정할 경우 아무런 쿠키도 불러오지 않지만 서버로부터 전송받은 쿠키를 메모리에 담고 있다 요청할때 같이 보내는 쿠키 핸들링이 사용 가능해진다.
CURLOPT_COOKIEJAR
서버에서 전송받은 쿠키 데이터를 저장할 파일명을 지정하면 cURL 핸들이 닫힐 때 파일이 저장된다. (예: curl_close() 함수로 종료)
CURLOPT_CUSTOMREQUEST
GET, HEAD 요청 대신 사용할 임의의 메소드를 지정한다. DELETE 처럼 REST 요청을 할 때 사용할 수 있고 GET, POST, CONNECT 같은 식으로 지정해야 하고 완전한 한 라인을 작성하는건 아니다. 예를 들면 GET /index.html HTTP/1.0\r\n\r\n 같은 식으로 지정하는건 올바른 방법이 아니다. 메소드를 지정하기 전에 서버가 지원하는 메소드인지 확인 하고 사용하도록 하자.
CURLOPT_EGDSOCKET
CURLOPT_RANDOM_FILE 옵션처럼 SSL 랜덤 시드 파일을 지정하지만 파일명 대신 엔트로피 생성 데몬 소켓 주소를 지정해야 한다.
CURLOPT_ENCODING
Accept-Encoding: 헤더의 내용을 지정한다. 여기에 지정된 방법으로 인코딩된 결과가 돌아오면 알아서 디코딩 해준다. identity, deflate, gzip 세 가지의 인코딩을 지원하고 빈 문자열로 지정하면 가능한 모든 인코딩을 포함하는 헤더가 요청된다.
CURLOPT_FTPPORT
FTP "POST" 명령에 사용될 네트워크를 지정한다. "POST" 명령은 서버에게 지정된 곳으로 접속하도록 요청할 것이다. 여기에 지정할 수 있는 값은 IP 주소, 호스트명, 네트워크 인터페이스 이름(유닉스의 경우)이고 '-' 라고 쓸 경우 시스템 기본 IP를 사용하게 된다.
CURLOPT_INTERFACE
외부로 향하는 네트워크 인터페이스의 이름을 지정한다. 인터페이스의 이름, IP 주소, 호스트명 중 하나를 지정할 수 있다.
CURLOPT_KEYPASSWD
CURLOPT_SSLKEY 또는 CURLOPT_SSH_PRIVATE_KEYFILE 개인키에서 사용될 비밀번호를 지정한다.
CURLOPT_KRB4LEVEL
KRB4 (Kerberos 4) 보안 수준을 지정한다. clear, safe, confidential, private 중에 하나를 사용할 수 있다(보안성이 낮은 순서에서 강력한 순서로 나열됨). 이 4개 외에 다른 값을 지정하면 private이 지정되고 NULL값을 지정하면 KRB4 보안이 해제된다. 지금은 FTP 전송 작업에만 KRB4 보안 기능을 사용할 수 있다.
CURLOPT_POSTFIELDS
POST로 전송될 데이터를 지정한다. 파일을 전송할 경우에는 파일의 절대 경로 앞에 @를 붙이면 되고 파일 형식을 명시적으로 지정하려면 파일명 뒤에 ';type=mimetype' 같은 식으로 추가하면 된다. 파라미터 값은 'para1=val1¶2=val2&...' 같은 식으로 URL 인코딩된 값들을 넘겨도 되고 필드 이름을 키로 가지며 필드 값을 데이터로 가지는 배열로 넘겨도 된다. PHP 5.2.0 버전부터 파일을 @ 접두사가 붙은 파일명으로 넘길때는 배열의 형태로 넘겨야만 한다.
이 옵션의 값을 URL 인코딩된 문자열로 지정할 경우 Content-Type 헤더는 application/x-www-form-urlencoded 값으로 설정되고 배열로 지정할 경우는 multipart/form-data 값으로 설정된다.
CURLOPT_PROXY
사용할 프록시 서버의 IP나 호스트명을 지정한다. 포트 번호는 이 옵션에서 proxy_host:80 처럼 한 번에 지정할 수도 있고 CURLOPT_PROXYPORT 옵션을 통해 따로 지정할 수도 있다.
CURLOPT_PROXYUSERPWD
프록시 접속에 사용할 접속 정보를 "[username]:[password]" 같은 형식으로 지정한다.
CURLOPT_RANDOM_FILE
SSL 접속에 사용되는 난수를 초기화 하기 위한 시드가 될 파일명을 지정한다.
CURLOPT_RANGE
요청시 Range: 헤더에 쓰일 요청 범위를 "X-Y" 같은 형식으로 지정한다. X, Y는 생략 가능한 값이며 "X-Y,N-M" 형태의 쉼표로 구분된 값도 사용할 수 있다.
CURLOPT_REFERER
요청시 Referer: 헤더에 쓰일 URL을 지정한다.
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5
SCP, SFTP 접속시 서버 공개키의 MD5 해시와 비교할 값을 지정한다. 서버 공개키의 해시와 지정한 해시값이 다르다면 연결을 하지 않는다. (cURL 7.17.1 버전에서 추가됨)
CURLOPT_SSH_PUBLIC_KEYFILE
접속시 사용할 공개 키 파일을 지정한다. 지정하지 않으면 libcurl이 자동으로 키 파일을 찾는데 환경변수 HOME이 설정돼 있을 경우는 $HOME/.ssh/id_dsa.pub 파일을 사용하고 환경변수가 설정돼있지 않으면 현재 디렉토리의 id_dsa.pub 파일을 사용한다. (cURL 7.16.1 버전에서 추가됨)
CURLOPT_SSH_PRIVATE_KEYFILE
접속시 사용할 개인 키 파일을 지정한다. 지정하지 않으면 libcurl이 자동으로 키 파일을 찾는데 환경변수 HOME이 설정돼 있을 경우는 $HOME/.ssh/id_dsa 파일을 사용하고 환경변수가 설정돼있지 않으면 현재 디렉토리의 id_dsa 파일을 사용한다. 파일이 비밀번호로 보호되어 있을 경우에는 CURLOPT_KEYPASSWD 옵션으로 비밀번호를 지정해줘야 한다. (cURL 7.16.1 버전에서 추가됨)
CURLOPT_SSL_CIPHER_LIST
SSL 접속에 사용할 암호화 방법을 지정한다. RC4-SHA, TLSv1 중 하나를 사용할 수 있다.
CURLOPT_SSLCERT
PEM 형태의 인증서를 담고 있는 파일을 지정한다.
CURLOPT_SSLCERTPASSWD
CURLOPT_SSLCERT 옵션에서 지정한 인증서에 사용될 비밀번호를 지정한다.
CURLOPT_SSLCERTTYPE
인증서의 형태를 지정한다. PEM (기본 값), DER, ENG 중 하나를 사용할 수 있다. (cURL 7.9.3 버전에서 추가됨)
CURLOPT_SSLENGINE
CURLOPT_SSLKEY 옵션에서 지정된 SSL 개인 키의 암호와 엔진 종류를 지정한다.
CURLOPT_SSLENGINE_DEFAULT
비대칭 암호화 연산에 사용할 암호화 엔진 종류를 지정한다.
CURLOPT_SSLKEY
SSL 개인 키를 담고 있는 파일을 지정한다.
CURLOPT_SSLKEYPASSWD
CURLOPT_SSLKEY 옵션에서 지정된 SSL 개인 키를 사용하기 위한 비밀번호를 지정한다. 매우 중요한 비밀번호가 PHP 소스 코드 내에 기술되므로 PHP 소스 코드를 안전하게 보관해야 할 것이다.
CURLOPT_SSLKEYTYPE
CURLOPT_SSLKEY 옵션에서 지정된 SSL 개인 키의 형태를 지정한다. PEM (기본 값), DER, ENG 중 하나를 사용할 수 있다.
CURLOPT_URL
접속할 URL을 지정한다. curl_init() 함수를 통해 세션을 초기화 할 때 지정할 수도 있다.
CURLOPT_USERAGENT
요청시 User-Agent: 헤더에 쓰일 문자열을 지정한다.
CURLOPT_USERPWD
요청시 사용할 접속 정보를 "[username]:[password]" 같은 형식으로 지정한다.
curl 라이브러리의 curl_easy_setopt() 함수의 옵션에 대한 포스팅을 마무리하겠습니다.
감사합니다.
'프로그래밍 > C' 카테고리의 다른 글
[C] incompatible implicit declaration of built-in function (0) | 2018.08.06 |
---|---|
[C] _AT_ 키워드 (0) | 2018.08.01 |
[C]curl 라이브러리 curl_easy_setopt() 옵션 정보(1) (0) | 2018.05.29 |
[C] 컴파일 과정 (0) | 2018.03.31 |
[C]fopen, fclose 함수란? (0) | 2018.01.03 |