首页 > 系统相关 >#yyds干货盘点#linux之curl使用技巧

#yyds干货盘点#linux之curl使用技巧

时间:2023-06-13 10:05:33浏览次数:44  
标签:yyds 使用 json html im https linux curl

获取页面内容

> curl https://json.im

显示 HTTP 头

> curl -I https://json.im
HTTP/1.1 200 OK
Server: openresty
Date: Fri, 04 Jun 2021 07:38:32 GMT
Content-Type: text/html
Content-Length: 12864
Last-Modified: Thu, 29 Apr 2021 01:39:01 GMT
Connection: keep-alive
Vary: Accept-Encoding
ETag: "608a0e35-3240"
Expires: Fri, 04 Jun 2021 08:38:32 GMT
Cache-Control: max-age=3600
Accept-Ranges: bytes

同时显示 HTTP 头和文件内容,使用 -i 选项

> curl -i https://json.im

将链接保存到文件

我们可以使用 > 符号将输出重定向到本地文件中。

> curl https://json.im > index.html

也可以通过 curl 自带的 -o/-O 选项将内容保存到文件中。

  • -o(小写的 o):结果会被保存到命令行中提供的文件名
  • -O(大写的 O):URL 中的文件名会被用作保存输出的文件名
> curl -o index.html https://json.im
> curl -O https://json.im/index.html

注意:使用 -O 选项时,必须确保链接末尾包含文件名,否则 curl 无法正确保存文件。如果遇到链接中无文件名的情况,应该使用 -o 选项手动指定文件名,或使用重定向符号

同时下载多个文件

我们可以使用-o 或-O选项来同时指定多个链接,按照以下格式编写命令:

> curl -O html https://json.im/1.html   -O html https://json.im/2.html
> curl -o p1.html https://json.im/1.html  -o p2.html https://json.im/2.html

使用 -L 跟随链接重定向

如果直接使用 curl 打开某些被重定向后的链接,这种情况下就无法获取我们想要的网页内容。例如:

> curl http://json.im
<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
<hr><center>openresty</center>
</body>
</html>

而当我们通过浏览器打开该链接时,会自动跳转到https://json.im 。此时我们想要 curl 做的,就是像浏览器一样跟随链接的跳转,获取最终的网页内容。我们可以在命令中添加 -L 选项来跟随链接重定向:

> curl -L http://json.im

使用 -A 自定义 User-Agent

我们可以使用 -A 来自定义用户*,例如下面的命令将伪装成安卓火狐浏览器对网页进行请求:

> curl -A "Mozilla/5.0 (Android; Mobile; rv:35.0) Gecko/35.0 Firefox/35.0" https://json.im

使用 -H 自定义 header

当我们需要传递特定的 header 的时候,可以仿照以下命令来写:

> curl -H "Referer: https://rumenz.com" -H "User-Agent: Custom-User-Agent" https://json.im

header 中传递 Cookie

> curl -H "Cookie: JSESSIONID=xxx" https://json.im

使用-c保存Cookie

使用 cURL 访问页面的时候,默认是不会保存 Cookie 的

> curl -c "cookie.txt" https://json.im

使用 -b 读取 Cookie

> curl -b "cookie.txt" https://json.im

使用-d发送POST请求

有一个登录页面 https://json.im/login,只需要提交用户名和密码便可登录。我们可以使用 cURL 来完成这一 POST 请求,-d 用于指定发送的数据,-X 用于指定发送数据的方式

> curl -d "userName=rumenz&passwd=123456" -X POST https://json.im/login

在使用 -d 的情况下,如果省略 -X,则默认为 POST 方式:

> curl -d "userName=rumenz&passwd=123456" https://json.im/login

从文件中读取data.txt文本

> curl -d "@data.txt" https://json.im/upload

恢复中断下载

> curl -C - -O https://json.im/jdk.tar.gz

从文件下载URL

如果将curl与xargs结合使用,则可以从文件中的URL列表中下载文件。

> xargs -n 1 curl -O < urls.txt

CURL设置代理

> curl https://json.im/  -U user:password  -x 127.0.0.1:3128

如果您的代理不需要身份验证,您可以跳过-U user:password 。

比如Nginx配置代理

server {
    listen                         3128;
    resolver                       8.8.8.8;
    proxy_connect;
    proxy_connect_allow            443 563;
    proxy_connect_connect_timeout  10s;
    proxy_connect_read_timeout     10s;
    proxy_connect_send_timeout     10s;
    location / {
        proxy_pass http://$host;
        proxy_set_header Host $host;
    }
}

上传文件到ftp

> curl -u username:password -T jdk.tar.gz ftp://json.im

修改名称解析

> curl --resolve json.im:443:127.0.0.1 https://json.im:443/

https://json.im的查询将告诉curl127.0.0.1请求该站点,而不是使用DNS或/etc/hosts文件。

限制下载率

> curl --limit-rate 100K https://json.im/jdk.tar.gz -O

HTTP认证

有些网域需要HTTP认证,这时curl需要用到--user参数。

> curl --user name:passwd https://json.im

标签:yyds,使用,json,html,im,https,linux,curl
From: https://blog.51cto.com/u_11365839/6467228

相关文章

  • #yyds干货盘点#新的HTML标签 :<search>
    本文介绍了一种新的HTML元素搜索方法,并提供了一个实用的工具来帮助开发者快速找到所需的元素。这对于那些需要处理大量HTML元素的开发者来说是非常有用的。文章还通过提供一些常见元素的用法示例,帮助开发者更好地理解和应用这些元素。在众多元素中找到特定的元素。为了解决这个问题......
  • Linux shell 之 for循环变量有空格的问题——IFS变量
    在使用shell的for循环时,如果循环的字符串中间有空格,那么循环时会自动分割,下面是解决的方法 1只需要更改shell分隔符即可2在for循环之前修改IFS变量,示例:3OLDIFS="$IFS"#备份旧的IFS变量4IFS=$'\n'#修改分隔符为换行符56foriin`cataaa`#aaa文件......
  • Linux驱动开发
      本文为一个简单的字符设备驱动,涉及驱动编写、测试程序编写、Makefile编写、驱动加载/卸载,运行于Linux虚拟机,不涉及底层配置。撰写本文的主要目的为记录一下驱动的开发流程,参考了正点原子的驱动开发指南。 驱动代码  创建文件夹1_chrdevbase/,下属APP/与Driver/两个......
  • linux内存回收策略
    1、64位操作系统进程可以最大申请多大的虚拟内存?64位操作系统的进程可以最大申请的虚拟内存取决于操作系统的架构和其对虚拟内存的管理方式。在理论上,64位操作系统可以支持非常大的虚拟内存空间。在大多数64位操作系统中,每个进程最大可以申请的虚拟内存大小通常为2^64字节,也就是......
  • Linux基础命令
    Linux基础命令(1)ctrlc:取消命令,并且换行(2)ctrlu:清空本行命令(3)tab键:可以补全命令和文件名,如果补全不了快速按两下tab键,可以显示备选选项(4)ls:列出当前目录下所有文件,蓝色的是文件夹,白色的是普通文件,绿色的是可执行文件(5)pwd:显示当前路径(6)cdXXX:进入X......
  • Linux解压缩常用命令
    01-.tar格式解包:[*******]$tarxvfFileName.tar打包:[*******]$tarcvfFileName.tarDirName(注:tar是打包,不是压缩!)02-.gz格式解压1:[*******]$gunzipFileName.gz解压2:[*******]$gzip-dFileName.gz压缩:[*******]$gzipFileName03-.tar.gz格式解压:[*******]$tarzxvfFileNa......
  • 【Linux】——安装Anaconda后默认不进入conda环境方法
    1安装conda后取消命令行前出现的base,取消每次启动自动激活conda的基础环境。通过将auto_activate_base参数设置为false实现:condaconfig--setauto_activate_basefalse那要进入的话通过condaactivatebase如果反悔了还是希望base一直留着的话通过condaconfig--setau......
  • [ Linux ] 解决首次 ssh 登录很慢的问题
    https://www.cnblogs.com/yeungchie/关闭GSSAPIAuthentication内网机器不需要开启,修改/etc/ssh/sshd_configGSSAPIAuthenticationno#改为no......
  • 【Linux】Customize for history
    echo'exportHISTTIMEFORMAT="%d/%m/%y/%T"'>>~/.bash_profile14318/03/23/08:16:15vi.bash_profile14418/03/23/08:16:40source.bash_profile14518/03/23/08:16:42history14618/03/23/08:16:52vi.bash_profile147......
  • linux 增加tc命令
    tc命令是iproute2包中的一个工具,可以用了模拟网络延时、抖动、丢包等操作,有些设备上没有tc命令,需要手动增加。下面以zynqMPlinux5.4为例说明tc命令的移植过程一、tc命令交叉编译1、下载iproute2包源码:gitclonehttps://github.com/shemminger/iproute22、解压源......