前端知识库(lizh)
  • README
  • Bugs
    • 前端调试随笔
    • 浏览器常见问题概览
    • 浏览器兼容问题概览
    • HTML常见问题概览
    • CSS常见问题概览
    • JS常见问题概览
    • 移动端兼容性问题概览
    • 微信小程序开发
    • NodeJs常见问题概览
    • Mac常见问题概览
    • 微信开发遇坑指南
    • Npm包常见问题概览
    • 其他问题汇总
  • Css探索系列
    • CSS基础知识
    • CSS常见问答
    • CSS常见问答02
    • CSS应用示例
    • CSS应用示例02
    • 由Z Index引发的层叠上下文思考
    • 由浮动塌陷引发的块级格式上下文思考
    • CSS探索系列 Flex布局
    • CSS探索系列 Margin
    • CSS探索系列 Auto关键字
    • CSS探索系列 Gradient
    • CSS探索系列 Line Height
    • CSS探索系列 元素居中
    • CSS探索系列 动画
    • 为什么使用PostCSS处理CSS?
    • 重新认识伪类与伪元素
    • 自定义表单伪元素样式
    • 如何理解Css中的Display属性
    • 视口和软键盘对视口的影响
    • 关于Css
  • Frontend
    • 00 关于Web前端
    • 01 前端知识概览
    • 02 常用前端库概览
    • 基础 00 前端常见问题01
    • 基础 01 浏览器缓存
    • 基础 02 浏览器工作原理
    • 基础 03 谈谈前端跨源问题及解决方法
    • 进阶 01 Web性能优化
    • 进阶 02 搜索引擎优化(SEO)
    • 进阶 03 前端模块化编程
    • 进阶 04 规范代码:Linter、Prettier、EditorConfig
    • 进阶 11 前端自动化测试
    • 高级 01 前端安全
    • Vue2.X原理篇
    • Vue3初步了解及迁移指南
    • 重读Vue教程
    • React17.X原理篇
    • 你必须知道的React问题
    • 重读React教程
    • 聊一聊Cookie的一些问题
    • 如何理解HTTP响应的状态码
    • HTTP的历史演变及概述
    • Webpack4.X原理篇
    • Webpack基础入门篇
    • Webpack构建优化篇
    • TypeScript使用指南
    • 代码规范
      • 前端规范
      • HTML
      • CSS
      • JS
  • Html探索系列
    • HTML基础知识
    • HTML基础知识02
    • HTML常见问答
    • HTML经典实践用例
    • HTML元素的宽高及位置详解
    • Video元素的使用和常见问题总结
    • Html探索系列 Meta标签
    • DOCTYPE:文档类型与浏览器模式
    • DHTML(动态网页)简介
    • HTML标签详解
    • HTML布局的几种方式
    • HTML全局属性
    • 关于Html
  • Js探索系列
    • 基础知识
    • 常见问答
    • 应用示例
    • 趣味示例
    • 基础篇 05 AJAX
    • 基础篇 06 Window对象
    • 基础篇 07 Error、JSON、Math、Console对象
    • 基础篇 08 History、URL、Screen、Navigator、Location对象
    • 基础篇 09 文档对象模型(DOM)
    • 基础篇 10 Document对象
    • 基础篇 11 Element对象
    • 基础篇 12 Event对象
    • 基础篇 13 键盘、鼠标、触摸事件
    • 基础篇 15 CSS对象模型(CSSOM)
    • 进阶篇 01 Prototype对象和继承
    • 进阶篇 02 Promise对象
    • 进阶篇 07 迭代器(Iterator)
    • 进阶篇 08 Generator和Async函数
    • 进阶篇 09 JavaScript异步编程
    • Date对象和日期时间字符串格式
    • Canvas基础入门篇
    • Canvas进阶篇
    • SVG基础入门篇
    • 四种判断数据类型方法的优缺点
    • 深入理解JavaScript的浅拷贝和深拷贝
    • 谈谈JavaScript的作用域和上下文
    • 复制内容到剪贴板
    • 关于Javascript
  • NodeJs
    • 关于Node.Js
    • Node.Js:三种调试方法
    • Npm包管理器简介及一些机制
    • NPM:Package.Json详解(中文)
    • NPM:从零开始,开发一个软件包
    • NPM:常用命令
    • Node.Js:Fs(文件系统)
    • Node.Js:Global(全局变量)
    • Node.Js:HTTP
    • Node.Js:Module(模块)
    • Node.Js:Path(路径)
    • Node.Js:Readline(逐行读取)
  • Research
    • 极细边框(1px边框)实现方式
    • 如何监控前端异常?
    • H5页面跳转和刷新
    • Web主题切换和个性化定制方法总结
    • Vue SSR(服务端渲染)的简单实现
    • 基于Create React App打造代码规范化的React+Ts项目
    • H5可视化编辑
    • Web常用功能
    • Javascript加密混淆
    • Vue如何导入TypeScript
    • 移动端PDF预览
    • 纯CSS绘制箭头
    • 网站性能测量和优化方法
  • Tech
    • GOOGLE浏览器的搜索技巧
    • Curl的用法指南
    • Sublime3插件篇
    • Charles安装及使用
    • Nginx基础使用
    • 排序算法(Javascript)
    • 代码整洁之道(摘录笔记)
    • Java的24种设计模式与7大原则
    • 观察者和发布订阅模式
  • Tools
    • Git
      • Git基础教程
      • Git常见问题
    • Gitbook
      • Gitbook入门篇
      • Gitbook插件篇
      • Gitbook进阶篇
由 GitBook 提供支持
在本页
  • curl使用实例
  • curl语法及选项
  • 语法
  • 参数选项

这有帮助吗?

  1. Tech

Curl的用法指南

curl 是一个开源的用于数据传输的命令行工具与库,它使用 URL 语法格式,支持众多传输协议,包括:HTTP、HTTPS、FTP、FTPS、GOPHER、TFTP、SCP、SFTP、SMB、TELNET、DICT、LDAP、LDAPS、FILE、IMAP、SMTP、POP3、RTSP和RTMP。curl 库提供了很多强大的功能,你可以利用它来进行 HTTP/HTTPS 请求、上传/下载文件等,且支持 Cookie、认证、代理、限速等。

curl使用实例

  • url访问:直接加上要访问的网址。curl 默认发出 GET 请求,服务器返回的内容会在命令行输出。

    curl https://www.example.com
  • **重定向跟踪:**页面使用了301|303 等重定向,可以添加 -L 参数来跟踪 URL 重定向。

    curl -L https://www.example.com
  • **页面保存:**将页面源码保存到本地。 -o/--output 必须输入保存文件名,-O/--remote-name 保留远程文件的文件名。

    curl https://www.example.com >> example.html
    curl -o example.html https://www.example.com
    curl -O https://www.example.com/index.html
  • 查看头信息:使用 -i参数,页面响应头会和页面源码(响应体)一块返回;使用-I或--head参数,只返回向应头。

    curl -i https://www.example.com
    curl -I https://www.example.com
    curl --head https://www.example.com
  • HTTP请求方法:curl 支持所有 HTTP 请求方法,默认使用 get 请求,可以通过 -X 参数指定。

    # 获取ip地址
    curl http://ip-api.com/json
    curl -X DELETE https://www.example.com/api/delete/xxx
    curl -X POST --data 'keyword=example' https://www.example.com/api/[delete_api]
  • HTTPS支持:curl 可以直接访问 HTTPS 协议。如果使用的本地 ssl证书 认证的 HTTPS,可以通过-E或--cert参数指定本地证书。

    curl -E my_cert.pem https://www.example.com
  • 添加请求头:通过 -H 或 --header 参数来指定请求头。多次使用 -H 或 --header 参数可指定多个请求头。

    $ curl -H 'Content-Type:application/json' -H 'Authorization: ndhielsi.ighhgeuwj' https://www.example.com
  • Cookie支持:通过 --cookie 参数指定发送请求时的 Cookie 值,也可以通过 -b [文件名] 来指定一个存储了 Cookie 值的本地文件。

    curl --cookie 'token=1234' https://www.example.com
    curl -b my_cookies.txt https://www.example.com

    Cookie 值可能会被服务器所返回的值所修改,并应用于下次 HTTP 请求。这时,可以能过 -c 参数指定存储服务器返回 Cookie 值的存储文件。

    curl -b my_cookies.txt -c newcookies.txt https://www.example.com
  • 文件上传:使用 -T 或 --upload-file 上传文件。

    curl -T ./index.html https://www.example.com/api/[upload_api]
  • 伪造来源地址:修改请求 Header 中的 referer 信息。

    curl -e http://localhost https://www.example.com
  • 请求代理:指定 HTTP 请求的代理。

    curl -x 123.45.67.89:1080 https://www.example.com
  • 循环下载:

    curl -O http://mydomain.net/~zzh/screen[1-10].JPG
    curl -O http://mydomain.net/~{zzh,nick}/[001-201].JPG
    curl -o #2_#1.jpg http://mydomain.net/~{zzh,nick}/[001-201].JPG
  • 分块下载:

    curl -r  0 -10240  -o "zhao.part1"  https://www.example.com/media/zhao1.mp3 &\
    curl -r 10241 -20480  -o "zhao.part1"  https://www.example.com/media/zhao1.mp3 &\
    curl -r 20481 -40960  -o "zhao.part1"  https://www.example.com/media/zhao1.mp3 &\
    curl -r 40961 - -o  "zhao.part1"  https://www.example.com/media/zhao1.mp3
  • 限制网速:限制 HTTP 请求和回应的带宽,模拟慢网速的环境。

    curl --limit-rate 200k https://www.example.com

curl语法及选项

语法

curl [options...] <url>

参数选项

# 调试类
-v, --verbose URL                      输出请求中访问的路由信息
-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             读取文件中但忽略 session 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 的文件位置
上一页GOOGLE浏览器的搜索技巧下一页Sublime3插件篇

最后更新于3年前

这有帮助吗?