Curl

最后更新于:2022-04-02 03:52:21

[TOC] ## 常用参数 ``` -i 显示响应头信息与内容 -I 只显示响应头信息 -b"name=xxx" 携带 cookie 信息 -H "Content-Type:application/json" 增加头信息 -d post 的 body --referer http://www.example.com 添加referer来源 ``` ## 命令 |命令|说明| |---|---| |-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 |停止传输速度的限制,速度时间| ## 常用场景 ### 输出到文件 获取网站源码 `curl -o ~/demo.html www.baodu.com` ### post 请求 //传 json `curl -d '{"user_name":"idcpj","pwd":"12345"}' http://127.0.0.1:8000/user` //传表单 `curl -d 'name=idcpj&pwd=123456' http://127.0.0.1:8000/user` ### 携带头信息 `curl -H "Content-Type:application/json"` ### 添加 referer `curl --referer "http://www.example.com" ` ### 携带 cookie `curl -b "name=xxx"` ### 文件上传 `curl -F "key=value" -F "file=@./video/test1.mp4" http://localhost/upload` `file 为input:name 的值` ### 从文件读取 cookie 传递 ``` curl -b cookies http://example.com ``` ### wget实现 ``` curl -sSL http://www.download.com/file -o new_file ``` ### HTTP认证 ``` curl --user name:password example.com ```
';