怎样用腾讯云做网站,企业网站源码进一品资源网,千岛湖建设集团有限公司网站,什么是软件的开发平台0 前言
在网络时代#xff0c;有经常需要在网络上传输数据#xff0c;时我们需要通过网络下载文件#xff0c;为了满足这种时代需要#xff0c;Linux提供了众多网络命令#xff0c;我们今天先研究curl命令。例如#xff0c;我们可以使用 curl 从 URL 下载文件#xff0… 0 前言
在网络时代有经常需要在网络上传输数据时我们需要通过网络下载文件为了满足这种时代需要Linux提供了众多网络命令我们今天先研究curl命令。例如我们可以使用 curl 从 URL 下载文件或将文件上传到服务器。
1 curl命令 的功能、格式和选项说明 我们可以使用 curl --man | more 命令查看curl命令 的帮助信息。
[purpleEndurer bash ~]curl --man | more_ _ ____ _Project ___| | | | _ \| |/ __| | | | |_) | || (__| |_| | _ | |___\___|\___/|_| \_\_____|NAMEcurl - transfer a URLSYNOPSIScurl [options] [URL...]DESCRIPTIONcurl is a tool to transfer data from or to a server, using one o
f thesupported protocols (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP,IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS,TELNET and TFTP). The command is designed to work without user inter-action.curl offers a busload of useful tricks like proxy support, user authen-tication, FTP upload, HTTP post, SSL connections, cookies, file trans-fer resume, Metalink, and more. As you will see below, the number of
--More-- 1.1 curl命令 的功能
curl 是 client url 或 command line url 的缩写。
curl是一个从命令行通过互联网传输数据的工具它可以利用HTTP、HTTPS、FTP和SFTP等多种协议从网络服务器传输数据或将数据传输到网络服务器。
除了进行文件传输我们还可使用 curl命令 从终端发出 HTTP 请求如 GET 和 POST。这在测试或与网络服务和 API 交互时非常有用。
利用 curl命令我们可以在不打开浏览器的情况下检查网页内容因为它可以获取并显示原始数据。 1.2 curl命令的格式
除了 curl --man命令我们也可以使用curl --help命令获取curl命令的格式和选项说明。
[purpleEndurer bash ~]curl --help
Usage: curl [options...] url
Options: (H) means HTTP/HTTPS only, (F) means FTP only--anyauth Pick any authentication method (H)-a, --append Append to target file when uploading (F/SFTP)--basic Use HTTP Basic Authentication (H)--cacert FILE CA certificate to verify peer against (SSL)--capath DIR 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 STRING/FILE String or file to read cookies from (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 data (H)--data-ascii DATA HTTP POST ASCII data (H)--data-binary DATA HTTP POST binary data (H)--data-urlencode DATA HTTP POST data url encoded (H)--delegation STRING GSS-API delegation permission--digest Use HTTP Digest Authentication (H)--disable-eprt Inhibit using EPRT or LPRT (F)--disable-epsv Inhibit using EPSV (F)-D, --dump-header FILE Write the headers to this file--egd-file FILE EGD socket path for random data (SSL)--engine ENGINGE Crypto engine (SSL). --engine list for list-f, --fail Fail silently (no output at all) on HTTP errors (H)-F, --form CONTENT Specify HTTP multipart POST data (H)--form-string STRING Specify HTTP multipart POST data (H)--ftp-account DATA Account data string (F)--ftp-alternative-to-user COMMAND String to replace USER [name] (F)--ftp-create-dirs Create the remote dirs if not present (F)--ftp-method [MULTICWD/NOCWD/SINGLECWD] Control CWD usage (F)--ftp-pasv Use PASV/EPSV instead of PORT (F)-P, --ftp-port ADR Use PORT with given address instead of PASV (F)--ftp-skip-pasv-ip Skip the IP address for PASV (F)--ftp-pret Send PRET before PASV (for drftpd) (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)-G, --get Send the -d data with a HTTP GET (H)-g, --globoff Disable URL sequences and ranges using {} and []-H, --header LINE Custom header to pass to server (H)-I, --head Show document info only-h, --help This help text--hostpubmd5 MD5 Hex encoded MD5 string of the host public key. (SSH)-0, --http1.0 Use HTTP 1.0 (H)--ignore-content-length Ignore the HTTP Content-Length header-i, --include Include protocol headers in the output (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 RANGE Force use of these local port numbers-L, --location Follow redirects (H)--location-trusted like --location and send auth to other hosts (H)-M, --manual Display the full manual--mail-from FROM Mail from this address--mail-rcpt TO Mail to this receiver(s)--mail-auth AUTH Originator address of the original email--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--metalink Process given URLs as metalink XML file--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--netrc-file FILE Set up the netrc filename to use-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 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)--post303 Do not switch to GET after following a 303 redirect (H)-#, --progress-bar Display transfer progress as a progress bar--proto PROTOCOLS Enable/disable specified protocols--proto-redir PROTOCOLS Enable/disable specified protocols on redirect-x, --proxy [PROTOCOL://]HOST[:PORT] Use 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] 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 transfer (F/SFTP)--random-file FILE File for reading random data from (SSL)-r, --range RANGE Retrieve only the bytes within a range--raw Do HTTP raw, without any transfer decoding (H)-e, --referer Referer URL (H)-J, --remote-header-name Use the header-provided filename (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 Set the remote files time on the local output-X, --request COMMAND Specify request command to use--resolve HOST:PORT:ADDRESS Force resolve of HOST:PORT to ADDRESS--retry NUM Retry request NUM times if transient problems occur--retry-delay SECONDS When retrying, wait this many seconds between each--retry-max-time SECONDS Retry only within this period-S, --show-error Show error. With -s, make curl show errors when they occur-s, --silent Silent mode. Dont output anything--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-basic Enable username/password auth for SOCKS5 proxies--socks5-gssapi Enable GSS-API auth for SOCKS5 proxies--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 RATE Stop transfers below speed-limit for speed-time secs-y, --speed-time SECONDS Time for trig speed-limit abort. Defaults to 30--ssl Try SSL/TLS (FTP, IMAP, POP3, SMTP)--ssl-reqd Require SSL/TLS (FTP, IMAP, POP3, SMTP)-2, --sslv2 Use SSLv2 (SSL)-3, --sslv3 Use SSLv3 (SSL)--ssl-allow-beast Allow security flaw to improve interop (SSL)--stderr FILE Where to redirect stderr. - means stdout--tcp-nodelay Use the TCP_NODELAY option-t, --telnet-option OPTVAL Set telnet option--tftp-blksize VALUE Set TFTP BLKSIZE option (must be 512)-z, --time-cond TIME Transfer based on a time condition-1, --tlsv1 Use TLSv1 (SSL)--tlsv1.0 Use TLSv1.0 (SSL)--tlsv1.1 Use TLSv1.1 (SSL)--tlsv1.2 Use TLSv1.2 (SSL)--tlsv1.3 Use TLSv1.3 (SSL)--tls-max VERSION Use TLS up to VERSION (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--tr-encoding Request compressed transfer encoding (H)-T, --upload-file FILE Transfer FILE to destination--url URL URL to work with-B, --use-ascii Use ASCII/text transfer-u, --user USER[:PASSWORD] Server user and password--tlsuser USER TLS username--tlspassword STRING TLS password--tlsauthtype STRING TLS authentication type (default SRP)--unix-socket FILE Connect through this UNIX domain socket-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--xattr Store metadata in extended file attributes-q If used as the first parameter disables .curlrc
[purpleEndurer bash ~]
curl命令的格式 curl [选项] 统一资源定位符 1.3 curl选项说明
curl的选项是目前所学的命令中最多的一个。
说明中的H 表示仅 HTTP/HTTPSF 表示仅 FTP
选项说明--anyauth选择“any”认证方式H-a--append上传时追加到目标文件 F/SFTP--basic使用 HTTP 基本身份验证 H--cacert FILECA 证书以验证对等方 SSL--capath用于验证对等体的 DIR CA 目录 SSL-E--cert CERT[:PASSWD]客户端证书文件和密码 SSL--cert-type TYPE证书文件类型 DER/PEM/ENG SSL--ciphers列出要使用的 SSL 密码 SSL--compressed请求压缩响应使用 deflate 或 gzip-K--config FILE指定要读取的配置文件--connect-timeout SECONDS允许的最大连接时间-C--continue-at OFFSET恢复传输偏移-b--cookie STRING/FILE从中读取 cookie 的字符串或文件 H-c--cookie-jar FILE操作后将 cookie 写入指定文件 H--create-dirs创建必要的本地目录层次结构--crlf在上传中将 LF 转换为 CRLF--crlfile FILE从给定文件中获取 PEM 格式的 CRL 列表-d--data DATAHTTP POST 数据 H--data-ascii DATAHTTP POST ASCII数据H--data-binary DATAHTTP POST 二进制数据 H--data-urlencode DATAHTTP POST 数据 url 编码 H--delegation STRINGGSS-API 委托权限--digest使用 HTTP 摘要身份验证 H--disable-eprt使用 EPRT 或 LPRT 抑制 F--disable-epsv使用 EPSV 抑制 F-D--dump-header FILE将头文件写入此文件--egd-file FILE随机数据 的 EGD 套接字路径SSL--engine ENGINGE加密引擎 。列表为“--engine list”SSL-f--fail在 HTTP 错误 上静默失败完全没有输出H-F--form CONTENT指定 HTTP 多部分 POST 数据 H--form-string STRING指定 HTTP 多部分 POST 数据 H--ftp-account DATA帐户数据字符串 F--ftp-alternative-to-user COMMAND用于替换“USER [name]”的命令字符串 F--ftp-create-dirs远程目录如果不存在就创建F--ftp-method [MULTICWD/NOCWD/SINGLECWD]控制 CWD 使用 F--ftp-pasv使用 PASV/EPSV 代替 PORT F-P--ftp-port ADR使用具有给定地址的 PORT 而不是 PASV F--ftp-skip-pasv-ip跳过 PASV 的 IP 地址 F--ftp-pret在 PASV 之前发送 PRET 对于 drftpd F--ftp-ssl-ccc认证后发送 CCC F--ftp-ssl-ccc-mode ACTIVE/PASSIVE设置 CCC 模式 F--ftp-ssl-controlFTP 登录需要 SSL/TLS传输需要清除 F-G--get使用 HTTP GET 发送 -d 数据H-g--globoff使用 {} 和 [] 禁用 URL 序列和范围-H--header LINE自定义头文件传递给服务器 H-I--head仅显示文档信息-h--help此帮助文本--hostpubmd5 MD5主机公钥的十六进制编码的 MD5 字符串。SSH-0--http1.0使用 HTTP 1.0 H--ignore-content-length忽略 HTTP Content-Length 头-i--include在输出中包含协议头 H/F-k--insecure允许连接到没有证书的 SSL 站点 H--interface INTERFACE指定要使用的网络接口/地址-4--ipv4将名称解析为 IPv4 地址-6--ipv6将名称解析为 IPv6 地址-j--junk-session-cookies忽略从文件读取的会话 cookie H --keepalive-time SECONDSkeepalive 探测之间的间隔--key KEY私钥文件名 SSL/SSH--key-type TYPE私钥文件类型 DER/PEM/ENG SSL--krb LEVEL启用具有指定安全级别的 Kerberos F --libcurl FILEDump libcurl 等效的此命令行代码--limit-rate RATE将传输速度限制为指定速率-l--list-only仅列出 FTP 目录的名称 F--local-port RANGE强制使用这些本地端口号-L--location跟随重定向 H--location-trusted类似 --location 并将身份验证发送到其他主机 H-M, --manual显示完整手册--mail-from FROM来自此地址的邮件--mail-rcpt TO发送邮件到此收件人--mail-auth AUTH原始电子邮件的发件人地址--max-filesize BYTES下载的最大文件大小 H/F--max-redirs NUM允许的最大重定向数 H-m--max-time SECONDS允许传输的最大时间--metalink将给定的 URL 处理为元链接 XML 文件--negotiate使用 HTTP 协商身份验证 H-n--netrc用户名和密码必须读取 .netrc--netrc-optional使用 .netrc 或 URL;覆盖 -n--netrc-file FILE设置要使用的 netrc 文件名-N--no-buffer禁用输出流的缓冲--no-keepalive在连接上禁用 keepalive 使用--no-sessionid禁用 SSL 会话 ID 重用 SSL--noproxy不使用代理的主机列表--ntlm使用 HTTP NTLM 身份验证 H-o--output FILE将输出写入文件而不是标准输出--pass PASS私钥的密码短语 SSL/SSH--post301遵循 301 重定向后不要切换到 GET H--post302遵循 302 重定向后不要切换到 GET H--post303遵循 303 重定向后不要切换到 GET H-#--progress-bar将传输进度显示为进度条--proto PROTOCOLS启用/禁用指定协议--proto-redir PROTOCOLS在重定向时启用/禁用指定协议-x--proxy [PROTOCOL://]HOST[:PORT]在给定端口上使用代理--proxy-anyauth选择“any”代理认证方式 H--proxy-basic在代理上使用基本身份验证 H--proxy-digest在代理上使用摘要式身份验证 H--proxy-negotiate在代理上使用 Negotiate 身份验证 H--proxy-ntlm在代理上使用 NTLM 身份验证 H-U--proxy-user USER[:P ASSWORD]代理用户和密码--proxy1.0 HOST[:P ORT]在给定端口上使用 HTTP/1.0 代理-p--proxytunnel通过 HTTP 代理隧道进行操作使用 CONNECT--pubkey KEY公钥文件名 SSH-Q--quote CMD在传输之前向服务器发送命令 F/SFTP--random-file FILE用于从中读取随机数据的文件 SSL-r--range RANGE仅检索范围内的字节--raw做 HTTP “raw”不带任何传输解码 H-e--refererReferer URL H-J--remote-header-name使用头提供的文件名 H-O--remote-name将输出写入以远程文件方式命名的文件中--remote-name-all对所有 URL 使用远程文件名-R--remote-time在本地输出上设置远程文件的时间-X--request COMMAND指定要使用的请求命令--resolve HOSTPORTADDRESS强制将 HOSTPORT 解析为 ADDRESS--retry NUM如果出现暂时性问题请重试请求 NUM 次--retry-delay SECONDS重试时在每次之间等待这指定秒数--retry-max-time SECONDS仅在旨定时间段内重试-S--show-error显示错误。使用 -s使 curl 在发生错误时显示错误-s--silent静音模式。不输出任何内容--socks4 HOST[:PORT]给定主机 端口上的 SOCKS4 代理--socks4a HOST[:PORT]给定主机 端口上的 SOCKS4a 代理--socks5 HOST[:PORT]给定主机 端口上的 SOCKS5 代理--socks5-basic为 SOCKS5 代理启用用户名/密码身份验证--socks5-gssapi为 SOCKS5 代理启用 GSS-API 身份验证--socks5-hostname HOST[:PORT]SOCKS5代理将主机名传递给代理--socks5-gssapi-service NAMEsocks5 gssapi 的代理服务名称--socks5-gssapi-nec与 NEC SOCKS5 服务器的兼容性-Y--speed-limit RATE停止低于速度限制的传输持续 speed-time 秒-y--speed-time SECONDS触发限速中止的时间。默认值为 30--ssl尝试 SSL/TLS FTP、IMAP、POP3、SMTP--ssl-reqd需要 SSL/TLSFTP、IMAP、POP3、SMTP-2--sslv2使用 SSLv2 SSL-3--sslv3使用 SSLv3 SSL--ssl-allow-beast允许安全漏洞改进互操作 SSL--stderr FILE将 stderr标准错误 重定向到何处。- 表示 stdout(标准输出)--tcp-nodelay使用 TCP_NODELAY 选项-t--telnet-option OPTVAL设置 telnet 选项--tftp-blksize VALUE设置 TFTP BLKSIZE 选项必须为 512-z--time-cond基于时间条件的 TIME 传输-1--tlsv1使用 TLSv1 SSL--tlsv1.0使用 TLSv1.0 SSL--tlsv1.1使用 TLSv1.1 SSL--tlsv1.2使用 TLSv1.2 SSL--tlsv1.3使用 TLSv1.3 SSL--tls-max VERSION使用TLS最高版本SSL--trace FILE将调试跟踪写入给定文件--trace-ascii FILE类似于 --trace但没有十六进制输出--trace-time为跟踪/详细输出添加时间戳--tr-encoding请求压缩传输编码 H -T--upload-file FILE将 FILE 传输到目标--url URL要处理的 URL-B--use-ascii使用 ASCII/文本传输-u--user USER[:PASSWORD]服务器用户和密码--tlsuser 用户TLS 用户名--tlspassword STRINGTLS 密码--tlsauthtype STRINGTLS 身份验证类型默认 SRP--unix-socket FILE通过此 UNIX 域套接字连接-A--user-agent STRINGUser-Agent 发送到服务器 H-v--verbose使操作更详细-V--version显示版本号并退出-w--write-outFORMAT 完成后输出什么--xattr在扩展文件属性中存储元数据-q如果用作第一个参数则禁用 .curlrc
2 curl命令应用实例
2.1 curl 显示获取本命令的帮助或手册信息的格式
[purpleEndurer bash ~] curl
curl: try curl --help or curl --manual for more information
[purpleEndurer bash ~] 我们可以尝试 使用命令 curl --help 或 curl --manual 来了解更多信息。
2.2 curl 统一资源定位符显示指定统一资源定位符的内容源代码
这里的 统一资源定位符 可以是网站域名或网页地址。
2.2.1 curl g.cn 显示g.cn的源代码
[purpleEndurer bash ~] curl g.cn
HTMLHEADmeta http-equivcontent-type contenttext/html;charsetutf-8
TITLE301 Moved/TITLE/HEADBODY
H1301 Moved/H1
The document has moved
A HREFhttps://google.cn/here/A.
/BODY/HTML
[purpleEndurer bash ~] 2.1.2 curl www.google.cn显示 www.google.cn 的源代码。
[purpleEndurer bash ~] curl www.google.cn
!DOCTYPE html
html langzhheadmeta charsetutf-8titleGoogle/titlestylehtml { background: #fff; margin: 0 1em; }body { font: .8125em/1.5 arial, sans-serif; text-align: center; }h1 { font-size: 1.5em; font-weight: normal; margin: 1em 0 0; }p#footer { color: #767676; font-size: .77em; }p#footer a { background: url(//www.google.cn/intl/zh-CN_cn/images/cn_icp.gif) top right no-repeat; padding: 5px 20px 5px 0; }ul { margin: 2em; padding: 0; }li { display: inline; padding: 0 2em; }div { -moz-border-radius: 20px; -webkit-border-radius: 20px; border: 1px solid #ccc; border-radius: 20px; margin: 2em auto 1em; max-width: 650px; min-width: 544px; }div:hover, div:hover * { cursor: pointer; }div:hover { border-color: #999; }div p { margin: .5em 0 1.5em; }img { border: 0; }/style/headbodydiva hrefhttps://www.google.com.hk/webhp?hlzh-CNamp;sourceidcnhpimg src//www.google.cn/intl/zh-CN_cn/landing/cnexp/google-search.png altGoogle width586 height257/ah1a hrefhttps://www.google.com.hk/webhp?hlzh-CNamp;sourceidcnhpstrong idtargetgoogle.com.hk/strong/a/h1p请收藏我们的网址/divp idfooterspanICP证合字B2-20070004号/span/p/body
/html
[purpleEndurer bash ~] 2.3 将统一定位符资源保存到文件
2.3.1 方法1curl 统一定位符 文件名
第1种方法是使用输出重定向功能将curl命令的输出重定向到指定的文件。
[purpleEndurer bash ~] curl g.cn g.htm% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed
100 215 100 215 0 0 1934 0 --:--:-- --:--:-- --:--:-- 1919
[purpleEndurer bash ~] cat g.htm
HTMLHEADmeta http-equivcontent-type contenttext/html;charsetutf-8
TITLE301 Moved/TITLE/HEADBODY
H1301 Moved/H1
The document has moved
A HREFhttps://google.cn/here/A.
/BODY/HTML
[purpleEndurer bash ~] 在这个实例中我们先用命令 curl g.cn g.htm 将g.cn的源代码重定向到g.htm这时curl命令在标准输出stdout显示的就不再像例2.2.1那样显示g.cn的源代码而是 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 215 100 215 0 0 1934 0 --:--:-- --:--:-- --:--:-- 1919 然后我们使用 cat g.htm命令查看 g.htm的内容
接着我们可以使用 命令 du -h g.htm 查看g.htm的文件大小
[purpleEndurer bash ~] du -h g.htm
4.0K g.htm
[purpleEndurer bash ~] 2.3.2 方法2 使用-o选项curl -o 文件名 统一资源定位符
[purpleEndurer bash ~] curl -o g.html g.cn% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed
100 215 100 215 0 0 1205 0 --:--:-- --:--:-- --:--:-- 1201
[purpleEndurer bash ~] du -l g.html
4 g.html
[purpleEndurer bash ~] cat g.html
HTMLHEADmeta http-equivcontent-type contenttext/html;charsetutf-8
TITLE301 Moved/TITLE/HEADBODY
H1301 Moved/H1
The document has moved
A HREFhttps://google.cn/here/A.
/BODY/HTML
[purpleEndurer bash ~] 我们首先使用 curl -o g.html g.cn命令将g.cn的内容保存到g.html然后分别使用du命令查看g.html的文件大小用cat命令查看g.html的文件内容。
2.3.3 方法3 使用-O选项curl -O 统一资源定位符
[purpleEndurer bash ~] curl -O g.cn
curl: Remote file name has no length!
curl: try curl --help or curl --manual for more information
[purpleEndurer bash ~] 居然没有保存下来原因是我们在这里只指定了g.cn这个域名而没有指定具体的文件名所以curl提示远程文件名没有长度。
当我们使用命令curl -O www.g.cn/index.htm指定了index.htm这个具体的文件名资源就可以保存下来了
[purpleEndurer bash ~] curl -O www.g.cn/index.htm% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed
100 1570 100 1570 0 0 23439 0 --:--:-- --:--:-- --:--:-- 23787
[purpleEndurer bash ~] ls
Code index.htm
[purpleEndurer bash ~] cat index.htm
!DOCTYPE html
html langenmeta charsetutf-8meta nameviewport contentinitial-scale1, minimum-scale1, widthdevice-widthtitleError 404 (Not Found)!!1/titlestyle*{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}/stylea href//www.google.com/span idlogo aria-labelGoogle/span/apb404./b insThat’s an error./inspThe requested URL code/index.htm/code was not found on this server. insThat’s all we know./ins
[purpleEndurer bash ~] du -l index.htm
4 index.htm
[purpleEndurer bash ~] 然后我们可以使用ls、cat和du等命令查看文件index.htm的内容、长度等信息。 2.3.4 使用xarg命令下载多个URL资源xargs -n 1 curl -O URL资源列表文件
例如有如下博文资源 科学设计程序员面试内容破解“八股文”之弊 的url是 https://blog.csdn.net/Purpleendurer/article/details/140781410?spm1001.2014.3001.5501 生成式 AI 的发展方向是 Chat 还是 Agent 的url是 https://blog.csdn.net/Purpleendurer/article/details/140731562?spm1001.2014.3001.5501 “微软蓝屏”事件的警示内外双修 加强测试 的url是 https://blog.csdn.net/Purpleendurer/article/details/140678899?spm1001.2014.3001.5501 我们可以把以上3篇博文内容全部保存到本地文件。
2.3.4.1 步骤1把以上资源的url保存到myurl.txt中。
这里我们使用输出重定向功能创建myurl.txt。
[purpleEndurer bash ~] echo https://blog.csdn.net/Purpleendurer/article/details/140781410?spm1001.2014.3001.5501 myurl.txt
[purpleEndurer bash ~] echo https://blog.csdn.net/Purpleendurer/article/details/140731562?spm1001.2014.3001.5501 myurl.txt
[purpleEndurer bash ~] echo https://blog.csdn.net/Purpleendurer/article/details/140678899?spm1001.2014.3001.5501 myurl.txt
[purpleEndurer bash ~] cat myurl.txt
https://blog.csdn.net/Purpleendurer/article/details/140781410?spm1001.2014.3001.5501
https://blog.csdn.net/Purpleendurer/article/details/140731562?spm1001.2014.3001.5501
https://blog.csdn.net/Purpleendurer/article/details/140678899?spm1001.2014.3001.5501
[purpleEndurer bash ~] 2.3.4.2 步骤2使用命令 xargs -n 1 curl -O myurl.txt
[purpleEndurer bash ~] xargs -n 1 curl -O myurl.txt% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed
100 211k 0 211k 0 0 267k 0 --:--:-- --:--:-- --:--:-- 267k% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed
100 225k 0 225k 0 0 262k 0 --:--:-- --:--:-- --:--:-- 262k% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed
100 207k 0 207k 0 0 190k 0 --:--:-- 0:00:01 --:--:-- 191k
[purpleEndurer bash ~] 我们用ls命令查看当前目录下的内容
[purpleEndurer bash ~] ls
140678899?spm1001.2014.3001.5501 140731562?spm1001.2014.3001.5501 140781410?spm1001.2014.3001.5501 Code myurl.txt
可以看到新保存下的来的3个文件 140678899?spm1001.2014.3001.5501140731562?spm1001.2014.3001.5501140781410?spm1001.2014.3001.5501 我们可以用cat 文件名 | more 命令查看文件的内容例如使用命令 cat 140678899?spm1001.2014.3001.5501 | more 查看文件 140678899?spm1001.2014.3001.5501 的内容
[PurpleEndurer bash ~] cat 140678899?spm1001.2014.3001.5501 | more!DOCTYPE html
html langzh-CN
headmeta charsetutf-8link relcanonical hrefhttps://blog.csdn.net/Purpleendurer/article/details/140678899/meta http-equivcontent-type contenttext/html; charsetutf-8meta namerenderer contentwebkit/meta nameforce-rendering contentwebkit/meta http-equivX-UA-Compatible contentIEedge,chrome1/meta nameviewport contentwidthdevice-width, initial-scale1.0, minimum-scale1.0, maximum-scale1.0, user-scalablenometa namereport content{pid: blog, spm:1001.2101}meta namereferrer contentalwaysmeta http-equivCache-Control contentno-siteapp /link relalternate mediahandheld href# /meta nameshenma-site-verification content5a59773ab8077d4a62bf469ab966a63b_1497598848meta nameapplicable-device contentpclink hrefhttps://g.csdnimg.cn/static/logo/favicon32.ico relshortcut icon typeimage/x-icon /title“微软蓝屏”事件的警示内外双修 加强测试_719蓝屏 反思-CSDN博客/titlescript(function(){ var el document.createElement(script); el.src https://s3a.pstatp.com/toutiao/push.js?1abfa13dfe74d72d41d83c86d240de427e7cac50c51ead53b2e79d40c7952a23ed7716d05b4
a0f683a653eab3e214672511de2457e74e99286eb2c33f4428830; el.id ttzz;
--More--
, 这个文件是博文《“微软蓝屏”事件的警示内外双修 加强测试》的内容。 2.3.5 利用序列 下载多个URL资源
例如假设在http://qzone.qq.com.com/pic 下存在如下5个文件 qzone1.JPGqzone2.JPGqzone3.JPGqzone4.JPGqzone5.JPG 那么我们可以使用序列 qzone[1-5].JPG 来表示这5个文件。
也就可以使用命令 curl -O http://qzone.qq.com.com/pic/qzone[1-5].JPG 将它们来保存到本地。 2.4 保存cookie到文件curl -c 文件名 网站
例如我们想保存http://qzone.qq.com.com的cookie那么可以用命令 curl -c qzone-cookie.txt http://qzone.qq.com.com 将cookie保存到文件 qzone-cookie.txt 中
[PurpleEndurer bash ~] curl -c qzone-cookie.txt http://qzone.qq.com.com
[PurpleEndurer bash ~] cat qzone-cookie.txt
# Netscape HTTP Cookie File
# http://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.qzone.qq.com.com FALSE / FALSE 0 PHPSESSID r0jv2c60s8bava08eut7mrg017
qzone.qq.com.com FALSE / FALSE 0 XYZSRV wtc2-a-2
[PurpleEndurer bash ~] 然后我们使用命令 cat qzone-cookie.txt 查看保存到文件 qzone-cookie.txt 中的cookie。
2.5 保存header信息到文件curl -D 文件 网址
例如我们想保存http://qzone.qq.com.com的hearder那么可以用命令 curl -D header.txt http://qzone.qq.com.com 将hearder 保存到文件 header.txt 中
[PurpleEndurer bash ~] curl -D header.txt http://qzone.qq.com.com
[PurpleEndurer bash ~] cat header.txt
HTTP/1.1 302 Moved Temporarily
Date: Sun, 04 Aug 2024 13:36:17 GMT
Content-Type: text/html; charsetUTF-8
Transfer-Encoding: chunked
Connection: keep-alive
set-cookie: PHPSESSIDehhc7f1d5a6d2sush8168b0is4; path/
set-cookie: XYZSRVwtc2-a-1; path/
expires: Thu, 19 Nov 1981 08:52:00 GMT
cache-control: no-store, no-cache, must-revalidate, post-check0, pre-check0
pragma: no-cache
location: https://gen.xyz/
CF-Cache-Status: DYNAMIC
Report-To: {endpoints:[{url:https:\/\/a.nel.cloudflare.com\/report\/v4?s4FADjXtpF77uXFkcLQM3%2BA1kVadxIq6E5lzX6mYBbCkZgaNcMGk6HGFQ3fw89mKmzYa3%2Bdu0U9SF3%2BNGRQj%2FR4rAJj8dgCr7PX8R0BkmoVHGCL9TfK7rSXF4Zl2agF%2FSDMY%3D}],group:cf-nel,max_age:604800}
NEL: {success_fraction:0,report_to:cf-nel,max_age:604800}
Server: cloudflare
CF-RAY: 8adeef7a2e432018-IAD[PurpleEndurer bash ~] 然后我们使用命令 cat header.txt 查看保存到文件 header.txt 中的header信息。