Linux必备命令之curl详解
curl简介
curl是一个非常实用的工具,用于与服务器之间进行数据传输,支持的协议众多,包括DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP等。curl被设计为无需用户交互即可完成工作,xwiki 创建用户源码它提供了一系列非常有用的功能,如代理访问、用户认证、ftp上传下载、HTTP POST、SSL连接、cookie支持、断点续传等。
curl用法
curl命令语法和参数详解。由于curl功能强大,所以命令参数繁多。下表只列出部分参数,更多参数请运行“man curl”命令查看。
curl参数选项
常用选项分类。以下是一些常用的curl实例:
抓取页面内容到一个文件中,使用-O选项,确保url后面跟具体文件名,否则无法抓取。可以使用正则表达式来抓取所需内容。
模拟用户登录,模拟表单信息,模拟登录并保存cookie信息。使用-c选项保存cookie,而-D选项中的源码透传设备cookie则不同。
使用cookie文件进行断点续传,使用-C选项传送数据。最好在登录页面测试,因为你可以看到传值是否成功。
显示抓取错误,使用-f选项伪造来源地址,避免网站屏蔽。使用-e选项设置代理。分段下载,将文件片段cat合并。
不显示下载进度信息,使用-s选项显示下载进度条。通过ftp下载文件或上传文件,使用ftp命令。
收集快速用法,配合sed/awk/grep进行下载保存,GET和POST文件,通过代理保存cookie,使用cookie模仿浏览器伪造referer。高级下载功能包括循环下载、匹配下载、引用下载、断点续传和分块下载。
curl语法及选项整理
curl(7..0)所支持的选项参数如下:
linux访问网址命令
linux系统下访问网址命令是什么呢?下面是具体介绍:
linux系统下访问网址命令是curl命令,在命令行中利用URL进行数据或者文件传输,直接在curl命令后加上网址,就可以看到网页源码。
curl命令常见用法;
查看网页源码:
curl+网址
如果要把这个网页保存下来,可以使用-o参数,mdm超级签源码这就相当于使用wget命令了。
curl -o [文件名]+网址
自动跳转:
有的网址是自动跳转的。使用-L参数,curl就会跳转到新的网址。
curl -L/item.htm?id= 键入上面的命令,结果就自动跳转为/item.htm?id=
显示头信息:
-i 参数可以显示
执行后,www.linux.com 的html就会显示在屏幕上了
Ps:由于安装linux的时候很多时候是没有安装桌面的,也意味着没有浏览器,因此这个方法也经常用于测试一台服务器是否可以到达一个网站
2、保存访问的网页
2.1:使用linux的重定向功能保存
代码如下:
# curl linux.html
2.2:可以使用curl的内置option:-o(小写)保存网页
代码如下:
$ curl -o linux.html
执行完成后会显示如下界面,显示%则表示保存成功
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 k 0 --:--:-- --:--:-- --:--:-- k
2.3:可以使用curl的内置option:-O(大写)保存网页中的文件
要注意这里后面的url要具体到某个文件,不然抓不下来
代码如下:
# curl -O /hello.sh
3、测试网页返回值
代码如下:
# curl -o /dev/null -s -w %{
Ps:在脚本中,这是很常见的测试网站是否正常的用法
4、指定proxy服务器以及其端口
很多时候上网需要用到代理服务器(比如是使用代理服务器上网或者因为使用curl别人网站而被别人屏蔽IP地址的时候),幸运的是curl通过使用内置option:-x来支持设置代理
代码如下:
# curl -x ...:
5、cookie
有些网站是使用cookie来记录session信息。对于chrome这样的浏览器,可以轻易处理cookie信息,但在curl中只要增加相关参数也是可以很容易的处理cookie
5.1:保存
执行后cookie信息就被存到了cookiec.txt里面了
5.2:保存
执行后cookie信息就被存到了cookied.txt里面了
注意:-c(小写)产生的cookie和-D里面的cookie是不一样的。
5.3:使用cookie
很多网站都是通过监视你的cookie信息来判断你是否按规矩访问他们的网站的,因此我们需要使用保存的cookie信息。内置option: -b
代码如下:
# curl -b cookiec.txt
6、模仿浏览器
有些网站需要使用特定的浏览器去访问他们,有些还需要使用某些特定的版本。curl内置option:-A可以让我们指定浏览器去访问网站
代码如下:
# curl -A "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.0)"
这样服务器端就会认为是使用IE8.0去访问的
7、伪造referer(盗链)
很多服务器会检查"
这样就会让服务器其以为你是从www.linux.com点击某个链接过来的
8、下载文件
8.1:利用curl下载文件。
代码如下:
#使用内置option:-o(小写)
# curl -o dodo1.jpg /dodo1.JPG
#使用内置option:-O(大写)
# curl -O /dodo1.JPG
这样就会以服务器上的多商家php源码名称保存文件到本地
8.2:循环下载
有时候下载可以能是前面的部分名称是一样的,就最后的尾椎名不一样
代码如下:
# curl -O /dodo[1-5].JPG
这样就会把dodo1,dodo2,dodo3,dodo4,dodo5全部保存下来
8.3:下载重命名
代码如下:
# curl -O /{ hello,bb}/dodo[1-5].JPG
由于下载的hello与bb中的文件名都是dodo1,dodo2,dodo3,dodo4,dodo5。因此第二次下载的会把第一次下载的覆盖,这样就需要对文件进行重命名。
代码如下:
# curl -o #1_#2.JPG /{ hello,bb}/dodo[1-5].JPG
这样在hello/dodo1.JPG的文件下载下来就会变成hello_dodo1.JPG,其他文件依此类推,从而有效的避免了文件被覆盖
8.4:分块下载
有时候下载的东西会比较大,这个时候我们可以分段下载。使用内置option:-r
复制代码
代码如下:
# curl -r 0- -o dodo1_part1.JPG /dodo1.JPG
# curl -r - -o dodo1_part2.JPG /dodo1.JPG
# curl -r - -o dodo1_part3.JPG /dodo1.JPG
# cat dodo1_part* dodo1.JPG
这样就可以查看dodo1.JPG的内容了
8.5:通过ftp下载文件
curl可以通过ftp下载文件,curl提供两种从ftp中下载的语法
代码如下:
# curl -O -u 用户名:密码 ftp://www.linux.com/dodo1.JPG
# curl -O ftp://用户名:密码@www.linux.com/dodo1.JPG
8.6:显示下载进度条
代码如下:
# curl -# -O /dodo1.JPG
8.7:不会显示下载进度信息
代码如下:
# curl -s -O /dodo1.JPG
9、断点续传
在windows中,我们可以使用迅雷这样的软件进行断点续传。curl可以通过内置option:-C同样可以达到相同的效果
如果在下载dodo1.JPG的过程中突然掉线了,可以使用以下的方式续传
复制代码
代码如下:
# curl -C -O /dodo1.JPG
、上传文件
curl不仅仅可以下载文件,还可以上传文件。通过内置option:-T来实现
复制代码
代码如下:
# curl -T dodo1.JPG -u 用户名:密码 ftp://www.linux.com/img/
这样就向ftp服务器上传了文件dodo1.JPG
、显示抓取错误
复制代码
代码如下:
# curl -f /error
其他参数(此处翻译为转载):
-a/--append 上传文件时,附加到目标文件
--anyauth 可以使用“任何”身份验证方法
--basic 使用HTTP基本验证
-B/--use-ascii 使用ASCII文本传输
-d/--data HTTP POST方式传送数据
--data-ascii 以ascii的方式post数据
--data-binary 以二进制的方式post数据
--negotiate 使用HTTP身份验证
--digest 使用数字身份验证
--disable-eprt 禁止使用EPRT或LPRT
--disable-epsv 禁止使用EPSV
--egd-file 为随机数据(SSL)设置EGD socket路径
--tcp-nodelay 使用TCP_NODELAY选项
-E/--cert
--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
--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
-form-string
-g/--globoff 禁用网址序列和范围使用{ }和[]
-G/--get 以get的方式来发送数据
-h/--help 帮助
-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 禁用缓冲输出
-p/--proxytunnel 使用HTTP代理
--proxy-anyauth 选择任一代理身份验证方法
--proxy-basic 在代理上使用基本身份验证
--proxy-digest 在代理上使用数字身份验证
--proxy-ntlm 在代理上使用ntlm身份验证
-P/--ftp-port
使用端口地址,而不是使用PASV
-Q/--quote 文件传输前,发送命令到服务器
--range-file 读取(SSL)的随机文件
-R/--remote-time 在本地生成文件时,保留远程文件时间
--retry 传输出现问题时,更改电脑时间源码重试的次数
--retry-delay 传输出现问题时,设置重试间隔时间
--retry-max-time 传输出现问题时,设置最大重试时间
-S/--show-error 显示错误
--socks4
--socks5
-t/--telnet-option
--trace 对指定文件进行debug
--trace-ascii Like --跟踪但没有hex输出
--trace-time 跟踪/详细输出时,添加时间戳
--url Spet URL to work with
-U/--proxy-user
-V/--version 显示版本信息
-X/--request 指定什么命令
-y/--speed-time 放弃限速所要的时间。默认为
-Y/--speed-limit 停止传输速度的限制,速度时间'秒
-z/--time-cond 传送时间设置
-0/--/ubuntu/ls-lR.gz
.
当然,还可以获取连接时间、重定向时间等更多的数据:
复制代码
代码如下:
# curl -Lo /dev/null -skw "time_connect: %{ time_connect} sntime_namelookup: %{ time_namelookup} sntime_pretransfer: %{ time_pretransfer} sntime_starttransfer: %{ time_starttransfer} sntime_redirect: %{ time_redirect} snspeed_download: %{ speed_download} B/sntime_total: %{ time_total} snn"
time_connect: 0. s
time_namelookup: 0. s
time_pretransfer: 0. s
time_starttransfer: 0. s
time_redirect: 0. s
speed_download: . B/s
time_total: 1. s
linux 上 curl是什么意思
在Linux系统中,curl是一个强大的工具,它主要用于从互联网上获取和传输数据。当你在命令行中使用`curl`时,选项`-s`是一个关键参数。这个参数(silent)意味着curl会隐藏或抑制默认的输出,仅返回请求的网页源代码,便于开发者或用户查看和分析网页结构。它不显示任何额外的交互信息或者网络请求的详细过程,提供简洁的结果。
另一个选项`-m`(--max-time)则用于设置请求的最大等待时间。当你使用`-m `时,curl会尝试在秒内获取网页源码。如果在这段时间内无法完成任务,curl会自动放弃并返回错误信息,而不是无限制地等待。这对于处理网络不稳定或响应速度慢的情况非常有用,因为它能确保你的程序不会因为长时间等待而陷入死锁。
简而言之,`curl -s`用于获取网页源代码的简洁输出,而`-m`则提供了超时控制,以优化网络请求的效率。在Linux中,这两个选项是curl命令行操作中常见的实用功能。
编译curl库Linux环境下挑战curllinux编译
cURL是一个开放源码、轻量级的网络协议,它既可以让你发送HTTP请求,又可以接收它们,它能够支持大量其他协议(包括FTP、TFTP、SMTP等)。编译Curl库是一个挑战,尤其是在Linux环境下。
为了编译cURL,首先我们需要将其加载到计算机上。下载最新版本的压缩源代码,直接从官网下载,或者从GitHub/ BitBucket库中下载,.tar.gz 和.zip 格式是常用的压缩文件。
接下来,需要解压源码,通过终端进入下载的目录,然后用 tar -xvzf curl-*cmd 或 unzip curl-*cmd 命令来解压源码。接着,进行源代码的配置,在源代码根目录下使用 ./configure&&make命令来配置和编译,make install 命令安装cURL库。
接着,我们需要添加cURL库的头文件路径到系统环境变量,通过 vi c_profile/etc/profile 编辑/etc/profile 添加对应的路径,这样,系统就可以识别头文件和静态库。
最后,我们可以通过 include<sys/curl.h>来引入cURL库。运行程序,检查是否安装成功,如果正常,即可以使用cURL进行开发了。
编译curl库是一个挑战,Linux环境中要求一点技术细节,除了需要下载源码外,还需要解压、添加头文件路径和检查安装是否完成等。通过上述步骤,在Linux操作系统下编译cURL库也不再难上加难。
linux怎么获得网页源码。
操作设备:戴尔电脑操作系统:win
操作软件:linux
1、首先连接相应linux主机,进入到linux命令行状态下,等待输入shell指令。
2、其次在linux命令行中输入:curl 。
3、最后按下回车键执行shell指令,此时会看到网页被成功打开获取到了源代码。
linux之curl命令
Curl命令:强大的文件传输工具
Curl是一个功能强大的命令行工具,它基于URL规则,支持多种协议(如HTTP、HTTPS、FTP)以及丰富的功能,如文件上传下载、POST请求、cookies处理、认证、断点续传、设置请求头、模仿请求等。它不仅能下载文件,还具备高效、灵活的上传能力。命令语法与选项:
下载文件:使用小写-o或大写-O选项将文件保存到指定位置,后者保留原文件名。
显示进度:--progress选项用于在下载时显示进度条。
断点续传:通过-C选项实现,使用-C-自动续传,否则需指定断点位置。
特殊功能:
伪造请求来源:使用--referer或-H选项设置Referer字段。
认证与请求头:通过-u选项进行HTTP或FTP认证,可以指定密码或后续输入。
模拟请求:
GET请求:直接显示响应内容或详细过程。
POST请求:-d或--data-urlencode用于发送POST数据,支持JSON格式和文件上传。
其他功能:
重定向:-L启用重定向跟随。
调试:-v选项显示通信完整过程。
其他选项如:输出控制、上传文件、限制带宽等。
示例用法:- curl rumenz.com --silent - 静默模式访问
- curl rumenz.com/1.html -o 2.html - 下载到本地文件
- curl -O -u 'rumenz':'test' ftp://rumenz.com/jdk.tar.gz - 使用用户名密码下载FTP文件
CURL库开发——嵌入式linux网络编程
在嵌入式Linux系统中,网络编程是一项重要技能。C语言的libcurl库作为URL处理的核心工具,支持多种网络协议,如FTP、HTTP、HTTPS等。URL,即统一资源定位符,是网络编程中连接服务器和请求资源的基础。
libcurl的工作原理是:它接收应用程序传递的URL字符串,解析出协议、域名、端口等信息,然后建立TCP连接,将URL内容发送到服务器。服务器响应后,libcurl将结果传递给应用程序的特定处理库,如HTTP库,处理服务器的响应数据。
使用libcurl的步骤通常包括:首先从libcurl官网下载库文件,然后通过./config进行编译配置,支持自定义安装路径和编译选项。编译过程涉及解压、配置、编译和安装步骤,完成后,通过CURL指针调用库函数进行网络请求,如设置HTTP头、URL、输出文件路径等,最后通过curl_easy_perform()发起请求。
libcurl的实际应用价值在于它的通用性和灵活性,它能将任意数据转化为网络请求,比如通过HTTP请求获取并拼接为URL,进一步实现图像或视频的传输。通过libcurl,开发者能高效地在嵌入式Linux环境中处理网络请求,实现数据传输和应用开发。
Linux系统如何安装curl。
在Linux系统中安装curl非常简单,这个强大的命令行工具适用于多种Web相关测试和自动化任务。以下是安装步骤的详细指南。
curl,作为文本传输工具,其安装过程如下:
首先,从curl官方网站下载最新版本的安装包,如:curl-7..1.tar.gz,使用wget命令获取:
# wget
对于初学者,这里有一份入门教程供参考:
/topic/
发送POST请求的实例也已给出,例如向/loc/json发送数据:
# curl -d @json /loc/json
安装完成后,如果你有任何疑问,可以在相关论坛或评论区提问,我们乐意帮助解答:
http://cr
2024-11-20 16:18
2024-11-20 15:30
2024-11-20 15:10
2024-11-20 15:05
2024-11-20 14:17