curl介绍
curl是利用URL语法在命令行方式下工作的开源文件传输工具。它被广泛应用在Unix、多种Linux发行版中,并且有DOS和Win32、Win64下的移植版本。
curl是一款著名的字符界面下的下载工具,支持HTTP、HTTPS、FTP、FTPS、DICT、TELNET、LDAP、FILE,和GOPHER。此外还具有cookies支持、断点续传、FTP上传、密码支持、SSL支持和代理支持等特性。curl同时还提供了一套libcurl的库,开发者可以基于这个库开发其他下载工具。
官网地址:https://curl.haxx.se/
官网文档:https://curl.haxx.se/docs/
官网下载地址:https://curl.haxx.se/download.html
curl安装步骤
1.获得安装包,从网上直接下载或者其他途径,这里直接wget
#
wget
https
:
//curl.haxx.se/download/curl-7.54.0.tar.gz
|
2.解压到当前目录
1
|
#
tar
-
zxf
curl
-
7.54.0.tar.gz
|
3.进入解压后的目录内
1
|
#
cd
curl
-
7.17.1
|
4.安装与配置
1
2
3
4
|
.
/
configure
make
make
test
(
optional
)
make
install
|
详细可以参考官方安装文档:https://curl.haxx.se/docs/install.html
curl测试效果
测试版本:curl –version
发送一个get请求: curl http://www.netscape.com/
详细可以参考官方测试例子文档:https://curl.haxx.se/docs/manual.html
当然也可以通过centos中的 curl –manual 来获取使用例子。
curl 帮助文档
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
Options
:
(
H
)
means
HTTP
/
HTTPS
only
,
(
F
)
means
FTP
only
--
anyauth
Pick
"any"
authentication
method
(
H
)
-
a
/
--
append
上传文件时,附加到目标文件
(
F
/
SFTP
)
--
basic
使用
HTTP基本验证
(
H
)
--
cacert
<
file
>
CA
certificate
to
verify
peer
against
(
SSL
)
--
capath
<
directory
>
CA
directory
to
verify
peer
against
(
SSL
)
-
E
/
--
cert
<
cert
[
:
passwd
]
>
Client
certificate
file
and
password
(
SSL
)
--
cert
-
type
<
type
>
Certificate
file
type
(
DER
/
PEM
/
ENG
)
(
SSL
)
--
ciphers
<
list
>
SSL
ciphers
to
use
(
SSL
)
--
compressed
Request
compressed
response
(
using
deflate
or
gzip
)
-
K
/
--
config
<
file
>
Specify
which
config
file
to
read
--
connect
-
timeout
<
seconds
>
Maximum
time
allowed
for
connection
-
C
/
--
continue
-
at
<
offset
>
Resumed
transfer
offset
-
b
/
--
cookie
<
name
=
string
/
file
>
cookie字符串或文件读取位置
(
H
)
-
c
/
--
cookie
-
jar
<
file
>
Write
cookies
to
this
file
after
operation
(
H
)
--
create
-
dirs
Create
necessary
local
directory
hierarchy
--
crlf
Convert
LF
to
CRLF
in
upload
--
crlfile
<
file
>
Get
a
CRL
list
in
PEM
format
from
the
given
file
-
d
/
--
data
<
data
>
HTTP
POST方式传送数据
(
H
)
--
data
-
ascii
<
data
>
以
ascii的方式
post数据
(
H
)
--
data
-
binary
<
data
>
以二进制的方式
post数据
(
H
)
--
data
-
urlencode
<
name
=
data
/
name
@filename
>
HTTP
POST
data
url
encoded
(
H
)
--
delegation
STRING
GSS
-
API
delegation
permission
--
digest
使用数字身份验证
(
H
)
--
disable
-
eprt
禁止使用
EPRT或
LPRT
(
F
)
--
disable
-
epsv
禁止使用
EPSV
(
F
)
-
D
/
--
dump
-
header
<
file
>
把
header信息写入到该文件中
--
egd
-
file
<
file
>
为随机数据
(
SSL
)设置
EGD
socket路径
(
SSL
)
--
engine
<
eng
>
Crypto
engine
to
use
(
SSL
)
.
"--engine list"
for
list
-
f
/
--
fail
连接失败时不显示
http错误
(
H
)
-
F
/
--
form
<
name
=
content
>
模拟
http表单提交数据
(
H
)
--
form
-
string
<
name
=
string
>
模拟
http表单提交数据
(
H
)
--
ftp
-
account
<
data
>
Account
data
to
send
when
requested
by
server
(
F
)
--
ftp
-
alternative
-
to
-
user
<
cmd
>
String
to
replace
"USER [name]"
(
F
)
--
ftp
-
create
-
dirs
如果远程目录不存在,创建远程目录
(
F
)
--
ftp
-
method
[
multicwd
/
nocwd
/
singlecwd
]
控制
CWD的使用
(
F
)
--
ftp
-
pasv
使用
PASV
/
EPSV
代替端口
(
F
)
-
P
/
--
ftp
-
port
<
address
>
Use
PORT
with
address
instead
of
PASV
(
F
)
--
ftp
-
skip
-
pasv
-
ip
使用
PASV的时候
,忽略该
IP地址
(
F
)
--
ftp
-
ssl
尝试用
SSL
/
TLS
来进行
ftp数据传输
(
F
)
--
ftp
-
ssl
-
ccc
Send
CCC
after
authenticating
(
F
)
--
ftp
-
ssl
-
ccc
-
mode
[
active
/
passive
]
Set
CCC
mode
(
F
)
--
ftp
-
ssl
-
control
Require
SSL
/
TLS
for
ftp
login
,
clear
for
transfer
(
F
)
--
ftp
-
ssl
-
reqd
Require
SSL
/
TLS
for
ftp
transfer
(
F
)
-
G
/
--
get
以
get的方式来发送数据
(
H
)
-
g
/
--
globoff
禁用网址序列和范围使用
{
}和
[
]
{
}
and
[
]
-
H
/
--
header
<
line
>
自定义头信息传递给服务器
(
H
)
-
I
/
--
head
Show
document
info
only
-
h
/
--
help
帮助
--
hostpubmd5
<
md5
>
Hex
encoded
MD5
string
of
the
host
public
key
.
(
SSH
)
-
0
/
--
http1
.
0
Use
HTTP
1.0
(
H
)
--
ignore
-
content
-
length
忽略的
HTTP头信息的长度
-
i
/
--
include
输出时包括
protocol头信息
(
H
/
F
)
-
k
/
--
insecure
Allow
connections
to
SSL
sites
without
certs
(
H
)
--
interface
<
interface
>
Specify
network
interface
/
address
to
use
-
4
/
--
ipv4
Resolve
name
to
IPv4
address
-
6
/
--
ipv6
Resolve
name
to
IPv6
address
-
j
/
--
junk
-
session
-
cookies
Ignore
session
cookies
read
from
file
(
H
)
--
keepalive
-
time
<
seconds
>
Interval
between
keepalive
probes
--
key
<
key
>
Private
key
file
name
(
SSL
/
SSH
)
--
key
-
type
<
type
>
Private
key
file
type
(
DER
/
PEM
/
ENG
)
(
SSL
)
--
krb
<
level
>
Enable
Kerberos
with
specified
security
level
(
F
)
--
libcurl
<
file
>
Dump
libcurl
equivalent
code
of
this
command
line
--
limit
-
rate
<
rate
>
Limit
transfer
speed
to
this
rate
-
l
/
--
list
-
only
List
only
names
of
an
FTP
directory
(
F
)
--
local
-
port
<
num
>
[
-
num
]
Force
use
of
these
local
port
numbers
-
L
/
--
location
Follow
Location
:
hints
(
H
)
--
location
-
trusted
Follow
Location
:
and
send
auth
to
other
hosts
(
H
)
-
M
/
--
manual
Display
the
full
manual
--
max
-
filesize
<
bytes
>
Maximum
file
size
to
download
(
H
/
F
)
--
max
-
redirs
<
num
>
Maximum
number
of
redirects
allowed
(
H
)
-
m
/
--
max
-
time
<
seconds
>
Maximum
time
allowed
for
the
transfer
--
negotiate
Use
HTTP
Negotiate
Authentication
(
H
)
-
n
/
--
netrc
Must
read
.
netrc
for
user
name
and
password
--
netrc
-
optional
Use
either
.
netrc
or
URL
;
overrides
-
n
-
N
/
--
no
-
buffer
Disable
buffering
of
the
output
stream
--
no
-
keepalive
Disable
keepalive
use
on
the
connection
--
no
-
sessionid
Disable
SSL
session
-
ID
reusing
(
SSL
)
--
noproxy
Comma
-
separated
list
of
hosts
which
do
not
use
proxy
--
ntlm
Use
HTTP
NTLM
authentication
(
H
)
-
o
/
--
output
<
file
>
Write
output
to
<
file
>
instead
of
stdout
--
pass
<
pass
>
Pass
phrase
for
the
private
key
(
SSL
/
SSH
)
--
post301
Do
not
switch
to
GET
after
following
a
301
redirect
(
H
)
--
post302
Do
not
switch
to
GET
after
following
a
302
redirect
(
H
)
-
#
/
--
progress
-
bar
Display
transfer
progress
as
a
progress
bar
-
x
/
--
proxy
<
host
[
:
port
]
>
Use
HTTP
proxy
on
given
port
--
proxy
-
anyauth
Pick
"any"
proxy
authentication
method
(
H
)
--
proxy
-
basic
Use
Basic
authentication
on
the
proxy
(
H
)
--
proxy
-
digest
Use
Digest
authentication
on
the
proxy
(
H
)
--
proxy
-
negotiate
Use
Negotiate
authentication
on
the
proxy
(
H
)
--
proxy
-
ntlm
Use
NTLM
authentication
on
the
proxy
(
H
)
-
U
/
--
proxy
-
user
<
user
[
:
password
]
>
Set
proxy
user
and
password
--
proxy1
.
0
<
host
[
:
port
]
>
Use
HTTP
/
1.0
proxy
on
given
port
-
p
/
--
proxytunnel
Operate
through
a
HTTP
proxy
tunnel
(
using
CONNECT
)
--
pubkey
<
key
>
Public
key
file
name
(
SSH
)
-
Q
/
--
quote
<
cmd
>
Send
command
(
s
)
to
server
before
file
transfer
(
F
/
SFTP
)
--
random
-
file
<
file
>
File
for
reading
random
data
from
(
SSL
)
-
r
/
--
range
<
range
>
Retrieve
only
the
bytes
within
a
range
--
raw
Pass
HTTP
"raw"
,
without
any
transfer
decoding
(
H
)
-
e
/
--
referer
Referer
URL
(
H
)
-
O
/
--
remote
-
name
Write
output
to
a
file
named
as
the
remote
file
--
remote
-
name
-
all
Use
the
remote
file
name
for
all
URLs
-
R
/
--
remote
-
time
在本地生成文件时,保留远程文件时间
-
X
/
--
request
<
command
>
Specify
request
command
to
use
--
retry
<
num
>
传输出现问题时,重试的次数
--
retry
-
delay
<
seconds
>
传输出现问题时,设置重试间隔时间
--
retry
-
max
-
time
<
seconds
>
传输出现问题时,设置最大重试时间
period
-
S
/
--
show
-
error
显示错误
-
s
/
--
silent
不输出任何东西
--
socks4
<
host
[
:
port
]
>
SOCKS4
proxy
on
given
host
+
port
--
socks4a
<
host
[
:
port
]
>
SOCKS4a
proxy
on
given
host
+
port
--
socks5
<
host
[
:
port
]
>
SOCKS5
proxy
on
given
host
+
port
--
socks5
-
hostname
<
host
[
:
port
]
>
SOCKS5
proxy
,
pass
host
name
to
proxy
--
socks5
-
gssapi
-
service
<
name
>
SOCKS5
proxy
service
name
for
gssapi
--
socks5
-
gssapi
-
nec
Compatibility
with
NEC
SOCKS5
server
-
Y
/
--
speed
-
limit
停止传输速度的限制,速度时间'秒
-
y
/
--
speed
-
time
放弃限速所要的时间。默认为
30
Defaults
to
30
-
2
/
--
sslv2
Use
SSLv2
(
SSL
)
-
3
/
--
sslv3
Use
SSLv3
(
SSL
)
--
stderr
<
file
>
Where
to
redirect
stderr
.
-
means
stdout
--
tcp
-
nodelay
Use
the
TCP_NODELAY
option
-
t
/
--
telnet
-
option
<
OPT
=
val
>
Set
telnet
option
-
z
/
--
time
-
cond
<
time
>
传送时间设置
-
1
/
--
tlsv1
Use
=
>
TLSv1
(
SSL
)
--
tlsv1
.
0
Use
TLSv1
.
0
(
SSL
)
--
tlsv1
.
1
Use
TLSv1
.
1
(
SSL
)
--
tlsv1
.
2
Use
TLSv1
.
2
(
SSL
)
--
trace
<
file
>
Write
a
debug
trace
to
the
given
file
--
trace
-
ascii
<
file
>
Like
--
trace
but
without
the
hex
output
--
trace
-
time
Add
time
stamps
to
trace
/
verbose
output
-
T
/
--
upload
-
file
<
file
>
Transfer
<
file
>
to
remote
site
--
url
<
URL
>
Set
URL
to
work
with
-
B
/
--
use
-
ascii
Use
ASCII
/
text
transfer
-
u
/
--
user
<
user
[
:
password
]
>
Set
server
user
and
password
-
A
/
--
user
-
agent
<
string
>
User
-
Agent
to
send
to
server
(
H
)
-
v
/
--
verbose
Make
the
operation
more
talkative
-
V
/
--
version
Show
version
number
and
quit
-
w
/
--
write
-
out
<
format
>
What
to
output
after
completion
-
q
If
used
as
the
first
parameter
disables
.
curlrc
|
查看天气
首先,打开 Linux 终端或者 Linux 子系统,先来检查一下有没有安装 cURL,输入which curl
,如果有返回信息,比如/usr/bin/curl
,表示 cURL 已经安装,如果没有返回信息,可以使用sudo apt-get update;sudo apt-get install curl # 仅适用于 Debian/Ubuntu
来进行安装。
cURL 准备好以后,就可以来获取天气了,简单来说就是用 cURL 把一个网站的天气信息传回本地,这个网站就是:wttr.in。
我们可以先试一下获取,输入curl wttr.in
,是不是跟网站一模一样,可是输出的都是英文,而且位置有时候也会判断错误,可以通过参数来指定位置和语言。
curl -H "Accept-Language: 语言" wttr.in/地名
,这个地名可以是很多种,可以是城市名称,如:Beijing(北京);机场代码,如:PEK(北京首都国际机场);域名所在位置,如:@mivm.cn(浙江杭州);GPS 坐标,如:-39.9087191,116.3952003(天安门),还有两个,任意位置和区号,不过那个在国内不好用,所以就不说了,至于语言,目前支持的语言:az be bg bs ca cy cs da de el eo es et fi fr hi hr hu hy is it ja jv ka kk ko ky lv mk ml nl nn pt pl ro ru sk sl sr sr-lat sv sw th tr uk uz vi zh zu
,比如我在郑州,输入curl -H "Accept-Language: zh" wttr.in/ZhengZhou
默认获取3天的天气,最多只能获取3天,那么只想获取当天或者1天的天气怎么办呢,继续加参数啊。curl -H "Accept-Language: 语言" wttr.in/地名?天数#
,天数可以指定为:0、1、2,0 表示当前天气,1 表示当前天气 + 1天天气,2 表示当前天气 + 2天天气,比如curl -H "Accept-Language: zh" wttr.in/ZhengZhou?1#
,这个其实是个查看选项,可以使用其他查看选项来更改样式,n:输出显示为窄版;q:不显示“天气预报”字样;Q:不显示“天气预报”和城市名称;T:不显示颜色,这些参数可以配合起来使用,比如curl -H "Accept-Language: zh" wttr.in/ZhengZhou?1T#
查看月相
这个网站不仅可以查询天气,还可以查看月相,至于月相是什么鬼,我也不太清楚,反正能装X就对了。
输入curl wttr.in/moon
即可查看月相,可以指定日期来查看,比如curl wttr.in/moon@2016-10-25
以后如果有人问你你那里的天气怎么样,你就可以用这种方法来获取天气,然后截图装X,哈哈哈。