ssh_bash环境下对Curl命令认知

文章目录

p1

我当前最常用的是curl -v http://www.anquanlong.com

可以查看到很多你正常浏览器不能直接看到的内容;比如php版本、cookie域名作用域、网站编码、还有网站源代码;但curl -v其实很片面,还很很多很多功能;对于互联网认知我们远远不足。curl支持环境:Linux(centos、kail)、mac、windows 等;理论上支持安卓系统、苹果手机。

本文有curl一些参数的用法;后面会说简单的用法。文档结合实际操作。个人感慨用的6的话,就nb了;实在话,很多网络扫描,其实大同小异离不开curl的影子。curl支持:断点续传下载、post、get参数提交,还支持cookie、ssl、等;其实就是个强大的超级网页浏览器了!

但,你也可以不用看本文!如果你有安装curl话,在ssh终端输入curl –help;就告诉你参数和用法了。正常,mac和linux都会自带有curl的。

p2


一、curl命令详解

(1)curl命令作用

      curl命令是一个功能强大的网络工具,它能够通过http、ftp等方式下载文件,也能够上传文件,同时支持HTTPS等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。其实curl远不止前面所说的那些功能,大家可以通过man curl阅读手册页获取更多的信息。类似的工具还有wget。curl命令使用了libcurl库来实现,libcurl库常用在C程序中用来处理HTTP请求,curlpp是libcurl的一个C++封装,这几个东西可以用在抓取网页、网络监控等方面的开发,而curl命令可以帮助来解决开发过程中遇到的问题。

(2)常用参数

    curl命令参数很多,这里只列出我曾经用过、特别是在shell脚本中经常用到过的那些。

-a/–append 上传文件时,附加到目标文件

-A:随意指定自己这次访问所宣称的自己的浏览器信息

-b/–cookie <name=string/file> cookie字符串或文件读取位置,使用option来把上次的cookie信息追加到http request里面去。

-c/–cookie-jar <file> 操作结束后把cookie写入到这个文件中

-C/–continue-at <offset>  断点续转

-d/–data <data>   HTTP POST方式传送数据

    –data-ascii <data> 以ascii的方式post数据
     –data-binary <data> 以二进制的方式post数据
     –negotiate 使用HTTP身份验证
     –digest 使用数字身份验证
     –disable-eprt 禁止使用EPRT或LPRT
     –disable-epsv 禁止使用EPSV

-D/–dump-header <file> 把header信息写入到该文件中

     –egd-file <file>  为随机数据(SSL)设置EGD socket路径

     –tcp-nodelay     使用TCP_NODELAY选项

-e/–referer <URL>  指定引用地址

-F/–form <name=content>   模拟http表单提交数据

     –form-string <name=string> 模拟http表单提交数据

-G/–get    以get的方式来发送数据

-H/–header <header> 指定请求头参数

    –ignore-content-length  忽略的HTTP头信息的长度

-i/–include     输出时包括protocol头信息

-I/–head 仅返回头部信息,使用HEAD请求

-k/–insecure  允许不使用证书到SSL站点

-K/–config    指定的配置文件读取

-l/–list-only   列出ftp目录下的文件名称

    –limit-rate <rate> 设置传输速度

     –local-port<NUM>  强制使用本地端口号

-m/–max-time <seconds> 指定处理的最大时长

     –max-redirs <num>    设置最大读取的目录数

     –max-filesize <bytes>  设置最大下载的文件总量

-o/–output <file>   指定输出文件名称

-O/–remote-name  把输出写到该文件中,保留远程文件的文件名

-v/–verbose  小写的v参数,用于打印更多信息,包括发送的请求信息,这在调试脚本是特别有用。

-s/–slient 减少输出的信息,比如进度

–connect-timeout <seconds> 指定尝试连接的最大时长

-x/–proxy <proxyhost[:port]> 指定代理服务器地址和端口,端口默认为1080

-u/–user <user[:password]>设置服务器的用户和密码

-r/–range <range>检索来自HTTP/1.1或FTP服务器字节范围

   –range-file 读取(SSL)的随机文件

-R/–remote-time   在本地生成文件时,保留远程文件时间

    –retry <num>   指定重试次数

    –retry-delay <seconds>   传输出现问题时,设置重试间隔时间

    –retry-max-time <seconds>  传输出现问题时,设置最大重试时间

-s/–silent  静默模式。不输出任何东西

-S/–show-error  显示错误

    –socks4 <host[:port]> 用socks4代理给定主机和端口

    –socks5 <host[:port]> 用socks5代理给定主机和端口

    –stderr <file>

-x/–proxy <host[:port]> 在给定的端口上使用HTTP代理

-X/–request <command> 指定什么命令。curl默认的HTTP动词是GET,使用-X参数可以支持其他动词。

-T/–upload-file <file> 指定上传文件路径


(3)使用实例

1、抓取cookie信息到一个文件中

curl -c cookie0.txt -d "username=****&password=***" http://www.anquanlong.com/member.php?mod=logging&action=login

2、get方法获取信息

curl -G -I -o xsrf.txt -b cookie1.txt -c cookie2.txt http://web.kuaipan.cn/n/drive/home.tmpl/upload



使用-c命令有一定的连贯性,比如 我要抓取cookie,抓取肯定要登陆账号的对吧;所以这里 -c 与-D要连贯使用。

-c/–cookie-jar <file> 操作结束后把cookie写入到这个文件中

-D/–dump-header <file> 把header信息写入到该文件中

     –egd-file <file>  为随机数据(SSL)设置EGD socket路径

     –tcp-nodelay     使用TCP_NODELAY选项


总结:大多情况下curl用于编程结合用处最大,很灵活一个工具。熟悉使用curl要花费时间!


截图:

p3

运行命令后自动保存cookie0.txt


p4

保存的cookie;但我发现cookie值不对;还是用回我的curl -v吧,做一些效检;可能我写的不对,没把用户名和密码填进去登陆。

原文链接:https://mp.weixin.qq.com/s/0cWqd6TjFDtChzvD_MHZ7g

原文链接:,发表于 源代码(CodeBeta),转发请注明来源!

发表评论