linux之curl使用技巧
获取页面内容curlhttps:json。im显示HTTP头curlIhttps:json。imHTTP1。1200OKServer:openrestyDate:Fri,04Jun202107:38:32GMTContentType:texthtmlContentLength:12864LastModified:Thu,29Apr202101:39:01GMTConnection:keepaliveVary:AcceptEncodingETag:608a0e353240Expires:Fri,04Jun202108:38:32GMTCacheControl:maxage3600AcceptRanges:bytes同时显示HTTP头和文件内容,使用i选项curlihttps:json。im将链接保存到文件
我们可以使用符号将输出重定向到本地文件中。curlhttps:json。imindex。html
也可以通过curl自带的oO选项将内容保存到文件中。o(小写的o):结果会被保存到命令行中提供的文件名O(大写的O):URL中的文件名会被用作保存输出的文件名curloindex。htmlhttps:json。imcurlOhttps:json。imindex。html
注意:使用O选项时,必须确保链接末尾包含文件名,否则curl无法正确保存文件。如果遇到链接中无文件名的情况,应该使用o选项手动指定文件名,或使用重定向符号同时下载多个文件
我们可以使用o或O选项来同时指定多个链接,按照以下格式编写命令:curlOhtmlhttps:json。im1。htmlOhtmlhttps:json。im2。htmlcurlop1。htmlhttps:json。im1。htmlop2。htmlhttps:json。im2。html使用L跟随链接重定向
如果直接使用curl打开某些被重定向后的链接,这种情况下就无法获取我们想要的网页内容。例如:curlhttp:json。imhtmlheadtitle301MovedPermanentlytitleheadbodycenterh1301MovedPermanentlyh1centerhrcenteropenrestycenterbodyhtml
而当我们通过浏览器打开该链接时,会自动跳转到https:json。im。此时我们想要curl做的,就是像浏览器一样跟随链接的跳转,获取最终的网页内容。我们可以在命令中添加L选项来跟随链接重定向:curlLhttp:json。im使用A自定义UserAgent
我们可以使用A来自定义用户,例如下面的命令将伪装成安卓火狐浏览器对网页进行请求:curlAMozilla5。0(Android;Mobile;rv:35。0)Gecko35。0Firefox35。0https:json。im使用H自定义header
当我们需要传递特定的header的时候,可以仿照以下命令来写:curlHReferer:https:rumenz。comHUserAgent:CustomUserAgenthttps:json。im
header中传递CookiecurlHCookie:JSESSIONIDxxxhttps:json。im使用c保存Cookie
使用cURL访问页面的时候,默认是不会保存Cookie的curlccookie。txthttps:json。im使用b读取Cookiecurlbcookie。txthttps:json。im使用d发送POST请求
有一个登录页面https:json。imlogin,只需要提交用户名和密码便可登录。我们可以使用cURL来完成这一POST请求,d用于指定发送的数据,X用于指定发送数据的方式curlduserNamerumenzpasswd123456XPOSThttps:json。imlogin
在使用d的情况下,如果省略X,则默认为POST方式:curlduserNamerumenzpasswd123456https:json。imlogin
从文件中读取data。txt文本curlddata。txthttps:json。imupload恢复中断下载curlCOhttps:json。imjdk。tar。gz从文件下载URL
如果将curl与xargs结合使用,则可以从文件中的URL列表中下载文件。xargsn1curlOurls。txtCURL设置代理curlhttps:json。imUuser:passwordx127。0。0。1:3128
如果您的代理不需要身份验证,您可以跳过Uuser:password。
比如Nginx配置代理server{listen3128;resolver8。8。8。8;proxyconnect;proxyconnectallow443563;proxyconnectconnecttimeout10s;proxyconnectreadtimeout10s;proxyconnectsendtimeout10s;location{proxypasshttp:host;proxysetheaderHosthost;}}上传文件到ftpcurluusername:passwordTjdk。tar。gzftp:json。im修改名称解析curlresolvejson。im:443:127。0。0。1https:json。im:443
对https:json。im的查询将告诉curl从127。0。0。1请求该站点,而不是使用DNS或etchosts文件。限制下载率curllimitrate100Khttps:json。imjdk。tar。gzOHTTP认证
有些网域需要HTTP认证,这时curl需要用到user参数。curlusername:passwdhttps:json。im
原文链接:https:rumenz。comrumenbijilinuxcurlskills。html