在推特上看到国外牛人一行代码收集子域名,仔细看了一下用到的姿式,其中有curl,碰巧看到阮一峰大牛的curl用法指南文章,因而决定总结一下curl。php
一行代码收集子域名html
for h in $(cat hosts.txt); do curl -siL https://$h|egrep -io "[0-9a-z_\-\.]+\.([0-9a-z_\-]+)?`echo $h|awk -F '.' '{print $(NF-1)}'`([0-9a-z_\-\.]+)?\.[a-z]{1,5}"|sort -fu ; done
curl用法示例bootstrap
-X 指定请求方法 -x 指定HTTP请求的代理 -H 指定请求标头 -d 发送POST请求提交的数据,使用-d参数后,会自动将请求转为POST,HTTP请求会自动加上标头Content-Type : application/x-www-form-urlencoded,可省略-X POST -v 显示http通讯的整个过程 -u 设置服务器认证的用户名和密码 -i 显示Response头信息,并打印源码 -I 显示Response头信息,不打印源码 -s 不输出错误和进度信息 -S 指定只输出错误信息 -L 自动跳转,curl默认不跟随跳转 -k 跳过SSL检测 -o 文件名 保存 -O 将URL的最后部分看成文件名保存
不加参数时,默认发出GET请求,查看页面源码安全
curl http://www.baidu.com
以dvwa登陆为例:-H添加请求头,-L开启自动跳转,-i打印请求头和页面源码,能够看到欢迎界面源码。服务器
curl -i -L -H'Cookie: security=impossible; PHPSESSID=dm4a5af6tntekl7jlfi7pl42b3' -H'Host: 10.211.55.4' -d'username=admin&password=password&Login=Login&user_token=6c2b5b838ed4e555e11cc40a63010e6c' http://10.211.55.4/dvwa/login.php
设置User-Agent绕过服务器访问代理检测,可用于爬虫欺骗app
curl -H'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:69.0) Gecko/20100101 Firefox/69.0'
设置Host绕过主机头检测,替代更改host文件的繁琐操做curl
curl -H'Host: xxxx' IP
-x指定代理,可用于IP被拉黑时绕过IP检测post
curl -x 127.0.0.1:8080 http://www.baidu.com
curl -k
curl -L
-i显示Response头信息,并打印源码,-I的区别是不打印源码,可用于探测服务器信息测试
curl -I http://www.baidu.com
-o指定文件名保存,-O将URL的最后部分看成文件名保存url
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
curl -F 'file=@/Desktop/photo.png' https://xxx.com
不安全的HTTP方法
curl -X OPTIONS http://xxx.com
查看curl支持的协议
$ curl-config --protocols DICT FILE FTP FTPS GOPHER HTTP HTTPS IMAP IMAPS LDAP LDAPS POP3 POP3S RTSP SMB SMBS SMTP SMTPS TELNET TFTP
端口探测
$ curl 127.0.0.1:21 220 pyftpdlib 1.5.5 ready. $ curl ftp://127.0.0.1 21 curl: (67) Access denied: 530 curl: (7) Access denied: 530
参考 http://www.ruanyifeng.com/blog/2019/09/curl-reference.html