curl详解

简介:

curl:命令行下的网站访问和验证工具


常用参数如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-c,–cookie-jar:将cookie写入到文件
-b,–cookie:从文件中读取cookie
-C,– continue -at:断点续传
-d,–data:http post方式传送数据
-D,–dump-header:把header信息写入到文件
-F,–from:模拟http表达提交数据
-s,–slient:减少输出信息
-o,–output:将信息输出到文件
-O,–remote-name:按照服务器上的文件名,存在本地
–l,– head :仅返回头部信息
-u,–user[user:pass]:设置http认证用户和密码
-T,–upload- file :上传文件
-e,–referer:指定引用地址
-x,–proxy:指定代理服务器地址和端口
-w,–write-out:输出指定格式内容
–retry:重试次数
–connect-timeout:指定尝试连接的最大时间 /s

实例:

抓取页面到指定文件,如果有乱码可以使用iconv转码

1
2
# curl -o baidu.html www.baidu.com
# curl -s -o baidu.html www.baidu.com |iconv -f utf-8 #减少输出信息

模拟浏览器头(user-agent)

1
  # curl -A “Mozilla/52.0 (compatible;MSIE 8.0; Windows NT 6.0)” www.baidu.com

处理重定向页面

1
# curl –L http://172.16.1.10/301.<a href="http://www.ttlsa.com/php/" title="php"target="_blank">php</a> #默认curl是不处理重定向

模拟用户登陆,保存cookie信息到cookies.txt文件,再使用cookie登陆

1
2
# curl -c ./cookies.txt -F NAME=user -F PWD=***URL #NAME和PWD是表单属性不同,每个网站基本都不同
# curl -b ./cookies.txt –o URL

获取HTTP响应头headers

1
2
# curl -I http://www.baidu.com
# curl -D ./header.txt http://www.baidu.com #将headers保存到文件中

访问HTTP认证页面

1
# curl -u user:pass URL

通过ftp上传和下载文件

1
2
# curl -T filename ftp://user:pass@ip/docs #上传
# curl -O ftp://user:pass@ip/filename #下载

curl url

查看url的源代码

curl -I url

查看url的状态码

200

Ok

301 302

跳转

404 403 502 503


curl -X ip:port url -I

通过代理访问url查看状态

curl -Iv url

查看详细的访问过程

curl -u username:password url

访问需要用户密码的网站

curl -o 名字 url

将文件保存为命令行中指定的文件名的文件中

curl -O url

使用URL中默认的文件名保存文件到本地

curl -A 'aaa' www.aaa.com

curl在请求一个网页的时候,可以指定user_agent

curl -I www.aaa.com

只显示header信息,而不显示网页返回给我们的内容

下载单个文件,默认将输出打印到标准输出中(STDOUT)中

curl http://www.centos.org

通过-o/-O选项保存下载的文件到指定的文件中:

-o:将文件保存为命令行中指定的文件名的文件中

-O:使用URL中默认的文件名保存文件到本地

1 # 将文件下载到本地并命名为mygettext.html

1
  curl -o mygettext.html http: //www .gnu.org /software/gettext/manual/gettext .html

2 # 将文件保存到本地并命名为gettext.html

1
curl -O http: //www .gnu.org /software/gettext/manual/gettext .html

 3# 指定代理主机和端口

1
curl -x proxysever. test .com:3128 http: //google .com

同样可以使用转向字符">"对输出进行转向输出

同时获取多个文件

1 curl -O URL1 -O URL2

若同时从同一站点下载多个文件时,curl会尝试重用链接(connection)。

通过-L选项进行重定向

默认情况下CURL不会发送HTTP Location headers(重定向).当一个被请求页面移动到另一个站点时,会发送一个HTTP Loaction header作为请求,然后将请求重定向到新的地址上。

保存与使用网站cookie信息

1 # 将网站的cookies信息保存到sugarcookies文件中
 

1
curl -D sugarcookies http: //localhost/sugarcrm/index .php

2 # 使用上次保存的cookie信息

1
curl -b sugarcookies http: //localhost/sugarcrm/index .php


传递请求数据

默认curl使用GET方式请求数据,这种方式下直接通过URL传递数据

可以通过--data/-d 方式指定使用POST方式传递数据


1
2
# GET
curl -u username https: //api .github.com /user ?access_token=XXXXXXXXXX

 

1
2
# POST
curl -u username --data  "param1=value1&param2=value"  https: //api .github.com


也可以指定一个文件,将该文件中的内容当作数据传递给服务器端
 

1
curl --data @filename https: //github .api.com /authorizations



注:默认情况下,通过POST方式传递过去的数据中若有特殊字符,首先需要将特殊字符转义在传递给服务器端,如value值中包含有空格,则需要先将空格转换成%20,如:

1
curl -d  "value%201"  http: //hostname .com


在新版本的CURL中,提供了新的选项 --data-urlencode,通过该选项提供的参数会自动转义特殊字符。

 

1
curl --data-urlencode  "value 1"  http: //hostname .com


除了使用GETPOST协议外,还可以通过 -X 选项指定其它协议,如:

 

1
curl -I -X DELETE https: //api .github.cim


上传文件

1
  curl --form  "fileupload=@filename.txt"  http: //hostname/resource


本文转自 喵来个鱼 51CTO博客,原文链接:http://blog.51cto.com/m51cto/1959179,如需转载请自行联系原作者
相关文章
|
消息中间件 Kafka
mac 搭建kafka系列教程
mac 搭建kafka系列教程
477 0
mac 搭建kafka系列教程
|
Linux Go Windows
NATS服务器部署及测试
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/51002444 NATS服务器部署及测试 作者:chszs,未经博主允许不得转载。
3389 0
|
3月前
|
Oracle Java 关系型数据库
JDK 21安装教程 Windows版详细步骤+环境变量验证(含java/javac/java -version检测)
JDK(Java SE Development Kit)是Oracle官方提供的Java标准版开发工具包,包含编译器(javac)、运行环境(JRE)及核心类库等,用于Java程序的开发、编译、调试与运行。本文详解JDK 21在Windows下的下载、安装与验证步骤,助力新手快速搭建开发环境。(239字)
2414 114
|
存储 安全 网络安全
【考研必备二】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)(下)
【考研必备二】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)
|
算法 安全 网络安全
【区块链】深入解析Proof of Work (PoW): 区块链技术的核心驱动力
在区块链技术的宏伟蓝图中,Proof of Work(工作量证明,简称PoW)算法扮演着基石的角色。自比特币白皮书发布以来,PoW已成为确保去中心化网络安全、维护数据完整性的关键机制。本文将深入探讨PoW的工作原理、优势、挑战以及其对区块链生态系统的影响,力求为读者提供一个全面而深入的理解。
895 0
|
JSON 缓存 Java
优雅至极!Spring Boot 3.3 中 ObjectMapper 的最佳实践
【10月更文挑战第5天】在Spring Boot的开发中,ObjectMapper作为Jackson框架的核心组件,扮演着处理JSON格式数据的核心角色。它不仅能够将Java对象与JSON字符串进行相互转换,还支持复杂的Java类型,如泛型、嵌套对象、集合等。在Spring Boot 3.3中,通过优雅地配置和使用ObjectMapper,我们可以更加高效地处理JSON数据,提升开发效率和代码质量。本文将从ObjectMapper的基本功能、配置方法、最佳实践以及性能优化等方面进行详细探讨。
1340 2
|
监控 Java 开发者
Spring Boot框架在java领域的优势
随着云计算、微服务架构的兴起,Java开发领域迫切需要一套高效、灵活且易于上手的框架来应对日益复杂的业务需求。正是在这样的背景下,Spring Boot应运而生,以其独特的魅力迅速成为了Java开发者手中的利器。
427 3
|
分布式计算 MaxCompute
如何绕过ODPS不支持的笛卡尔积的限制
`` select * from pn_tablename a join pn_tablename b; `` odps不支持无 on 的 join 会报 ODPS-0130252 Cartesian product is not allowed without map join 的错误 可以.
13116 0
|
图形学
【unity小技巧】Unity中实现一个战斗连击连招系统,可以动态添加减少连击连招段数功能
【unity小技巧】Unity中实现一个战斗连击连招系统,可以动态添加减少连击连招段数功能
1022 0
|
JavaScript 前端开发 API
9个JavaScript图像处理库,收藏好留备用
9个JavaScript图像处理库,收藏好留备用
726 0