• curl命令使用


    cURL:command line tool and library for transferring data with URLs

    cURL supports DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, Telnet and TFTP. curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, HTTP/2, cookies, user+password authentication (Basic, Plain, Digest, CRAM-MD5, NTLM, Negotiate and Kerberos), file transfer resume, proxy tunneling and more.

    使用

    curl (选项) 参数
    -a/--append 上传文件时,附加到目标文件 -A/--user-agent 设置用户代理发送给服务器 -anyauth 可以使用“任何”身份验证方法 -b/--cookie cookie字符串或文件读取位置 --basic 使用HTTP基本验证 -B/--use-ascii 使用ASCII /文本传输 -c/--cookie-jar 操作结束后把cookie写入到这个文件中 -C/--continue-at 断点续转 -d/--data HTTP POST方式传送数据 --data-ascii 以ascii的方式post数据 --data-binary 以二进制的方式post数据 --negotiate 使用HTTP身份验证 --digest 使用数字身份验证 --disable-eprt 禁止使用EPRT或LPRT --disable-epsv 禁止使用EPSV -D/--dump-header 把header信息写入到该文件中 --egd-file 为随机数据(SSL)设置EGD socket路径 --tcp-nodelay 使用TCP_NODELAY选项 -e/--referer 来源网址 -E/--cert 客户端证书文件和密码 (SSL) --cert-type 证书文件类型 (DER/PEM/ENG) (SSL) --key 私钥文件名 (SSL) --key-type 私钥文件类型 (DER/PEM/ENG) (SSL) --pass 私钥密码 (SSL) --engine 加密引擎使用 (SSL). "--engine list" for list --cacert CA证书 (SSL) --capath CA目录 (made using c_rehash) to verify peer against (SSL) --ciphers SSL密码 --compressed 要求返回是压缩的形势 (using deflate or gzip) --connect-timeout 设置最大请求时间 --create-dirs 建立本地目录的目录层次结构 --crlf 上传是把LF转变成CRLF -f/--fail 连接失败时不显示http错误 --ftp-create-dirs 如果远程目录不存在,创建远程目录 --ftp-method [multicwd/nocwd/singlecwd] 控制CWD的使用 --ftp-pasv 使用 PASV/EPSV 代替端口 --ftp-skip-pasv-ip 使用PASV的时候,忽略该IP地址 --ftp-ssl 尝试用 SSL/TLS 来进行ftp数据传输 --ftp-ssl-reqd 要求用 SSL/TLS 来进行ftp数据传输 -F/--form 模拟http表单提交数据 --form-string 模拟http表单提交数据 -g/--globoff 禁用网址序列和范围使用{}和[] -G/--get 以get的方式来发送数据 -H/--header 自定义头信息传递给服务器 --ignore-content-length 忽略的HTTP头信息的长度 -i/--include 输出时包括protocol头信息 -I/--head 只显示请求头信息 -j/--junk-session-cookies 读取文件进忽略session cookie --interface 使用指定网络接口/地址 --krb4 使用指定安全级别的krb4 -k/--insecure 允许不使用证书到SSL站点 -K/--config 指定的配置文件读取 -l/--list-only 列出ftp目录下的文件名称 --limit-rate 设置传输速度 --local-port 强制使用本地端口号 -m/--max-time 设置最大传输时间 --max-redirs 设置最大读取的目录数 --max-filesize 设置最大下载的文件总量 -M/--manual 显示全手动 -n/--netrc 从netrc文件中读取用户名和密码 --netrc-optional 使用 .netrc 或者 URL来覆盖-n --ntlm 使用 HTTP NTLM 身份验证 -N/--no-buffer 禁用缓冲输出 -o/--output 把输出写到该文件中 -O/--remote-name 把输出写到该文件中,保留远程文件的文件名 -p/--proxytunnel 使用HTTP代理 --proxy-anyauth 选择任一代理身份验证方法 --proxy-basic 在代理上使用基本身份验证 --proxy-digest 在代理上使用数字身份验证 --proxy-ntlm 在代理上使用ntlm身份验证 -P/--ftp-port
    使用端口地址,而不是使用PASV -q 作为第一个参数,关闭 .curlrc -Q/--quote 文件传输前,发送命令到服务器 -r/--range 检索来自HTTP/1.1或FTP服务器字节范围 --range-file 读取(SSL)的随机文件 -R/--remote-time 在本地生成文件时,保留远程文件时间 --retry 传输出现问题时,重试的次数 --retry-delay 传输出现问题时,设置重试间隔时间 --retry-max-time 传输出现问题时,设置最大重试时间 -s/--silent 静默模式。不输出任何东西 -S/--show-error 显示错误 --socks4 用socks4代理给定主机和端口 --socks5 用socks5代理给定主机和端口 --stderr -t/--telnet-option Telnet选项设置 --trace 对指定文件进行debug --trace-ascii Like --跟踪但没有hex输出 --trace-time 跟踪/详细输出时,添加时间戳 -T/--upload-file 上传文件 --url Spet URL to work with -u/--user 设置服务器的用户和密码 -U/--proxy-user 设置代理用户名和密码 -w/--write-out [format] 什么输出完成后 -x/--proxy 在给定的端口上使用HTTP代理 -X/--request 指定什么命令 -y/--speed-time 放弃限速所要的时间,默认为30 -Y/--speed-limit 停止传输速度的限制,速度时间

    来自: http://man.linuxde.net/curl

    常用选项

    curl命令选项很多,这里只列出常用的,以后不断更新。

    -A:随意指定自己这次访问所宣称的自己的浏览器信息

    -b/--cookie <name=string/file> cookie字符串或文件读取位置,使用option来把上次的cookie信息追加到http request里面去。

    -c/--cookie-jar <file> 操作结束后把cookie写入到这个文件中

    -C/--continue-at <offset>  断点续转,让curl自动推断出正确的续传位置使用-C - 。

    -d/--data <data>   HTTP POST方式传送数据

    -D/--dump-header <file> 把header信息写入到该文件中

    -F/--form <name=content> 模拟http表单提交数据

    -v/--verbose 小写的v参数,用于打印更多信息,包括发送的请求信息,这在调试脚本是特别有用。

    -m/--max-time <seconds> 指定处理的最大时长

    -H/--header <header> 指定请求头参数

    -s/--slient 减少输出的信息,比如进度

    --connect-timeout <seconds> 指定尝试连接的最大时长

    -x/--proxy <proxyhost[:port]> 指定代理服务器地址和端口,端口默认为1080

    -T/--upload-file <file> 指定上传文件路径

    -o/--output <file> 指定输出文件名称

    --retry <num> 指定重试次数

    -e/--referer <URL> 指定引用地址

    -I/--head 仅返回头部信息,使用HEAD请求

    -u/--user <user[:password]>设置服务器的用户和密码

    -O:按照服务器上的文件名,自动存在本地

    -r/--range <range>检索来自HTTP/1.1或FTP服务器字节范围

    -T/--upload-file <file> 上传文件

    使用示例

    下载单个文件,默认将输出打印到标准输出中(STDOUT)中

    curl http://www.centos.org

    通过-o/-O选项保存下载的文件到指定的文件中:
    -o:将文件保存为命令行中指定的文件名的文件中
    -O:使用URL中默认的文件名保存文件到本地

    1 # 将文件下载到本地并命名为mygettext.html
    2 curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html
    3 
    4 # 将文件保存到本地并命名为gettext.html
    5 curl -O http://www.gnu.org/software/gettext/manual/gettext.html

    同样可以使用转向字符">"对输出进行转向输出

    同时获取多个文件

    1 curl -O URL1 -O URL2

    若同时从同一站点下载多个文件时,curl会尝试重用链接(connection)。

    通过-L选项进行重定向
    默认情况下CURL不会发送HTTP Location headers(重定向).当一个被请求页面移动到另一个站点时,会发送一个HTTP Loaction header作为请求,然后将请求重定向到新的地址上。
    例如:访问google.com时,会自动将地址重定向到google.com.hk上。

     1 curl http://www.google.com
     2 <HTML>
     3 <HEAD>
     4     <meta http-equiv="content-type" content="text/html;charset=utf-8">
     5     <TITLE>302 Moved</TITLE>
     6 </HEAD>
     7 <BODY>
     8     <H1>302 Moved</H1>
     9     The document has moved
    10     <A HREF="http://www.google.com.hk/url?sa=p&amp;hl=zh-CN&amp;pref=hkredirect&amp;pval=yes&amp;q=http://www.google.com.hk/&amp;ust=1379402837567135amp;usg=AFQjCNF3o7umf3jyJpNDPuF7KTibavE4aA">here</A>.
    11 </BODY>
    12 </HTML>

    上述输出说明所请求的档案被转移到了http://www.google.com.hk。

    这是可以通过使用-L选项进行强制重定向

    1 # 让curl使用地址重定向,此时会查询google.com.hk站点
    2 curl -L http://www.google.com

    断点续传

    通过使用-C选项可对大文件使用断点续传功能,如:

    1 # 当文件在下载完成之前结束该进程
    2 $ curl -O http://www.gnu.org/software/gettext/manual/gettext.html
    3 ##############             20.1%
    4 
    5 # 通过添加-C选项继续对该文件进行下载,已经下载过的文件不会被重新下载
    6 curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html
    7 ###############            21.1%
    curl URL/File -C 偏移量 
    #偏移量是以字节为单位的整数,如果让curl自动推断出正确的续传位置使用-C -: 
    curl -C -  URL

    对CURL使用网络限速
    通过--limit-rate选项对CURL的最大网络使用进行限制

    1 # 下载速度最大不会超过1000B/second
    2 
    3 curl --limit-rate 1000B -O http://www.gnu.org/software/gettext/manual/gettext.html

    下载指定时间内修改过的文件

    当下载一个文件时,可对该文件的最后修改日期进行判断,如果该文件在指定日期内修改过,就进行下载,否则不下载。
    该功能可通过使用-z选项来实现:

    1 # 若yy.html文件在2011/12/21之后有过更新才会进行下载
    2 curl -z 21-Dec-11 http://www.example.com/yy.html

    CURL授权

    在访问需要授权的页面时,可通过-u选项提供用户名和密码进行授权

    1 curl -u username:password URL
    2 
    3 # 通常的做法是在命令行只输入用户名,之后会提示输入密码,这样可以保证在查看历史记录时不会将密码泄露
    4 curl -u username URL

    从FTP服务器下载文件

    CURL同样支持FTP下载,若在url中指定的是某个文件路径而非具体的某个要下载的文件名,CURL则会列出该目录下的所有文件名而并非下载该目录下的所有文件

    1 # 列出public_html下的所有文件夹和文件
    2 curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/
    3 
    4 # 下载xss.php文件
    5 curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php

    上传文件到FTP服务器

    通过 -T 选项可将指定的本地文件上传到FTP服务器上

    # 将myfile.txt文件上传到服务器
    curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com
    
    # 同时上传多个文件
    curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.testserver.com
    
    # 从标准输入获取内容保存到服务器指定的文件中
    curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt

    获取更多信息

    通过使用 -v 和 -trace获取更多的链接信息

    通过字典查询单词

    1 # 查询bash单词的含义
    2 curl dict://dict.org/d:bash
    3 
    4 # 列出所有可用词典
    5 curl dict://dict.org/show:db
    6 
    7 # 在foldoc词典中查询bash单词的含义
    8 curl dict://dict.org/d:bash:foldoc

    为CURL设置代理

    -x 选项可以为CURL添加代理功能

    1 # 指定代理主机和端口
    2 curl -x proxysever.test.com:3128 http://google.co.in

    保存与使用网站cookie信息

    1 # 将网站的cookies信息保存到sugarcookies文件中
    2 curl -D sugarcookies http://localhost/sugarcrm/index.php
    3 
    4 # 使用上次保存的cookie信息
    5 curl -b sugarcookies http://localhost/sugarcrm/index.php

    传递请求数据

    默认curl使用GET方式请求数据,这种方式下直接通过URL传递数据
    可以通过 --data/-d 方式指定使用POST方式传递数据

    1 # GET
    2 curl -u username https://api.github.com/user?access_token=XXXXXXXXXX
    3 
    4 # POST
    5 curl -u username --data "param1=value1&param2=value" https://api.github.com
    6 
    7 # 也可以指定一个文件,将该文件中的内容当作数据传递给服务器端
    8 curl --data @filename https://github.api.com/authorizations

    注:默认情况下,通过POST方式传递过去的数据中若有特殊字符,首先需要将特殊字符转义在传递给服务器端,如value值中包含有空格,则需要先将空格转换成%20,如:

    1 curl -d "value%201" http://hostname.com

    在新版本的CURL中,提供了新的选项 --data-urlencode,通过该选项提供的参数会自动转义特殊字符。

    1 curl --data-urlencode "value 1" http://hostname.com

    除了使用GET和POST协议外,还可以通过 -X 选项指定其它协议,如:

    1 curl -I -X DELETE https://api.github.cim
    curl -X PUT -d '[
        {"Min_Int8": "0", "Max_Int8": "100"}
    ]' http://localhost:48082/api/v1/device/5c0e8a259f8fc20001a5d230/command/5c0e8a259f8fc20001a5d22b
    curl -X POST -d '{
        "name":"QuickStartExport",
        "addressable":{
            "name":"HiveMQBroker",
            "protocol":"tcp",
            "address":"broker.hivemq.com",
            "port":1883,
            "publisher":"EdgeXExportPublisher",
            "topic":"EdgeXQuickStartGuide"
        },
        "format":"JSON",
        "filter":{
            "deviceIdentifiers":["Random-Integer-Generator01"]
        },
        "enable":true,
        "destination":"MQTT_TOPIC"
    }' http://localhost:48071/api/v1/registration

    本地套接字访问:

    curl --unix-socket /var/run/docker.sock -X GET http:/v1.39/containers/json
    curl --unix-socket /var/run/docker.sock -X GET http:/containers/json

    上传文件

    1 curl --form "fileupload=@filename.txt" http://hostname/resource

    参考:

    1. CURL常用命令

    2. 15 Practical Linux cURL Command Examples

    3. curl命令

    4. 官网:https://curl.haxx.se/

    5. curl详解

    6. Using curl to automate HTTP jobs

    curl命令

    来自: http://man.linuxde.net/curl
    curl命令

    来自: http://man.linuxde.net/curl
  • 相关阅读:
    Spring集成MyBatis
    UpdatePanel的简单用法(转)
    updatePanel导致JS失效的解决办法(转)
    sql面试题(学生表_课程表_成绩表_教师表)
    javascript深入理解js闭包
    T-SQL利用Case When Then多条件判断
    T-SQL排名函数
    DataTable字符串类型的数字,按照数字类型排序
    Sql 行转列问题总结
    行转列:SQL SERVER PIVOT与用法解释
  • 原文地址:https://www.cnblogs.com/embedded-linux/p/7327657.html
Copyright © 2020-2023  润新知