curl命令

微信开发时,对素材操作时,可以使用curl命令进行素材管理,curl命令的使用可以参考http://curl.haxx.se/docs/httpscripting.html

以下文章转载自:http://www.cnblogs.com/sunada2005/p/3829772.html

curl命令可以用来构造http请求。参数有很多,常用的参数如下:

通用语法:
curl [option] [URL...]
在处理URL时其支持类型于SHELL的名称扩展功能,如http://www.jbxue.com/archive[1996-1999]/vol[1-4]/part{a,b,c}.html可以生成多个期望的URL

curl的选项功能:

  • 不带任何参数时 curl 将返回指定url中的数据并打印在屏幕上
  • -u 使用用户名和密码登陆。如curl -uname:passwd URL
  • -b/--cookie  <name=data>   向服务器提交cookie,若无=则name视为文件名,例如:curl -b cookie.txt www.jbxue.com
  • -o out  将指定curl返回保存为out文件,内容从html/jpg到各种MIME类型文件。如curl -o page.html URL
  • -d <key=value>  向服务器POST表单数据 例如:curl -d "order=111&count=2" http://www.jbxue.com/buy
  • -A/--user-agent  <ua>  指定发送请求的用户代理,例如:curl -A My-Agent/1.0.0 www.jbxue.com 
  • -x  ip:port 指定使用的http代理,例如:curl -x 192.168.1.1:8080 www.jbxue.com
  • -D head.txt  将服务器的返回的header保存为文件,头部的cookie也可被保存,例如:curl -D header.txt www.jbxue.com  
    • 如果希望从本地文件中获取表单数据,则在文件名前加@ ,例如:curl -d @data.xml http://www.jbxue.com
    • 若希望从标准输入获取则用 curl -d "name=username&passwd=pwd" http://www.jbxue.com
  • -L 当页面有跳转的时候,输出跳转到的页面
  • -I  header信息  当有跳转时,可以通过 curl -L -I URL|grep Location 来确定跳转到的新url地址
  • -c <file> 保存服务器的cookie文件
  • -e url  设置引用头的值
  • -T localfile  向服务器PUT文件 例如:curl -T 1.mp3  www.jbxue.com/upload.php
  • -F <key=value> 向服务器POST表单,例如:curl -F "web=@index.html;type=text/html" url.com
  • -E cert.pem  指定本地证书
  • -H <header:value>  为HTTP请求设置任意header及值。如curl -H "Connection:keep-alive" http://www.jbxue.com
  • -X/--request method 用户定义的HTTP请求方法名如 curl -X GET www.baidu.com
  • --compressed 采用压缩方式接收返回数据
  • --connect-timeout <s> 设置超时时间
  • -v 详细输出,包含请求和响应的首部
  • --retry num
  • --retry timeo 指定重试的次数和间隔
  • --tcp-nodelay 打开TCP_NODELAY选项  不进行捎带确认
  • -O  按服务器上的名称保存下载的文件
  • -r/--range  from-to 下载指定range内的数据
  • -C 在保存文件时进行续传

环境 变量:http_proxy [protocol://]<host>[:port]

1.访问http页面内容,输出到标准输出 curl http://www.neocanable.com 2.生成文件 curl -o index.html http://www.neocanable.com 以远程文件名保存 curl -O http://www.neocanable.com 参数-o为输出到某个文件,上面的命令等同于wget http://www.neocanable.com或者curl http://www.neocanable.com > index.html 3.添加proxy curl -x xxx.xxx.xxx.xxx http://www.neocanable.com 通过代理ip访问网页 4.添加浏览器信息 通常服务器的日志会记录客户端浏览器的信息 curl -A “浏览器信息” http://www.neocanable.com 5.批量下载文件 curl http://www.xxx.com/action/[1-100].html > /dev/null 这个最适合爬自己网站的缓存了 文件下载后重新命名和类正则使用,下载后的文件是demo1-001.html curl -o #1_#2 http://www.xxx.com/~{demo1,demo2}/[1-100].html 创建需要的目录 curl -o –create-dirs http://www.xxx.com/~{demo1,demo2}/[1-100].html 6.分块下载 curl -r 0-1024 http://www.xxx.com/aa.zip curl -r 1025- http://www.xxx.com/aa.zip 先下1M,然后再下剩下的 7.curl ftp 访问ftp地址 curl -u username:password ftp://www.xxx.com curl -u ftp://www.xxx.com 添加端口 curl -u username:password -P8899 ftp://www.xxx.com 上传文件到ftp curl -T /home/neo/demo.jpg -u username:password ftp://www.xxx.com 8.测试参数 测试站点相应时间 curl -o /dev/null -s -w %{time_connect}:%{time_starttransfer}:%{time_total} www.google.com 查看http_code curl -o /dev/null -s -w %{http_code} http://www.neocanable.com 网页或文件大小 curl -o /dev/null -s -w %{size_header} http://www.neocanable.com http_code:http返回类似404,200,500等 time_total:总相应时间 time_namelookup:域名解析时间 time_connect:连接到目标地址耗费的时间 time_pretransfer:从执行到开始传输文件的时间间隔 time_starttransfer:从执行到开始传输文件的时间间隔 size_download:下载网页或文件大小 size_upload:上传文件大小 size_header:响应头 size_request:发送请求参数大小 speed_download:传输速度 speed_upload:平均上传速度 content_type:下载文件类型. (Added in 7.9.5) 9.post和get请求 get请求 curl “param1=name&params2=pass” http://www.xxx.com post请求 curl -d “param1=name&params2=pass” http://www.xxx.com 10.响应超时 curl -m 40 http://www.xxx.com curl –timeout 40 http://www.xxx.com 11.破解网站的防盗链 curl -e “http://www.a.net” http://www.b.net/acion 12.网站头部信息 curl -I http://www.neocanable.com 13.更总url跳转 curl -L http://url.cn/2yQFfd 14.正确的给url编码 curl –data-urlencode http://www.xxx.com/action?name=张三&sex=男 15.限制url的传输速度 curl –limit-rate http://www.xxx.com/action 16.限制下载文件大小 curl –max-filesize 1024 http://www.xxx.com/action 超过1M将不执行操作,并且返回出错 17.curl错误代码 1:未支持的协议。此版cURL不支持这一协议。 2:初始化失败。 3:URL格式错误。语法不正确。 5:无法解析代理。无法解析给定代理主机。 6:无法解析主机。无法解析给定的远程主机。 7:无法连接到主机。 8:FTP非正常的服务器应答。cURL无法解析服务器发送的数据。 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错误。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 range错误。range “命令”不起作用。 34:HTTP POST错误。内部POST请求产生错误。 35:SSL连接错误。SSL握手失败。 36:FTP 续传损坏。不能继续早些时候被中止的下载。 37:文件无法读取。无法打开文件。权限问题? 38:LDAP 无法绑定。LDAP绑定(bind)操作失败。 39:LDAP 搜索失败。 41:功能无法找到。无法找到必要的LDAP功能。 42:由回调终止。应用程序告知cURL终止运作。 43:内部错误。由一个不正确参数调用了功能。 45:接口错误。指定的外发接口无法使用。 47:过多的重定向。cURL达到了跟随重定向设定的最大限额跟 48:指定了未知TELNET选项。 49:不合式的telnet选项。 51:peer的SSL证书或SSH的MD5指纹没有确定。 52:服务器无任何应答,该情况在此处被认为是一个错误。 53:找不到SSL加密引擎。 54:无法将SSL加密引擎设置为默认。 55:发送网络数据失败。 56:在接收网络数据时失败。 58:本地证书有问题。 59:无法使用指定的SSL密码。 60:peer证书无法被已知的CA证书验证。 61:无法辨识的传输编码。 62:无效的LDAP URL。 63:超过最大文件尺寸。 64:要求的FTP的SSL水平失败。 65:发送此数据需要的回卷(rewind)失败。 66:初始化SSL引擎失败。 67:用户名、密码或类似的信息未被接受,cURL登录失败。 68:在TFTP服务器上找不到文件。 69:TFTP服务器权限有问题。 70:TFTP服务器磁盘空间不足。 71:非法的TFTP操作。 72:未知TFTP传输编号(ID)。 73:文件已存在(TFTP) 。 74:无此用户(TFTP) 。 75:字符转换失败。 76:需要字符转换功能。 77:读SSL证书出现问题(路径?访问权限? ) 。 78:URL中引用的资源不存在。 79:SSH会话期间发生一个未知错误。 80:未能关闭SSL连接。 82:无法加载CRL文件,丢失或格式不正确(在7.19.0版中增加 ) 。 83:签发检查失败(在7.19.0版中增加 ) 。
<think>我们正在讨论curl命令的使用方法和示例。根据引用内容,curl是一个命令行工具,用于向服务器发送请求并获取数据,支持多种协议如HTTP、HTTPS、FTP等。以下是一些常用的curl命令及其用法示例: 1. **基本用法**:获取网页内容 ```bash curl https://example.com ``` 这将发送GET请求到指定URL并在终端显示返回的内容。 2. **保存文件**:使用`-o`选项将输出保存到文件 ```bash curl -o filename.html https://example.com ``` 3. **静默模式**:使用`--silent`选项不显示进度信息 ```bash curl --silent https://example.com ``` 4. **跟随重定向**:使用`-L`选项自动跟随重定向 ```bash curl -L https://example.com ``` 5. **发送POST请求**:使用`-d`选项发送POST数据 ```bash curl -d "name=value" https://example.com/form ``` 如果需要发送JSON数据,可以设置Content-Type头: ```bash curl -H "Content-Type: application/json" -d '{"key":"value"}' https://example.com/api ``` 6. **使用Cookie**:使用`-b`选项从文件中读取Cookie ```bash curl -b cookies.txt https://example.com ``` 也可以直接指定Cookie字符串: ```bash curl -b "sessionid=1234" https://example.com ``` 7. **设置请求头**:使用`-H`选项添加自定义请求头 ```bash curl -H "User-Agent: MyBrowser" -H "Accept: application/json" https://example.com ``` 8. **限制速率**:使用`--limit-rate`限制下载速率 ```bash curl --limit-rate 200K -O https://example.com/largefile.zip ``` 9. **忽略SSL证书验证**:使用`--insecure`选项(不推荐在安全环境下使用) ```bash curl --insecure https://example.com ``` 10. **上传文件**:使用`-T`选项上传文件 ```bash curl -T localfile.txt ftp://example.com/upload/ ``` 11. **调试信息**:使用`-v`选项显示详细请求信息(调试用) ```bash curl -v https://example.com ``` 12. **使用代理**:通过`-x`选项设置代理 ```bash curl -x http://proxy-server:port https://example.com ``` 引用[1]和[2]提供了curl的基本介绍和示例,引用[3]详细说明了如何使用cookie。这些引用内容可以作为curl命令使用的参考。 §§相关问题§§ 1. 如何用curl发送PUT请求? 2. 如何用curl处理HTTP认证(如Basic Auth)? 3. 如何用curl模拟浏览器行为(如设置User-Agent)? 4. 如何用curl测试API的响应时间? 5. 如何用curl下载文件并显示进度条?</think>### Curl命令使用指南 Curl(Client URL)是一个强大的命令行工具,用于传输数据,支持多种协议(HTTP/HTTPS/FTP/FTPS/SFTP等)。以下是核心用法和示例: --- #### 一、基础操作 1. **获取网页内容** ```bash curl https://example.com ``` - 输出结果到终端(默认行为) 2. **保存文件** ```bash curl -o output.html https://example.com ``` - `-o`:指定输出文件名(支持任意扩展名) 3. **静默模式** ```bash curl --silent https://example.com ``` - 隐藏进度条和错误信息[^2] --- #### 二、HTTP请求控制 1. **发送GET请求** ```bash curl "https://api.example.com/data?id=123" ``` 2. **发送POST请求** ```bash curl -X POST -d "name=John&age=30" https://api.example.com/users ``` - `-X`:指定请求方法 - `-d`:发送表单数据(自动设置`Content-Type: application/x-www-form-urlencoded`) 3. **发送JSON数据** ```bash curl -H "Content-Type: application/json" -d '{"key":"value"}' https://api.example.com ``` - `-H`:添加请求头 4. **上传文件** ```bash curl -F "file=@local_path.txt" https://upload.example.com ``` --- #### 三、会话与认证 1. **使用Cookie** ```bash curl -b cookies.txt https://example.com # 读取cookie文件 curl -c new_cookies.txt https://example.com # 保存服务器返回的cookie ``` - `-b`:发送Cookie(`--cookie`缩写)[^3] - `-c`:保存Cookie到文件(`--cookie-jar`缩写) 2. **基础认证** ```bash curl -u username:password https://auth.example.com ``` --- #### 四、高级功能 1. **跟随重定向** ```bash curl -L https://example.com/redirect ``` - `-L`:自动处理301/302重定向 2. **限速下载** ```bash curl --limit-rate 200K -O https://example.com/largefile.zip ``` - 限制速度为200KB/s 3. **断点续传** ```bash curl -C - -O https://example.com/bigfile.iso ``` 4. **跳过SSL验证**(测试用) ```bash curl --insecure https://self-signed-cert.example.com ``` --- #### 五、调试与诊断 1. **显示请求详情** ```bash curl -v https://example.com # 查看请求头/响应头 curl -i https://example.com # 仅显示响应头+内容 ``` 2. **测试响应时间** ```bash curl -w "响应时间: %{time_total}s\n" -o /dev/null https://example.com ``` --- ### 典型场景示例 | 场景 | 命令示例 | |--------------------------|--------------------------------------------------------------------------| | 下载文件并重命名 | `curl -o image.jpg https://example.com/photo.png` | | 提交JSON到API | `curl -H "Content-Type: application/json" -d '{"task":"update"}' API_URL`| | 带Cookie访问受限资源 | `curl -b "sessionid=abc123" https://member.example.com/profile` | | 通过代理访问 | `curl -x http://proxy:8080 https://external.com` | > 提示:使用`curl --help`查看所有选项,或`man curl`查看完整手册。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值