zoukankan      html  css  js  c++  java
  • Linux curl命令详解

    linux curl是通过url语法在命令行下上传或下载文件的工具软件,它支持http,https,ftp,ftps,telnet等多种协议,常被用来抓取网页和监控Web服务器状态。

    语法:# curl [option] [url]

    常见参数:

    用参数

    参数描述
    -I/--head 只显示传输文档,经常用于测试连接本身
    -o/--output 把输出写到该文件中,必须输入保存文件名
    -O/--remote-name 把输出写到该文件中,保留远程文件的文件名
    -F/--form 模拟表单提交
    -s/--silent 静默模式,不输出任何东西
    -S/--show-error 显示错误,在选项 -s 中,当 curl 出现错误时将显示
    -L/--location 跟踪重定向
    -f/--fail 不输出错误
    -n/--netrc 从netrc文件中读取用户名和密码
    --netrc-optional 使用 .netrc 或者 URL来覆盖-n
    --ntlm 使用 HTTP NTLM 身份验证
    -N/--no-buffer 禁用缓冲输出
    -p/--proxytunnel 使用HTTP代理
    --proxy-anyauth 选择任一代理身份验证方法
    --proxy-basic 在代理上使用基本身份验证
    --proxy-digest 在代理上使用数字身份验证
    --proxy-ntlm 在代理上使用ntlm身份验证
    -P/--ftp-port 使用端口地址,而不是使用PASV
    -M/--manual 显示全手动
    -Q/--quote 文件传输前,发送命令到服务器
    -r/--range 检索来自HTTP/1.1或FTP服务器字节范围
    --range-file 读取(SSL)的随机文件
    -R/--remote-time 在本地生成文件时,保留远程文件时间
    --retry 传输出现问题时,重试的次数
    --retry-delay 传输出现问题时,设置重试间隔时间
    --retry-max-time 传输出现问题时,设置最大重试时间
    --socks4 用socks4代理给定主机和端口
    --socks5 用socks5代理给定主机和端口
    -t/--telnet-option Telnet选项设置
    --trace 对指定文件进行debug
    --trace-ascii Like 跟踪但没有hex输出
    --trace-time 跟踪/ 详细输出时,添加时间戳
    -T/--upload-file 上传文件
    -u/--user 设置服务器的用户和密码
    -U/--proxy-user 设置代理用户名和密码
    -V/--version 显示版本信息
    -w/--write-out [format] 什么输出完成后
    -x/--proxy 在给定的端口上使用HTTP代理
    -X/--request 指定什么命令
    -y/--speed-time 放弃限速所要的时间。默认为30
    -Y/--speed-limit 停止传输速度的限制,速度时间'秒
    -z/--time-cond 传送时间设置
    -0/--http1.0 使用HTTP 1.0
    -1/--tlsv1 使用TLSv1(SSL)
    -2/--sslv2 使用SSLv2的(SSL)
    -3/--sslv3 使用的SSLv3(SSL)
    --3p-quote like -Q for the source URL for 3rd party transfer
    --3p-url 使用url,进行第三方传送
    --3p-user 使用用户名和密码,进行第三方传送
    -4/--ipv4 使用IP4
    -6/--ipv6 使用IP6
    -#/--progress-bar 用进度条显示当前的传送状态

    常用参数分类

    # 调试类
    -v, --verbose                          输出信息
    -q, --disable                          在第一个参数位置设置后 .curlrc 的设置直接失效,这个参数会影响到 -K, --config -A, --user-agent -e, --referer
    -K, --config FILE                      指定配置文件
    -L, --location                         跟踪重定向 (H)
    
    # CLI显示设置
    -s, --silent                           Silent模式。不输出任务内容
    -S, --show-error                       显示错误. 在选项 -s 中,当 curl 出现错误时将显示
    -f, --fail                             不显示 连接失败时HTTP错误信息
    -i, --include                          显示 response的header (H/F)
    -I, --head                             仅显示 响应文档头
    -l, --list-only                        只列出FTP目录的名称 (F)
    -#, --progress-bar                     以进度条 显示传输进度
    
    # 数据传输类
    -X, --request [GET|POST|PUT|DELETE|…]  使用指定的 http method 例如 -X POST
    -H, --header <header>                  设定 request里的header 例如 -H "Content-Type: application/json"
    -e, --referer                          设定 referer (H)
    -d, --data <data>                      设定 http body 默认使用 content-type application/x-www-form-urlencoded (H)
        --data-raw <data>                  ASCII 编码 HTTP POST 数据 (H)
        --data-binary <data>               binary 编码 HTTP POST 数据 (H)
        --data-urlencode <data>            url 编码 HTTP POST 数据 (H)
    -G, --get                              使用 HTTP GET 方法发送 -d 数据 (H)
    -F, --form <name=string>               模拟 HTTP 表单数据提交 multipart POST (H)
        --form-string <name=string>        模拟 HTTP 表单数据提交 (H)
    -u, --user <user:password>             使用帐户,密码 例如 admin:password
    -b, --cookie <data>                    cookie 文件 (H)
    -j, --junk-session-cookies             读取文件中但忽略会话cookie (H)
    -A, --user-agent                       user-agent设置 (H)
    
    # 传输设置
    -C, --continue-at OFFSET               断点续转
    -x, --proxy [PROTOCOL://]HOST[:PORT]   在指定的端口上使用代理
    -U, --proxy-user USER[:PASSWORD]       代理用户名及密码
    
    # 文件操作
    -T, --upload-file <file>               上传文件
    -a, --append                           添加要上传的文件 (F/SFTP)
    
    # 输出设置
    -o, --output <file>                    将输出写入文件,而非 stdout
    -O, --remote-name                      将输出写入远程文件
    -D, --dump-header <file>               将头信息写入指定的文件
    -c, --cookie-jar <file>                操作结束后,要写入 Cookies 的文件位置

    一、Linux curl用法举例:

    1. linux curl抓取网页:

    抓取百度:

    curl http://www.baidu.com       //默认为get请求

    如发现乱码,可以使用iconv转码
    curl http://iframe.ip138.com/ic.asp|iconv -fgb2312

    2. Linux curl使用代理:

    linux curl使用http代理抓取页面:
    curl -x 111.95.243.36:80 http://iframe.ip138.com/ic.asp|iconv -fgb2312
    curl -x 111.95.243.36:80 -U aiezu:password http://www.baidu.com

    使用socks代理抓取页面:
    curl --socks4 202.113.65.229:443 http://iframe.ip138.com/ic.asp|iconv -fgb2312
    curl --socks5 202.113.65.229:443 http://iframe.ip138.com/ic.asp|iconv -fgb2312

    代理服务器地址可以从爬虫代理上获取。

    3. linux curl处理cookies

    接收cookies:
    curl -c /tmp/cookies http://www.baidu.com #cookies保存到/tmp/cookies文件

    发送cookies:
    curl -b "key1=val1;key2=val2;" http://www.baidu.com #发送cookies文本
    curl -b /tmp/cookies http://www.baidu.com #从文件中读取cookies

    4. linux curl发送数据:

    linux curl get方式提交数据:
    curl -G -d "name=value&name2=value2" http://www.baidu.com

    linux curl post方式提交数据:
    curl -d "name=value&name2=value2" http://www.baidu.com #post数据
    curl -d a=b&c=d&txt@/tmp/txt http://www.baidu.com #post文件

    以表单的方式上传文件:
    curl -F file=@/tmp/me.txt http://www.aiezu.com

    相当于设置form表单的method="POST"和enctype='multipart/form-data'两个属性。

    5. linux curl http header处理:

    设置http请求头信息:
    curl -A "Mozilla/5.0 Firefox/21.0" http://www.baidu.com #设置http请求头User-Agent
    curl -e "http://pachong.org/" http://www.baidu.com #设置http请求头Referer
    curl -H "Connection:keep-alive User-Agent: Mozilla/5.0" http://www.aiezu.com

    设置http响应头处理:
    curl -I http://www.aiezu.com #仅仅返回header
    curl -D /tmp/header http://www.aiezu.com #将http header保存到/tmp/header文件

    6. linux curl认证:
    curl -u aiezu:password http://www.aiezu.com #用户名密码认证
    curl -E mycert.pem https://www.baidu.com #采用证书认证

    6. 其他:

    curl -# http://www.baidu.com #以“#”号输出进度条
    curl -o /tmp/aiezu http://www.baidu.com #保存http响应到/tmp/aiezu

    linux 使用curl小经验教训:
    http请求地址的url要使用""括起来。当有存在多个参数使用&连接时可能会出错。

  • 相关阅读:
    从零开始~
    SVN
    了解下几个证书~~
    重要的技术发展趋势
    求职路上英语面试试题问答大全
    C语言比java重要吗?
    开源solr搜索服务器配置
    全文索引 与 Like 的实现原理
    nginx搭建多个站点
    .Solr构建索引查询索引
  • 原文地址:https://www.cnblogs.com/feng0815/p/13742104.html
Copyright © 2011-2022 走看看