0%

Linux、Unix 上 Curl 的常用用法

一般写完接口后都需要自己调试,有 UI 界面的比如 PostMan ,但是如果在 Linux 服务器上就需要使用 curl 来调试接口了。

Linux、Unix 上 Curl 的常用用法

1. 访问网站

  • 直接抓取 html 输出在终端

    1
    curl http://cip.cc
  • 跟随网站的 301 跳转

    1
    curl -L http://cip.cc
  • 显示头部与内容

    1
    curl -i http://www.codebelief.com
  • 只显示头部

    1
    curl -i http://www.codebelief.com
  • 自定义 User-Agent

    1
    curl -A "Mozilla/5.0 (Android; Mobile; rv:35.0) Gecko/35.0 Firefox/35.0" http://www.baidu.com
  • 自定义头部 Header

    1
    curl -H "Referer: www.example.com" -H "User-Agent: Custom-User-Agent" http://www.baidu.com

2. 下载文件

  • 将网站文件保存为 my.html

    1
    2
    curl -o my.html baidu.com 
    curl http://baidu.com > test.html
  • 将文件保存为默认文件 index.html

    1
    curl -O baidu.com
  • 同时下载两个文件

    1
    curl -O baidu.com -O http://hao123.com
  • 这样就会把 dodo1,dodo2,dodo3,dodo4,dodo5 全部保存下来

    1
    http://www.linux.com/dodo[1-5].jpg
  • 断点下载,网络中断后可以用这样恢复

    1
    curl -C - -O http://baidu.com
  • 下载速度最大不会超过 1000KB/second

    1
    curl --limit-rate 1000KB -O http://www.baidu.com
  • index.html 文件在 2011/12/21 之后有过更新才会进行下载

    1
    curl -z 21-Dec-11 http://www.baidu.com

3. 授权(开发时,一般给 API 提供 http-basic-auth)

  • 根据提示填写密码

    1
    2
    3
    curl -u username:password Url

    curl -u username url

4. 从 FTP 服务器下载文件

  • 列出 downLoad 文件夹下所有的文件,并非下载

    1
    curl -u ftpUser:ftpPass -O ftp://ftp_server_url/downLoad/
  • 下载 xxx.php 文件

    1
    curl -u ftpUser:ftpPass -O ftp://ftp_server_url/downLoad/xxx.php
  • 是不是和 scp 有点像

    1
    curl -O ftp://ftpUser:ftpPass@ftp_server_url/xxxx.JPG

5. 上传到 FTP 服务器

  • 将 myfile.txt 文件上传到服务器

    1
    curl -u ftpUser:ftpPass -T test.html ftp://ftp.testserver.com
  • 同时上传多个文件

    1
    curl -u ftpUser:ftpPass -T "{file,file}" ftp://ftp.testserver.com
  • 從標準輸入獲取內容儲存到伺服器指定的檔案中

    1
    curl -u ftpUser:ftpPass -T - ftp://ftp.testserver.com/myfile_1.txt

6. 设置代理访问

  • 使用的是 http、https 代理

    1
    curl -x 127.0.0.1:3128 http://google.co.in
  • 使用 sock5 代理

    1
    curl --socks5 127.0.0.1:1080 http://cip.cc
  • 将网站的 cookies 信息保存到 cookieFile 文件中

    1
    curl -D cookieFile http://localhost/sugarcrm/index.php
  • 使用上次保存的 cookie 信息

    1
    curl -b cookieFile http://localhost/sugarcrm/index.php
  • 使用 -c 保存 Cookie

    1
    curl -c "cookie-example" http://www.example.com
  • 使用 -b 导入 cookie

    1
    2
    curl -b "JSESSIONID=D0112A5063D938586B659EF8F939BE24" http://www.example.com
    curl -b "cookie-example" http://www.example.com
  • 使用 Cookie 登录

    1
    2
    curl -c "cookie-login" -d "userName=test&passwd=test" http://www.example.com/login
    curl -b "cookie-login" http://www.example.com/login

8. 请求数据

  • GET 请求

    1
    curl -u username https://api.github.com/user?access_token=XXXXXXXXXX
  • POST 请求 (特殊字符需要进行转义)

    1
    2
    3
    4
    curl -u username --data "param1=value1&param2=value" https://api.github.com

    curl --data-urlencode "value 1" http://hostname.com
    ### url encode auto
  • 指定其他 协议

    1
    curl -I -X DELETE https://api.github.cim

-X POST 是指定请求方式,如果没指定,默认是 POST

9. 伪造 referer(盗链)

  • 以为你是从 www.linux.com 跳转过去

    1
    curl -e "www.linux.com" http://mail.linux.com