리눅스 컬이 뭐야?

青灯夜游
青灯夜游원래의
2023-04-20 17:05:463468검색

Linux에서 컬은 서버와 데이터를 전송하는 매우 실용적인 도구입니다. URL 규칙을 사용하여 명령줄에서 작동하는 파일 전송 도구이며, 포괄적인 전송 도구입니다. Curl은 프록시 액세스, 사용자 인증, FTP 업로드 및 다운로드, HTTP POST, SSL 연결, 쿠키 지원, 중단점 재개 등 매우 유용한 기능을 많이 제공합니다.

리눅스 컬이 뭐야?

이 튜토리얼의 운영 환경: linux7.3 시스템, Dell G3 컴퓨터.

Linux에서 컬은 URL 규칙을 사용하여 명령줄에서 작동하는 파일 전송 도구로, 매우 강력한 http 명령줄 도구라고 할 수 있습니다. 파일 업로드 및 다운로드를 지원하며 포괄적인 전송 도구이지만 전통적으로 URL을 다운로드 도구라고 부르는 것이 일반적입니다.

curl은 서버와 데이터를 전송하는 매우 실용적인 도구입니다. 지원되는 프로토콜에는 DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET 및 TFTP), 컬은 사용자 상호 작용 없이 작업을 완료하도록 설계되었습니다. 컬은 프록시 액세스, 사용자 인증, FTP 업로드 및 다운로드, HTTP POST, SSL 연결을 포함하여 매우 유용한 기능을 많이 제공합니다. , 쿠키 지원, 중단점 재개....

1. 가장 일반적으로 사용되는 컬 명령

1. GET 요청 보내기

curl URL
curl URL?a=1&b=nihao

2. JSON 형식 요청 보내기 :

curl -X POST -d 'a=1&b=nihao' URL
curl -H "Content-Type: application/json" -X POST -d '{"abc":123,"bcd":"nihao"}' URL

그 중 -H는 헤더를 나타내고, -X는 요청 유형(POST/GET/HEAD/DELETE/PUT/PATCH)을 지정하며,

-d

는 전송할 데이터를 나타냅니다. 이들은 가장 일반적으로 사용됩니다. 모든 컬 명령 보기: man 컬 또는 컬 -h 요청 헤더: H,A,e 응답 헤더: I,i,D 쿠키: b,c,j 전송: F(POST), G(GET ), T(PUT), 명령 구문 및 컬 명령 매개변수에 대한 자세한 설명




1. Curl 명령 구문


curl -H "Content-Type: application/json" -X POST -d @test.json URL


2. 컬 명령 매개변수에 대한 자세한 설명

매우 강력하며 많은 명령 매개변수가 있습니다. 다음 표는 Aiezu(aiezu.com)에서 선택한 일부 매개변수입니다. 더 많은 매개변수를 보려면 "man cur" 명령을 실행하십시오.

Please-H "name: value"(HTTP) http 추가 헤더(http 요청 헤더); -H "이름:"(HTTP) http 헤더(http 요청 헤더) 제거 -A "string"(HTTP) Http 요청 헤더 "User-Agent"를 설정합니다. 서버는 "User-Agent"를 사용하여 클라이언트가 사용하는 브라우저 이름과 운영 체제 유형을 확인할 수 있습니다. 매개변수로 인해 서버가 잘못된 판단을 내릴 수 있습니다. -e 258c40d94d8689854ad79c4076dd5f96(HTTP)을 사용하여 소스 페이지를 설정할 수 있습니다. 액세스할 때 이 페이지에 들어갈 페이지를 http 서비스에 알려주세요. ring-I(HTTP)는 HTTP 헤더만 출력하고 콘텐츠(HTTP/FTP/FILE)를 가져오지 않습니다. -i(HTTP) HTTP 헤더를 출력하고 콘텐츠를 반환합니다.-D 28897b20adb25fbae118a3f80f538dec(HTTP) http 응답 헤더를 지정된 파일에 덤프합니다.cookie-b name=data(HTTP) 쿠키 데이터 보내기 HTTP 서버에 데이터 형식은 다음과 같습니다. "NAME1=VALUE1; NAME2=VALUE2"; -c filename --cookie-jar file name-j --junk-session-cookiesProxy -x [protocol://[user:pwd@]host[:port] --proxy [프로토콜] ://[user:pwd@]host[:port]HTTP 프록시 액세스를 사용합니다. 포트가 지정되지 않으면 기본적으로 포트 8080이 사용됩니다. -x "http_proxy://aiezu:123@aiezu.com:80""-x" 매개변수의 프록시를 채널로 사용하여 HTTP가 아닌 프로토콜(예: ftp; --socks4a 6db23a596431c1c1424b5d7d18a8e73d SOCKS4 프록시 사용 --proxy-diges --anyauth --basic - -diges-U a0cdbb1e98c0a7f7bc41394907e02e8ddataTransfer; 이 매개변수를 사용하면 "-d/", " --data" 및 "--data-binary" 매개변수 설정이 URL에 추가되고 GET 모드에서 요청됩니다. --data "문자열" -F name=@file(HTTP)는 "--form"과 유사하지만 "@" 및 "7580fe52d2cb913a06fba83e61c56bdd 중단점을 재개하고 파일 헤더의 지정된 위치에서 계속 다운로드/업로드합니다. 재개가 시작되는 위치, 오프셋 값이 " -"이면 컬은 파일의 시작 위치를 자동으로 식별하고 -r 01fbef2219010f55027ff7800552222a --range 01fbef2219010f55027ff7800552222a 0-499: 처음 500바이트 (HTTP)은 컬에게 HTTP 기본 인증을 사용하도록 지시합니다(HTTP 프로토콜을 사용할 때). ), 이는 기본 인증 방법입니다. --ntlm(HTTP)은 HTTP 프로토콜에 NTLM 인증 방법을 사용합니다. --negotiate(HTTP)는 GSS-Negotiate를 사용합니다. --anyauth(HTTP)는 컬에게 적절한 인증 방법을 자동으로 선택하고 가장 안전한 방법을 선택하도록 지시합니다. -u user:password 사용자 이름을 제공하면 컬이 비밀번호를 입력하라는 메시지가 표시됩니다. "NTLM" 인증을 위해 "SSPI"로 열린 컬 라이브러리를 사용하는 경우 사용자 이름과 비밀번호 없이 "-u:" 옵션을 사용하여 컬을 강제할 수 있습니다. 인증을 위해 현재 로그인된 사용자 이름과 비밀번호를 사용합니다. 이 매개변수는 http 헤더 "Authorization:"을 설정하는 것과 같습니다. Certificate --cert < ;Certificate[:password]> ;(SSL)은 컬에게 인증서 유형을 알려줍니다. 제공: PEM, DER, ENG 등 ;기본값은 "PEM"입니다. 암호화 작업을 위한 OpenSSL 암호화 엔진 설정 지원되는 암호화 엔진 목록을 보려면 "curl --engine list"를 사용하세요. (SSL)은 다음을 포함하는 파일 경로 이름을 지정합니다. data SSL 연결을 위한 무작위 시드를 생성하는 데 사용됩니다. (SSL)은 무작위 시드 생성기 EGD(Entropy Gathering Daemon 소켓)에서 지정한 경로 이름입니다. ; --tlsv1.0 --tlsv1.1 --tlsv1.2(SSL)는 SSL 버전 2를 사용하여 원격 서버와 통신합니다. --키 42538adbdb6240b2b083a000a615d5bd--key-type fe064393ae21641016c0f1f708a7a2f9(SSL)은 개인 키 파일 형식을 지정하고 DER, PEM, ENG를 지원하며 기본값은 PEM입니다. --pass b6cb73fae0efbdb0e9a26fd2eaddb3bb(SSL/SSH)는 개인 키 파일의 비밀번호를 지정합니다. --pubkey 42538adbdb6240b2b083a000a615d5bd(SSH) 지정된 공개 키를 사용합니다. file; FTP-P --ftp-port 0ae6e63b7a4e13057143628d79b3a451 네트워크 카드: eth1 포트 번호를 추가할 수 있습니다: eth1:20000-21000;(FTP) 줄 바꿈(LF)을 캐리지 리턴 줄 바꿈( CRLF) 업로드 시 --ftp-account [data](FTP) ftp 계정 정보 -- ftp-method [method](FTP) 선택값: multicwd/nocwd/ --ftp-pasv(FTP) PASV(수동)/EPSV 모드 사용 - -ftp-skip-pasv-ip(FTP) PASV를 사용할 때 지정된 항목을 건너뜁니다. IP; --ftp-create-dirs(FTP) 업로드 시 자동으로 원격 디렉터리 생성 -l(FTP) ftp 파일 목록 나열; -B(FTP/LDAP) FTP 및 LDAP에 Ascii 전송 모드를 사용하는 것은 "type=A;"를 사용하는 것과 같습니다. --disable-epsv--disable-eprtSpeed ​​​​limitspeed-time 기간 동안 다운로드 속도가 초당 속도 제한 바이트보다 느린 경우 다운로드가 중단됩니다. speed-time을 사용하면 기본 속도 제한은 1이 됩니다. -Y로 설정하지 않는 한. 이 옵션은 전송을 제어하므로 느린 연결 등에 영향을 미치지 않습니다. 이것이 우려되는 경우 --connect-timeout 옵션을 사용해 보세요.-Y입니다. --compressed(HTTP) 요청은 압축을 위해 반환된 콘텐츠 압축 알고리즘을 사용합니다. 컬은 gzip 압축의 압축 해제를 지원합니다. --connect-timeout ac95ddb939274f17a62178efad7baf97최대 연결 시간 제한을 "초"로 지정합니다. ; -m초 --max-time 초-s --silent-# 진행률 표시줄을 표시합니다. error-f --fail--retry d2c1e15f2758ae4ead444247148d09ea - -retry-max-time ac95ddb939274f17a62178efad7baf97실패한 재시도 횟수; 자동 모드에서 오류 메시지 표시; -- stderr 28897b20adb25fbae118a3f80f538decoutput --output file은 반환된 내용을 파일로 출력합니다. 여러 URL을 얻기 위해 와일드카드를 사용하는 경우 "#" 뒤에 "숫자 시퀀스 번호"를 사용할 수 있으며, 컬은 자동으로 해당 키워드로 이를 다음과 같이 대체합니다:  curl "http://aiezu.com/{ a,b" }.txt" -o "#1.txt";--create-dirs -w --write-out format 작업이 완료된 후 지정된 내용을 반환 정보 끝에 추가합니다. 추가할 내용은 다음과 같습니다. 문자열 "string", 파일에서 "@filename" 가져오기 또는 표준 입력 "@-"에서 가져오기 형식 매개변수에 %{variable_name}을 사용하여 다음과 같은 응답 정보와 관련된 변수를 사용할 수 있습니다. : %{content_type}, %{http_code}, %{local_ip}..., 더 많은 변수는 "man 컬"을 참조하세요. 형식 매개변수는 "n", "r", "t"를 사용할 수 있습니다. 기타 이스케이프 문자 출력을 표준 출력으로 보내려면 파일 이름으로 "-"를 사용합니다. --trace-ascii file설명 정보를 포함하여 들어오고 나가는 모든 데이터를 파일에 덤프하고 읽기 쉬운 ASCII 부분만 덤프합니다. 구성 파일에서 매개변수를 읽습니다. http://curl.haxx.se/docs/-v 디버깅 중에 사용되는 자세한 정보를 표시합니다. help-M --manual-hlinux 컬 사용 도움말,

curl -h의 전체 매개변수 설명:

매개변수 그룹 Parameter Description
url url 크롤링해야 하는 하나 이상의 URL
다음과 같은 여러 와일드카드 방법:
1. http://{www, ftp, mail}.aiezu.com;
2. http://aiezu.com/images/[001-999].jpg 3. http://aiezu.com/images/[1-999].html ;
4 .ftp://aiezu.com/file[a-z].txt
please
header
--header "name: value"
--header "이름:"
--user-agent "string"

"-H", "--header 옵션"을 사용하여 이 옵션을 설정할 수도 있습니다.
--referer 258c40d94d8689854ad79c4076dd5f96

-e "aiezu.com"은 "-H "Referer: www.qq.com""과 동일합니다.

head
- -head
HTTP 서비스에 사용하는 경우 페이지의 http 헤더를 가져옵니다.
(예: 컬 -I http://aiezu.com)
FTP/FILE에 사용하는 경우 파일 크기와 마지막 수정 시간을 가져옵니다.
(예: 컬 -I 파일://test.txt)
--include
- -dump-header < ;file>
--cookie name=data


줄에 "="가 없으면 매개변수 값이 쿠키 파일 이름으로 간주됩니다. 서버의 http 응답 헤더 "Set-Cookie :" 라인을 통해 얻을 수 있습니다.



(HTTP) 작업을 완료한 후 반환된 쿠키를 저장합니다.
지정된 매개변수 값은 "-"입니다. "콘솔과 같은" 표준 출력으로 전달됩니다.

(HTTP)는 컬에게 삭제하라고 지시합니다. 모든 "세션 쿠키";
브라우저 다시 시작과 동일

-x 호스트:port
프로토콜 기본값은 http_proxy이며 다른 가능한 값은 다음과 같습니다.
http_proxy , HTTPS_PROXY, 양말4, 양말4a, 양말5
예:
--proxy 8.8.8.8: 8080;



-p
-- Proxytunnel

--socks4 aa3755fb6675d042aec4e88952ca7a83
--socks5 aa3755fb6675d042aec4e88952ca7a83
SOCKS5 프록시 사용
이 매개변수는 "-x" 매개변수를 재정의합니다.
--proxy-anyauth
--proxy-basic
--proxy-negotiate
--proxy-ntlm

http 프록시 인증 방법은 다음을 참조하세요.
--negotiate
--ntlm


- -proxy-user a0cdbb1e98c0a7f7bc41394907e02e8d

프록시 사용자 이름과 비밀번호를 설정하세요.


-G
--get
-d @file
-d "문자열"
--data-ascii "문자열"
--data-binary "문자열"
--data-urlencode "문자열"
(HTTP)은 HTTP POST를 사용하여 "키/값 쌍" 데이터를 보냅니다. 브라우저 양식 속성(method="POST", enctype="application/x-www-form-urlencoded")
-d, --data: HTTP POST 데이터
--data-ascii: HTTP POST ascii 데이터; -data-binary: HTTP POST 바이너리 데이터;
--data-urlencode: HTTP POST 데이터(urlencode)
데이터가 "@"로 시작하고 뒤에 파일이 오면 게시물 파일의 내용이 게시됩니다.
-F name=e248efcea7c66971f0314a8bf3e86a87 --continue-at ab76cfca1a1dc7ff1291dcdf873f72ec


( HTTP/FTP/SFTP/FILE)은 지정된 내용만 전송합니다. 부분:
-500: 마지막 500바이트
9500-: 처음 9500바이트; : 첫 번째 및 마지막 1바이트 ;
100-199,500-599: 2개의 100바이트


인증

--basic
일반적으로 NTLM을 사용하는 IIS 웹사이트에 사용됩니다. ) HTTP 프로토콜에 사용되는 HTTP 다이제스트 인증을 사용합니다.
주요 목적은 Kerberos5 인증을 지원하는 것입니다.
--user user:password 사용자 이름 및 비밀번호 인증을 사용합니다. 이 매개변수는 "-n", "--netrc" 및 "--netrc-ional" 옵션을 무시합니다.

-E 76e7e0c5a7b262bbb8bb18edc550d8eb

(SSL)은 "PEM" 형식으로 인증서 파일과 인증서 비밀번호를 지정합니다.



--cert-type 7674b22ef33c73b930516fd6bc30b7a3
--cacert 40bd6a4af3f8d23be5a6da4878b9b143 (SSL)은 지정된 CA 인증서 파일이 "PEM" 형식이어야 함을 알려줍니다.
--capath 2b7ad7057f73d5d5aa92aa8c7b483164 (SSL)는 지정된 디렉터리의 CA 인증서가 확인에 사용됨을 알려줍니다.
이러한 인증서는 "PEM" 형식이어야 합니다.
--crlfile 28897b20adb25fbae118a3f80f538dec (HTTPS/ FTPS) 해지된 인증서 목록을 지정하는 PEM 형식의 파일을 제공합니다.
-k
--insecure
(SSL) 이 옵션을 설정하면 인증서가 없는 안전하지 않은 SSL을 사용하여 연결 및 전송이 허용됩니다.
SSL
Others
--ciphers e8f064f971a27002865e16550000e50d (SSL)은 SSL에서 사용할 암호화 방법을 지정합니다. 예: "aes_256_sha_256"; ;

--random-file
--egd-file 28897b20adb25fbae118a3f80f538dec
-1/--tlsv1
-2/--sslv2
-3/--sslv3

(SSL) TLS 사용 원격 서버와의 통신
(SSL)은 TLS 버전 1.0을 사용하여 원격 서버와 통신합니다.
(SSL)은 TLS 버전 1.1을 사용하여 원격 서버와 통신합니다. 원격 서버
(SSL) SSL 버전 3을 사용하여 원격 서버와 통신합니다.



개인 키
공개 키
(SSL/SSH) 개인 키 파일 이름을 지정합니다. 지정되면 자동으로 다음 파일을 사용하려고 시도합니다: "~/.ssh/id_rsa", "~/.ssh/id_dsa", ". /id_rsa'", "./id_dsa";
(FTP) FTP 활성 모드에서 다음과 같이 서버 연결을 기다릴 주소를 설정합니다. IP: 8.8.8.8
호스트 이름: aiezu.com



-- crlf
--list-only
--use-ascii

(FTP)는 PASV(수동 모드)에 있을 때 컬에게 EPSV를 사용하지 말라고 지시합니다.
(FTP)는 컬에게 EPRT 및 LPRT를 비활성화하라고 지시합니다.
--limit-rate 0525e6a15abb94ecba5807e114b60ce6 curl에서 사용하는 최대 대역폭을 제한합니다. 단위가 지정되지 않은 경우 기본 단위는 "바이트/초"입니다. 지정할 수도 있습니다. "K", "M", "G" 및 기타 단위: "--limit-rate 1m"는 최대 대역폭을 "1m 바이트/초"로 제한합니다. --speed-time 46dd80ba616c57a652514755c74c4211
--speed-limit 0525e6a15abb94ecba5807e114b60ce6 speed-time 초 동안 다운로드가 지정된 속도(초당 바이트 수)보다 느린 경우 속도-시간은 -y로 설정되며 설정되지 않은 경우 30입니다.
Other
옵션
-0/--http1.0 (HTTP) 컬이 기본 HTTP 1.1 대신 HTTP 1.0을 사용하도록 강제합니다.
--인터페이스 8a11bc632ea32a57b3e3693c7987c420 지정된 사용 네트워크 카드 인터페이스 액세스
컬 --인터페이스 eth0 http://aiezu.com
컬 --인터페이스 10.0.0.101 http://aiezu.com
-X e2b9f03cad787b9644e1f51fd23b7dac
--request ed5f1430921590cdf6902ce8a2a390b0
킵얼라이브 시간 설정
--no-keepalive 킵얼라이브 기능을 끕니다.
--no-buffer 출력 스트림 버퍼링을 비활성화합니다.
--buffer En 가능한 출력 스트림 버퍼링
-L
--location
(HTTP/HTTPS)은 http 응답 헤더 "Location:"을 따라 점프 후 페이지로 연결됩니다.
(http 응답 코드가 3XX인 경우 사용됨) 301 점프, 302 점프)
--location-trusted (HTTP/HTTPS)는 "--location"과 동일하지만 점프 전 사용자 이름과 비밀번호가 점프 후에 전송됩니다.
전체 컬 작업의 최대 시간을 초 단위로 제한합니다.
조용 모드. 진행률 표시기 또는 오류 메시지를 표시하지 않습니다.
--progress-bar

옵션

(HTTP) 연결 실패(400 이상 오류)는 기본 오류 페이지를 반환하지 않지만 컬 오류 코드 "22"를 반환합니다.

--retry-delay 0e72eeb93e8222d25f37582edca0e1bc
재시도 간격;
최대 재시도 시간

-S
--show-error

Error message save file;
-o file
다음 이름으로 저장됩니다: "a.txt", "b.txt"; 컬 "http://aiezu.com/{a, b}_[1 -3].txt" -o "#1#2.txt";
다음 형식으로 저장됩니다: a1.txt, a2.txt, a3.txt, b1.txt, b2.txt, b3. txt
규칙 생성 및 디렉토리 저장을 원할 경우 "--create-dirs"를 참조하십시오.

"-"를 지정하면 "콘솔과 같은" 표준 출력이 지정됩니다.



-O
-- remote-name

은 반환된 콘텐츠를 현재 디렉터리에서 URL의 파일과 동일한 이름을 가진 파일로 출력합니다(디렉터리 제외).

"- o" 매개변수를 사용하여 필요한 로컬 디렉터리 계층 구조를 생성합니다

Debug

-trace 28897b20adb25fbae118a3f80f538dec

설명 정보를 포함하여 들어오고 나가는 모든 데이터를 파일로 덤프합니다.
출력을 보낼 파일 이름으로 "-"를 사용합니다. 표준 출력.
이 옵션은 이전에 사용된 -v, --verbose, --trace-ascii 옵션을 덮어씁니다.
--trace-time 덤프 파일에 시간 정보를 추가합니다. 5098c2498a1d11e53edc740619ba9f84

--verbose

전체 도움말 매뉴얼 표시,
--help

"모든" 인증 방법 사용 가능 --기본                                       >                          - -Data-ASCII & LT>-디지털 인증과 함께 다이제스트 협상 --중심-EPSV --tcp-nodelay                                                                                                                                                      > 파일 및 비밀번호(SSL) 개인 키 파일 이름(SSL) . )CA 인증서(SSL)--connect-timeout ac95ddb939274f17a62178efad7baf97 최대 요청 시간 업로드는 LF를 CRLF로 변환하는 것입니다포트 대신 PASV/EPSV를 사용하세요--ftp-skip-pasv-ip                                                  ~ >用 SSL/TLS 사용이 필요합니다. FTP 데이터 전송을 전송하려면 -F/-Form & LT name = content & gt;및 [] 서버에 전달되는 맞춤 헤더 정보 --ignore-content-length        ~                                                             -I/-헤드 전용 문서 정보 표시 파일을 읽을 때 세션 쿠키 무시 지정된 지정 네트워크 인터페이스/주소 사용 인증서 없이 SSL 사이트 허용-- 로컬 포트7a16b29f015c60d23685bc81cbbd96c2                                                                                                 >                             E-N/-NetRC -N/--no-buffer                                     R-P/-Proxytunnel Proxy 부수적 인 사용 NTLM 인증 --trace --trace-time                                                           , 타임스탬프 추가 --url 258c40d94d8689854ad79c4076dd5f96 프록시 사용자 이름 및 비밀번호 설정 전송 시간 설정 SSLV3 (SSL) Like -Q는 제3자 전송을 위한 소스 URL URL, 제3자 전송 사용 3-3P-User -4/-IPv4 -6/ -IPv6

3. 리눅스 컬 명령 종료 코드

다음은 열악한 환경에서 나타날 수 있는 리눅스 컬 명령의 오류 코드와 해당 오류 메시지입니다.

-a/--추가                                                                                    ~                      ​
데이터 전송을 위한 HTTP POST 방식
랜덤 데이터에 대한 소켓 경로 (SSL)
--cert-type 7674b22ef33c73b930516fd6bc30b7a3 ​​​​​​​​
--키 -type 7674b22ef33c73b930516fd6bc30b7a3                                                                     ​​​​​​
--엔진 db20373c7b261c625fd6775baa65beba ​​​​​​
- -capath 995e341fca19daab8b42459f218e7f10                                                                                                ~                                          .
--암호 3644bb9d5d4c09a6b3785abd2a29e741                                                                                                                       gzip)
--create-dirs                                                   
- -ftp-create-dirs                                                       원격 디렉터리가 없으면 원격 디렉터리를 만듭니다.
--ftp-method [multicwd/nocwd/singlecw d] CWD 사용 제어
--ftp-pasv
-G/--get     Help
-H/--header 15a73cc5312745b1b00671f6e690e36a
출력 시 프로토콜 헤더 정보 포함
-J/-junk-session-cookies
-interface & lt; 인터페이스 & gt;
--krb4 d01d6777fee22c1abcc265b0d6170d56                                               ​​​
-K/- -CONFIG 的 지정된 구성 파일 읽기
-l/-list-only FTP 디렉터리의 파일 이름 나열
-Limit -rate & lt; rate & gt; 전송 속도 설정
NETRC 파일에서 사용자 이름과 비밀번호를 읽습니다.
HTTP 프록시 사용
-
-p/-ftp-port & lt ;주소> ; 범위 파일                                                                             ~                        ​ ) 임의 파일
-R/--remote-time                                                               전송에 문제가 있을 때 재시도 횟수
--retry-delay aa092f8bede029cc8130faec7db09c4d
-V/--version                                                               > -속도-시간                                                                    필요한 시간을 단축하세요.기본값은 30
-Y/-Speed-Limit 로 전송 속도 제한을 중지하고, 속도 시간은 '초-z/-time-cond
-0 //- -http1.0 2/--sslv2                                                                                              ~             -3/-SSLV3
--3p-Quote
-3p-을 통해 URL
사용자 이름과 비밀번호를 사용하여 제3자 전송 수행
IP4 사용
IP6 사용
3941424345474849515253545556585960616263 1maximum 파일 크기를 초과했습니다. 64 requested ftp ssl 레벨이 실패했습니다. 65 indate 데이터를 작성하는 것은 실패한 되감기가 필요합니다. 67사용자 이름, 비밀번호 등이 허용되지 않아 컬 로그인에 실패했습니다.
退 Out码 错误描述
1 지원되지 않는 프로토콜입니다. 이 컬 빌드는 이 프로토콜을 지원하지 않습니다.
2 초기화에 실패했습니다.
3 URL 형식이 잘못되었습니다. 구문이 올바르지 않습니다.
5 프록시를 확인할 수 없습니다. 지정된 프록시 호스트를 확인할 수 없습니다.
6 호스트를 확인할 수 없습니다. 해당 원격 호스트가 확인되지 않았습니다.
7 호스트에 연결하지 못했습니다.
8 FTP 이상한 서버 응답입니다. 서버에서 보낸 데이터 컬을 구문 분석할 수 없습니다.
9 FTP 액세스가 거부되었습니다. 서버가 로그인을 거부했거나 사용자가 접근하려는 특정 리소스나 디렉토리에 대한 액세스를 거부했습니다. 대부분의 경우 서버에 존재하지 않는 디렉터리로 변경하려고 했습니다.
11 FTP 이상한 PASS 응답입니다. Curl이 PASS 요청에 보낸 응답을 구문 분석할 수 없습니다.
13 FTP 이상한 PASV 응답, Curl이 PASV 요청에 보낸 응답을 구문 분석할 수 없습니다.
14 FTP 이상한 227 형식입니다. Curl은 서버가 보낸 227줄을 구문 분석할 수 없습니다.
15 FTP는 호스트를 얻을 수 없습니다. 227라인에서 얻은 호스트 IP를 확인할 수 없습니다.
17 FTP가 바이너리를 설정할 수 없습니다. 전송 방법을 바이너리로 변경할 수 없습니다.
18 부분 파일입니다. 파일의 일부만 전송되었습니다.
19 FTP가 지정된 파일을 다운로드/액세스할 수 없습니다. RETR(또는 유사한) 명령이 실패했습니다.
21 FTP 인용 오류입니다. quote 명령이 서버에서 오류를 반환했습니다.
22 HTTP 페이지가 검색되지 않았습니다. 요청한 URL을 찾을 수 없거나 HTTP 오류 코드가 400 이상인 다른 오류를 반환했습니다. 이 반환 코드는 -f/--fail이 사용된 경우에만 나타납니다.
23 쓰기 오류입니다. Curl은 로컬 파일 시스템이나 이와 유사한 곳에 데이터를 쓸 수 없습니다.
25 FTP는 파일을 STOR할 수 없습니다. 서버가 FTP 업로드에 사용되는 STOR 작업을 거부했습니다.
26 읽기 오류입니다. 다양한 읽기 문제.
27 메모리 부족. 메모리 할당 요청이 실패했습니다.
28 작업 시간이 초과되었습니다. 조건에 따라 지정된 시간 초과 기간에 도달했습니다.
30 FTP PORT에 실패했습니다. PORT 명령이 실패했습니다. 모든 FTP 서버가 PORT 명령을 지원하는 것은 아닙니다. 대신 PASV를 사용하여 전송을 시도해 보세요!
31 FTP는 REST를 사용할 수 없습니다. REST 명령이 실패했습니다. 이 명령은 재개된 FTP 전송에 사용됩니다.
33 HTTP 범위 오류입니다. 범위 "명령"이 작동하지 않았습니다.
34 HTTP 게시 오류입니다. 내부 요청 후 생성 오류입니다.
35 SSL 연결 오류입니다. SSL 핸드쉐이킹에 실패했습니다.
36 FTP 잘못된 다운로드 재개입니다. 이전에 중단된 다운로드를 계속할 수 없습니다.
37 FILE에서 파일을 읽을 수 없습니다. 파일을 열지 못했습니다. 권한?
38 LDAP를 바인딩할 수 없습니다. LDAP 바인드 작업이 실패했습니다.
LDAP 검색에 실패했습니다.
기능을 찾을 수 없습니다. 필수 LDAP 기능을 찾을 수 없습니다.
콜백에 의해 중단되었습니다. 애플리케이션이 컬에게 작업을 중단하라고 지시했습니다.
내부 오류입니다. 잘못된 매개변수로 함수가 호출되었습니다.
인터페이스 오류입니다. 지정된 발신 인터페이스를 사용할 수 없습니다.
리디렉션이 너무 많습니다. 리디렉션을 따를 때 컬이 최대값에 도달했습니다.
알 수 없는 TELNET 옵션이 지정되었습니다.
잘못된 텔넷 옵션
피어의 SSL 인증서 또는 SSH MD5 지문이 없습니다. 알았어.
서버가 아무 응답도 하지 않았습니다. 이는 오류로 간주됩니다.
SSL 암호화 엔진을 찾을 수 없습니다.
SSL 암호화 엔진을 다음으로 설정할 수 없습니다. 기본값입니다.
네트워크 데이터 전송에 실패했습니다.
네트워크 데이터 수신에 실패했습니다.
로컬 인증서에 문제가 있습니다.
할 수 없습니다 지정된 SSL 암호를 사용하세요.
피어 인증서는 알려진 CA 인증서로 인증될 수 없습니다.
인식되지 않는 전송 인코딩.
잘못된 LDAP URL.
68 TFTP 서버에서 파일을 찾을 수 없습니다.
69 TFTP 서버에 권한 문제가 있습니다.
70 TFTP 서버의 디스크 공간이 부족합니다.
71 Ille 여자 TFTP 작동 .
72 알 수 없는 TFTP 전송 ID.
73 파일이 이미 존재합니다(TFTP).
74 해당 사용자가 없습니다(TFTP).
75 문자 변환 실패했습니다.
76 문자 변환 기능이 필요합니다.
77 SSL CA 인증서(경로? 액세스 권한?) 읽기에 문제가 있습니다.
78 URL에 참조된 리소스는 존재하지 않습니다.
79 SSH 세션 중에 지정되지 않은 오류가 발생했습니다.
80 SSL 연결을 종료하지 못했습니다.
82 CRL 파일을 로드할 수 없습니다. 누락되었거나 잘못되었습니다. 형식(7.19.0에 추가됨).
83 Issuer 확인 실패(7.19.0에 추가됨).
XX 향후 릴리스에서는 더 많은 오류 코드가 여기에 표시됩니다. 기존의 것은 절대 변하지 않을 것입니다.

4. 일반적인 사용법

1. 다운로드(옵션:-o 또는 옵션:-O)

1.1 다운로드 페이지:

curl -o dodo1.jpg http:www.linux.com/ dodo1.JPG
# -O 뒤의 URL은 특정 파일에 국한되어야 합니다. 그렇지 않으면 캡처되지 않습니다.
컬 -O http://www.linux.com/dodo1.JPG

1.2: 루프 다운로드
다운로드한 사진의 첫 번째 부분의 이름은 동일할 수 있지만 마지막 꼬리 척추의 이름은 다를 수 있습니다. 이렇게 하면 dodo1, dodo2, dodo3, dodo4 및 dodo5
가 모두 저장됩니다. 컬 -O http://www.linux.com/dodo[1-5].JPG

1.3: hello/dodo1에서 다운로드하고 이름을 바꾸세요
. 다운로드 후 JPG 파일은 hello_dodo1.JPG가 되며, 다른 파일에도 마찬가지이므로 파일 덮어쓰기를 효과적으로 방지할 수 있습니다.
컬 -o #1_#2.JPG http://www.linux.com/{hello ,bb}/ dodo[1-5].JPG

다운받은 hello와 bb의 파일명은 모두 dodo1, dodo2, dodo3, dodo4, dodo5이기 때문입니다. 따라서 두 번째 다운로드가 첫 번째 다운로드를 덮어쓰게 되므로 파일 이름을 바꿔야 합니다.
컬 -O http://www.linux.com/{hello,bb}/dodo[1-5].JPG

1.4: 청크로 다운로드(옵션: -r)
컬 -r 0-100 -o dodo1_part1.JPG http://www.linux.com/dodo1.JPG
컬 -r 100-200 -o dodo1_part2.JPG http://www.linux.com/dodo1.JPG
컬 -r 200- -o dodo1_part3 .JPG http://www.linux.com/dodo1.JPG
cat dodo1_part* > dodo1.JPG #이 방법으로 dodo1.JPG

1.5의 내용을 볼 수 있습니다. ftp를 통해 파일을 다운로드합니다(옵션: -u).
컬은 ftp를 통해 파일을 다운로드할 수 있습니다. 컬은 ftp에서 다운로드하기 위한 두 가지 구문을 제공합니다.
컬 -O -u 사용자 이름:암호 ftp://www.linux.com/dodo1.JPG
컬 -O ftp://사용자 이름:암호@ www.linux.com/dodo1.JPG

1.6: 다운로드, 진행률 표시줄 표시(옵션: -#) 또는 진행률 표시줄 표시 안 함(옵션: -s)
컬 -# -O http://www. .com/dodo1.JPG
컬 -s -O http://www.linux.com/dodo1.JPG

1.7, 다운로드, 중단점에서 전송 재개(-Cab76cfca1a1dc7ff1291dcdf873f72ec)
중단점에서 전송 재개, 계속 파일 헤더의 지정된 위치에서 다운로드/업로드합니다. 오프셋 값이 "-"인 경우 컬은 자동으로 파일의 시작 위치를 식별하고 전송을 시작합니다. centos6.8.iso -C - http://mirrors.aliyun.com/centos/6.8/isos/x86_64/CentOS-6.8-x86_64-minimal.iso
컬 -C -O http://www.linux.com /dodo1.JPG

2. 파일 업로드(옵션: -T)

curl -T dodo1.JPG -u 사용자 이름: 비밀번호 ftp://www.linux.com/img/

3 . 위조된 소스 페이지|가짜 리퍼러|핫 링크(옵션: -e)

많은 서버가 액세스를 제어하기 위해 http 액세스의 리퍼러를 확인합니다. 예를 들어 홈페이지를 먼저 방문한 후 홈페이지의 이메일 페이지에 접속합니다. 여기서 이메일 주소의 리퍼러 주소는 홈페이지에 성공적으로 접속한 후의 페이지 주소입니다. 홈페이지 주소가 아니라 도용된 연결로 판단됩니다

#이렇게 하면 서버가 www.linux.com
에서 링크를 클릭한 것으로 인식하게 됩니다. 컬 -e "www.linux.com" http:// mail.linux.com
#E 식구들에게 사랑을 전해주세요. 저는 Baidu 출신입니다
컬 -e http://baidu.com http://aiezu.com

4. 가짜 프록시 장비(모조 브라우저)

일부 웹사이트는 특정 브라우저를 사용해야 액세스할 수 있고, 일부 웹사이트는 특정 버전을 사용해야 합니다. Curl의 내장 옵션: -A를 사용하면 웹사이트에 액세스하기 위한 브라우저를 지정할 수 있습니다

컬 -A "Mozilla/4.0(호환; MSIE 8.0; Windows NT 5.0)" http://www.linux.com
#Tell the 여러분, 저는 GOOGLE 크롤러 스파이더입니다(실제로는 컬 명령입니다)
컬 -A "Mozilla/5.0 (호환; Googlebot/2.1; +http://www.google.com/bot.html)" http: //aiezu.com
#Aiezu에게 전해주세요. 저는 WeChat에 내장된 브라우저를 사용하고 있습니다
컬 -A "Mozilla/5.0 AppleWebKit/600 Mobile MicroMessenger/6.0" http://aiezu.com

5. request

5.1. http 요청 헤더 설정(또는 옵션:-H 또는 옵션:--head)

컬 -H "Cache-Control:no-cache" http://aiezu.com

5.2. 서버 및 기타 포트(옵션::-x)

#인터넷에 접속하기 위해 프록시 서버를 사용해야 하는 경우가 많습니다(예: 프록시 서버를 사용하여 인터넷에 접속하거나, 귀하의 IP 주소가 다른 사람에 의해 차단되는 경우). 다른 사람의 웹사이트에서는 컬을 사용하세요.) 다행스럽게도 컬은 내장 옵션인 -x를 사용하여 프록시 설정을 지원합니다
컬 -x 192.168.100.100:1080 http://www.linux.com

6, http response 헤더

6.1. http 응답 헤더 보기(옵션:-I)
# 이 사이트의 http 헤더가 어떻게 생겼는지 확인하세요
컬 -I http://aiezu.com
출력:
HTTP/1.1 200 OK
날짜: 금요일 , 2016년 11월 25일 16:45:49 GMT
서버: Apache
Set-Cookie: rox__Session=abdrt8vesprhnpc3f63p1df7j4; path=/
만료: 1981년 11월 19일 목요일 08:52:00 GMT
캐시 제어: no-store, no -cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: Accept-Encoding
Content-Type: text/html; charset=utf-8

http 저장 응답의 헤더 정보(옵션: -D)
컬 -D cookied.txt http://www.linux.com
실행 후 쿠키 정보는 cookied.txt에 저장됩니다
참고: -c(소문자) 생성된 쿠키는 -D의 쿠키와 다릅니다.

7. 양식 데이터 보내기

curl -F "pic=@logo.png" -F "site=aiezu" http://aiezu.com/

8. 8.1. 쿠키 보내기(옵션:-b) #일부 웹사이트에서는 세션 정보를 기록하기 위해 쿠키를 사용합니다. 크롬과 같은 브라우저의 경우 쿠키 정보를 쉽게 처리할 수 있지만, 컬에 관련 매개변수를 추가하면 쿠키도 쉽게 처리할 수 있습니다 컬 -b "domain=aiezu.com" http://aiezu.com

#많은 웹사이트 그들은 모두 모니터링합니다 귀하의 쿠키 정보는 귀하가 규칙에 따라 해당 웹사이트를 방문하는지 여부를 판단하기 위해 저장된 쿠키 정보를 사용해야 합니다. 내장 옵션: -b

컬 -b cookiec.txt http://www.linux.com

8.2. http 응답에 쿠키 정보를 저장합니다(옵션: -c)
실행 후 쿠키 정보는 http 응답은 cookiec.txt
에 저장됩니다. 컬 -c cookiec.txt http://www.linux.com



9. URL 테스트

9.1 URL에 연결할 수 있는지 테스트합니다. -v http://www.linux.com9.2. 웹페이지 반환 값 테스트(옵션:-w [형식])

컬 -o /dev/null -s -w %{http_code} www.linux.com


10. 방문한 웹 페이지 저장(>>)

2.1: Linux의 리디렉션 기능을 사용하여 컬 http://www.linux.com >>>

11. 요청 방법


curl -i -v -H '' -X POST -d '' http:www.test.com/a/b 그중 -X POST -d, -X GET -d, -X PUT -d는 각각 -F, -G -d, -P와 동일합니다.게시 요청을 예로 들어보세요: 11.1, -X POST -d

(11.1.1), POST 애플리케이션/ x-www-form-urlencoded

application/x-www-form-urlencoded가 기본값입니다.
curl -X POST -d "param1=value1¶m2=value2" http://localhost:3000/data

curl -H와 동일합니다. "Content-Type:application/ x-www-form-urlencoded" -X POST -d "param1=value1¶m2=value2" http://localhost:3000/data
데이터 파일 사용
컬 -X POST -d "@data .txt" http:// localhost:3000/data
data.txt의 내용은 다음과 같습니다. param1=value1¶m2=value2

(11.1.2), POST application/json
컬 -H "Content-Type:application /json" -X POST -d '{ "key1":"value1","key2":"value2"}' http://localhost:3000/data
데이터 파일을 사용하는 경우:
컬 -X POST -d " @data.json" http://localhost :3000/data
data.json의 내용은 다음과 같습니다: {"key1":"value1","key2":"value2"}

또 다른 예:

컬 -H "콘텐츠 유형:application/json" -X POST -d "{"app_key":"$appKey","time_stamp":"$time"}" http://www.test.com.cn/a/b

11.2、-F
컬 -v - H "토큰: 222" -F "file=@/Users/funglio/Downloads/401.png" localhost:8000/api/v1/upimg

curl -f http: //www.linux.com/error

11.3. 기타 예


(11.3.1),

curl -X POST "http://www.test.com/e/f" -H "Content-Type :application/x-www-form-urlencoded; charset=UTF-8"

-d "a=b"

-d "c=d"

-d "e=f"

-d "g=h"

(11.3.2), 오류: 컬 - i -G -d "a=b#1&c=d" http://www.test.com/e/f
올바른: urlencode를 사용하여 매개변수 값을 변환하세요. 특수 기호
컬 -i -G -d "a=b%231&c=d" http://www.test.com/e/f

12.

curl -v可以显示一次http通信的整个过程,包括端口连接和http request头信息。
如果觉得还不够,那么下面的命令可以查看更详细的通信过程:
curl --trace output.txt www.baidu.com 或者 curl --trace-ascii output.txt www.baidu.com 
运行后,请打开output.txt文件查看。
curl --trace output.txt  http://www.baidu.com
curl --trace-ascii output2.txt  http://www.baidu.com
curl --trace output3.txt --trace-time http://www.baidu.com
curl --trace-ascii output4.txt --trace-time http://www.baidu.com 

举例:有需求每5分钟请求一次http://www.test.com/a/b生成一个日志文件。希望一月的日志(正确的和错误的)能写入一个日志文件
day=`date +%F`
logfile='/var/logs/www.test.com_'`date +%Y%m`'.log'
/usr/bin/echo -e "\n\n[${day}] Start request \n " >> ${logfile}
/bin/curl -v "http://www.test.com/a/b" -d "ccccc" 1>> ${logfile} 2>> ${logfile} --trace-time
/usr/bin/echo -e "\n\n[${day}] End request\n" >> ${logfile}

13、显示抓取错误

curl -f http://www.linux.com/error

相关推荐:《Linux视频教程

위 내용은 리눅스 컬이 뭐야?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:리눅스 탭이 뭐야?다음 기사:리눅스 탭이 뭐야?