curl命令详解及设置代理服务器

news2024/11/25 0:44:05

目录

概述

Linux Curl命令详解

Curl命令参数

Curl模仿浏览器命令

Curl模仿浏览器详解

模仿浏览器

Curl伪造refer命令

Curl伪造refer详解

伪造refer

Curl下载文件或网页详解

Curl下载进度条命令

Curl下载进度条详解

Curl断点续传命令

Curl断点续传详解

断点续传

Curl上传文件命令

Curl上传文件详解

Curl上传文件命令总结

Curl获取错误命令

Curl获取错误详解

获取错误

Curl GET请求命令

Curl GET请求详解

Curl GET请求命令总结

Curl POST请求命令

Curl POST请求详解

Curl POST请求详解

Curl POST请求命令总结

Curl设置代理proxy命令

Curl设置代理proxy详解

设置代理proxy信息

Curl设置代理详解

Web代理服务器

curl代理设置

方法一:命令行参数

方法二:使用环境变量

方法三:使用别名

方法四:使用.curlrc 配置

实例:使用curl 提取网页的标题

结论


在 Linux 中 curl 是一个利用 URL 规则在命令行下工作的文件传输工具,可以说是一款很强大的 http 命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称 url 为下载工具。

作为一款强力工具,curl 支持包括 HTTP、HTTPS、FTP 等众多协议,还支持 GET、POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征,还可以做网页处理流程和数据检索自动化。

在进行 web 后台程序开发测试过程中,常常会需要发送 url 进行测试,使用 curl 可以方便地模拟出符合需求的 url 命令。

概述

curl(cURL)是一个用于传输数据的命令行工具,其诞生于20多年前,最早版本是在1998年。

curl支持以多种方式检索和发送数据,并输出到标准输出,可以无缝衔接标准unix管道使用。在绝大多数的*nix操作系统上都默认安装。curl支持各种协议,包括 HTTP/HTTPS、FTP和SCP。

Linux Curl命令详解

语法

url [option] [url] 

参数

参数描述
optioncurl 命令使用的选项。
url请求的 URL。

说明

使用 curl 命令,加上参数 option 给指定的 url 发送请求。

Curl命令参数

参数描述
-A/–user-agent设置用户代理发送给服务器。
-b/–cookie <name=string/file>cookie 字符串或文件读取位置。
-c/–cookie-jar操作结束后把 cookie 写入到这个文件中
-C/–continue-at断点续转
-D/–dump-header把 header 信息写入到该文件中
-e/–referer来源网址
-f/–fail连接失败时不显示 http 错误
-o/–output把输出写到该文件中
-O/–remote-name把输出写到该文件中,保留远程文件的文件名
-r/–range检索来自 HTTP/1.1 或 FTP 服务器字节范围
-s/–silent静音模式。不输出任何东西
-T/–upload-file上传文件
-u/–user <user[:password]>设置服务器的用户和密码
-w/–write-out [format]什么输出完成后
-x/–proxy <host[:port]>在给定的端口上使用HTTP代理
-#/–progress-bar进度条显示当前的传送状态

Curl模仿浏览器命令

我们在使用 Linux 的 curl 命令,访问网站时,可以通过 A 参数来指定我们访问该网站使用的指定的浏览器或者指定的浏览器的指定版本。

Curl模仿浏览器详解

语法

url -A info url 

参数

参数描述
info模仿的浏览器信息。
url请求的 URL。

说明

我们使用 A 参数设置浏览器信息,来模拟浏览器访问网站。

模仿浏览器

使用 curl 命令,可以指定浏览器信息,来访问网站,具体命令如下:

url -A "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.0)" http://www.haicoder.net

我们使用了 A 参数模仿了使用 IE8.0 去访问了网站。

Curl伪造refer命令

我们在使用 Linux 的 curl 命令时,可以使用 e 参数,来伪造 refer 信息,以防止某些网站的防盗链功能屏蔽我们的访问。

很多服务器会检查 http 访问的 referer 从而来控制访问。比如:你是先访问首页,然后再访问首页中的邮箱页面,这里访问邮箱的 referer 地址就是访问首页成功后的页面地址,如果服务器发现对邮箱页面访问的 referer 地址不是首页的地址,就断定那是个盗链了。

Curl伪造refer详解

语法

url -e referUrl url 

参数

参数描述
referUrl模仿的 url 信息。
url请求的 URL。

说明

我们使用 e 参数模仿请求的 url。

伪造refer

使用 curl 命令,可以伪造访问的 url 信息,来访问网站,具体命令如下:

url -e "www.haicoder.net" http://www.haicoder.net/uploads/pic/server/golang/golang-basic-syntax/01%20go%20helloworld.png 

运行后,终端输出如下:

Curl下载文件或网页详解

语法

curl -o fileName url 

参数

参数描述
fileName保存的文件名。
url请求的 URL。

说明

我们使用 o 参数将 url 的信息保存到本地 fileName 文件中。

语法

curl -O url 

参数

参数描述
url请求的 URL。

说明

我们使用 O 参数将 url 的信息保存到本地文件中,文件名与服务器上的文件同名。

Curl下载进度条命令

我们使用 Linux 的 curl 命令,在下载文件时,还可以显示下载的进度条信息。

Curl下载进度条详解

语法

curl -# -O url 

参数

参数描述
url要下载的 url。

Curl断点续传命令

我们在使用 Linux 的 curl 命令,在下载文件时,还可以支持断点续传功能,即,我们下载文件过程中断线了,可以继续下载。

Curl断点续传详解

语法

url -C offset -O url 

参数

参数描述
offset开始下载位置。
url要下载的 url。

断点续传

使用 curl 命令,下载文件时,还可以支持断点续传,具体命令如下:

url -C 0 -O http://www.haicoder.net/uploads/pic/server/golang/golang-basic-syntax/01%20go%20helloworld.png

Curl上传文件命令

我们使用 Linux 的 curl 命令,不仅仅可以支持下载文件,还可以支持上传文件,我们通过参数 T 实现上传文件功能。

Curl上传文件详解

语法

url -T uploadFile -u username:password uploadUrl 

参数

参数描述
uploadFile需要上传的文件。
username用户名。
password密码。
uploadUrl上传的 Url。

Curl上传文件命令总结

我们使用 Linux 的 curl 命令,不仅仅可以支持下载文件,还可以支持上传文件,我们通过参数 T 实现上传文件功能。

Curl获取错误命令

我们在使用 Linux 的 curl 命令时,可以使用 f 参数,显示获取的错误信息。

Curl获取错误详解

语法

url -f url 

参数

参数描述
url请求的 url。

获取错误

使用 curl 命令,可以获取错误信息,具体命令如下:

url -f www.haicoder.net

Curl GET请求命令

我们在使用 Linux 的 curl 命令时,可以实现 GET请求的功能,即可以模拟 HTTP 的 GET 请求。

Curl GET请求详解

语法

url "url?param1=val1&param2=val2" 

参数

参数描述
url请求的 URL。
param1请求参数 1。
val1请求参数 1 的值。
param2请求参数 2。
val2请求参数 2 的值。

说明

在发送 GET 请求时,请求参数放在 url 后面,因为有特殊字符 &,所以我们需要使用双引号进行包裹,或者,我们直接使用转义字符也可以,即 curl "url?param1=val1\&param2=val2"

Curl GET请求命令总结

我们在使用 Linux 的 curl 命令时,可以实现 GET请求的功能,即可以模拟 HTTP 的 GET 请求。

Curl POST请求命令

我们在使用 Linux 的 curl 命令时,可以实现 POST 请求的功能,即可以模拟 HTTP 的 POST 请求。

Curl POST请求详解

语法

curl [-H] [HEAD] -X POST -d '{"key1": "val1", "key2":val2}' url 

参数

参数描述
HEAD请求头信息。
key1请求参数 1。
val1请求参数 1 的值。
key2请求参数 2。
val2请求参数 2 的值。
url请求的 URL。

说明

在发送 POST 请求时,我们可以使用 H 参数,指定发送的请求头信息,使用 X 参数,说明我们发送的是 POST 请求。

使用 d 参数,设置我们请求的参数信息。

Curl POST请求详解

语法

url -H "Content-Type: application/json" -X POST -d '{"key1": "val1", "key2":val2}' url 

说明

我们使用了 H 参数,设置了请求的参数是 Json 类型。

Curl POST请求命令总结

我们在使用 Linux 的 curl 命令时,可以实现 POST 请求的功能,即可以模拟 HTTP 的 POST 请求。

Curl设置代理proxy命令

我们在使用 Linux 的 curl 命令,访问网站时,还可以使用 x 参数,来指定访问网站时使用的具体代理地址和端口。

Curl设置代理proxy详解

语法

url -x proxyAddr:proxyPort url 

参数

参数描述
proxyAddr代理 ip。
proxyPort代理端口。
url请求的 URL。

说明

我们使用 x 参数设置代理信息。

设置代理proxy信息

使用 curl 命令,访问网站时,可以设置代理信息,具体命令如下:

url -x 220.181.38.150 www.haicoder.net

Curl设置代理详解

Web代理服务器

Web代理服务器充当客户端和目标服务器之间的中介。客户端首先访问代理,然后代理执行它并将结果返回给客户端。

 

 有些Web站点是有限制的,我们无法直接通过当前IP直接访问目标站点;还有一些站点对访问请求是有一定限制,而我们在请求数据时候为了请求速度也需要突破IP限制。通过使用代理服务,我们就可以突破上述限制。

curl代理设置

为演示需要,本文中示例中使用的代理将设置为本地机器上,使用端口5000。默认情况下,代理语句中唯一需要的部分是主机,默认端口80。我们将通过HTTP将数据传输到它,我们将明确指定完整性。为了方便,我们请求服务为httpbin。 Httpbin是一个开源的标准http服务显示,在请求/ip接口时候可以查看请求IP地址。

方法一:命令行参数

使用代理的第一个也是最简单的选项是使用命令行参数。Curl代理参数为-x(或者--proxy)。基本格式为:

-x, --proxy [protocol://]host[:port]

因此,要使用代理访问,可以使用:

curl -x 220.181.38.150 www.haicoder.net

其中,代理服务器的协议头,默认为http可以省略掉:

curl -x 127.0.0.1:5000 httpbin/ip

身份验证

此外,如果HTTP代理服务器也需要身份验证,可以使用 -U标志来指定它。

curl -U user:password --proxy 127.0.0.1:5000 httpbin/ip

某些代理服务器可能需要不同的身份验证方案。可以通过--proxy-anyauth指定curl以确定身份验证方案

curl -U user:password --proxy 127.0.0.1:5000 httpbin/ip --proxy-anyauth

如果认证密码中包含特殊字符,需要对其添加加上双引号("")。

curl -U "user:p@assword" --proxy 127.0.0.1:5000 httpbin/ip

上面命令中直接用密码容易被泄露并且会被记录在history日志中,在命令行中通过只提供用户名,然后可以交互式的,根据curl提示输入密码。

curl -U user --proxy 127.0.0.1:5000 httpbin/ip

> Enter proxy password for user 'user':

方法二:使用环境变量

可以使用环境变量配置实现curl使用代理服务器。curl允许通过设置变量为它支持的每个协议使用环境变量[scheme]_proxy。如果设置了这些,那么当使用对应协议时,curl将默认引入。对http和https协议:

export http_proxy="127.0.0.1:5000"

export https_proxy="127.0.0.1:5000"

同样可以添加认证参数:

export http_proxy="http://username:password@127.0.0.1:5000"

export https_proxy="http://username:password@127.0.0.1:5000"

然后所有,curl http和https请求就会自动使用代理。

与以这种方式设置的所有环境变量一样,这些只是临时变量,shell会话结束或重新启动系统时删除。但是,为了使其在所有会话中可用,可以将其附加到profile文件中,或者对于个人可以在.bashrc 或 .zshrc文件添加,实现持久化的代理设置。

方法三:使用别名

配置代理的另一种更持久的方法是shell别名,如果总是需要以这种方式定期连接,这很有用。通过别名可以cur将调用替换为使用代理的版本,这其实和上面的方法二同理。

alias curl="curl -x 127.0.0.1:5000"

方法四:使用.curlrc 配置

其实curl也支持个性化的配置参数配置,配置文件默认情况下在个人目录 ~/.curlrc(Windows上为 _curlrc),也可以指定其他文件路径。

在.curlrc配置文件中添加代理支持的方法为:

proxy = "http://127.0.0.1:5000"

实例:使用curl 提取网页的标题

最后举个更复杂的,我们使用unix管道将结合grep正则提取站点标题。

curl curl –silent baidu |grep -Eo '<title>(.*)</title>'

--silent参数可以去掉curl输出进度信息,对响应的内容用grep正则表达式中捕获标题。

结论

在本文中,我们介绍curl中使用代理服务器的各种方法,大家可以根据实际需要选择最合适方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/824647.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kubernetes客户端认证—— 基于CA证书的双向认证方式

1、Kubernetes 认证方式 Kubernetes集群的访问权限控制由API Server负责&#xff0c;API Server的访问权限控制由身份验证(Authentication)、授权(Authorization)和准入控制&#xff08;Admission control&#xff09;三个步骤组成&#xff0c;这个三个步骤是按序进行的&#x…

Docker 安装 MySQL5.6

方法一、docker pull mysql 查找Docker Hub上的mysql镜像 #docker search mysql 这里我们拉取官方的镜像,标签为5.6 #docker pull mysql:5.6 &#xff08;第一次启动Docker-MySql主要是查看Docker里面MySQL的默认配置&#xff0c;数据位置&#xff0c;日志位置&#xff0c;配…

Flink非对齐checkpoint原理(Flink Unaligned Checkpoint)

Flink非对齐checkpoint原理&#xff08;Flink Unaligned Checkpoint&#xff09; 为什么提出Unaligned Checkpoint&#xff08;UC&#xff09;&#xff1f; 因为反压严重时会导致Checkpoint失败&#xff0c;可能导致如下问题 恢复时间长-服务效率低非幂等和非事务会导致数据…

企业电子招投标采购系统源码之电子招投标的组成 tbms

&#xfeff;功能模块&#xff1a; 待办消息&#xff0c;招标公告&#xff0c;中标公告&#xff0c;信息发布 描述&#xff1a; 全过程数字化采购管理&#xff0c;打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力&…

当我们在谈Web3时,其实谈的是什么?

当我们在谈Web3时&#xff0c;其实谈的是什么&#xff1f;虽然这个问题看似简单&#xff0c;但是Web3的定义却十分复杂。在这篇文章中&#xff0c;我们将尝试用简单易懂的语言来解答这个问题&#xff0c;并深入探讨Web3对未来的影响。 首先&#xff0c;Web3是什么&#xff1f;简…

通讯软件013——分分钟学会Kepware OPC AE Server仿真配置

本文介绍如何使用Kepware软件仿真OPC AE Server配置。相关软件可登录网信智汇&#xff08;wangxinzhihui&#xff09;下载。 1、创建1个数据源&#xff1a;本案例采用“Graybox.Simulator.1”作为数据源。连接OPC Server数据源“Graybox.Simulator.1”。 右键点击“连通性”&am…

SpringBoot复习:(14)容器是怎么创建出来的?

在SpringApplication类的run方法。低版本和高版本的SpringBoot实现有区别。 低版本&#xff1a; run方法调用了createApplicationContext createApplicationContext代码如下&#xff1a; 它会根据contextClass来实例化一个容器然后返回. &#xffe5;&#xffe5;&#xffe…

【设计模式——学习笔记】23种设计模式——命令模式Command(原理讲解+应用场景介绍+案例介绍+Java代码实现)

案例引入 有一套智能家电&#xff0c;其中有照明灯、风扇、冰箱、洗衣机&#xff0c;这些智能家电来自不同的厂家&#xff0c;我们不想针对每一种家电都安装一个手机App来分别控制&#xff0c;希望只要一个app就可以控制全部智能家电要实现一个app控制所有智能家电的需要&…

小程序开发趋势:探索人工智能在小程序中的应用

第一章&#xff1a;引言 小程序开发近年来取得了快速的发展&#xff0c;成为了移动应用开发的重要一环。随着人工智能技术的飞速发展&#xff0c;越来越多的企业开始探索如何将人工智能应用于小程序开发中&#xff0c;为用户提供更智能、便捷的服务。本文将带您一起探索人工智能…

YOLOv8+DeepSORT多目标跟踪(行人车辆计数与越界识别)视频教程

课程链接&#xff1a;https://edu.csdn.net/course/detail/38870 本课程使用YOLOv8和DeepSORT对视频中的行人、车辆做多目标跟踪计数与越界识别&#xff0c;开展YOLOv8目标检测和DeepSORT多目标跟踪强强联手的应用。 课程分别在Windows和Ubuntu系统上做项目演示&#xff0c;并…

基于SpringBoot+Vue的在线考试系统设计与实现(源码+LW+部署文档等)

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

【样式】默认都不选

html <view class"u-flex u-m-t-32 u-m-b-24 u-f-s-24"><view class"u-flex" click"navFun(1)"><text>佣金率</text><image src"/static/img/pai1.png" mode"" class"u-w-28 u-h-32"…

RabbitMQ 教程 | 第7章 RabbitMQ 运维

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的编码爱好者 大家好&#xff0c;我是 DevO…

P7883 平面最近点对(加强加强版)

题目 思路 一眼二分&#xff0c;把平面分成两部分&#xff0c;查左右两边&#xff0c;但是还有可能跨中间的线&#xff0c;所以这个也得判 代码 #include<bits/stdc.h> using namespace std; #define int long long const int maxn4e510; pair<int,int> a[maxn]…

Java版Spring Cloud+Spring Boot+Mybatis+uniapp知识付费平台讲解+免费搭建 qt

&#xfeff;Java版知识付费源码 Spring CloudSpring BootMybatisuniapp前后端分离实现知识付费平台 提供职业教育、企业培训、知识付费系统搭建服务。系统功能包含&#xff1a;录播课、直播课、题库、营销、公司组织架构、员工入职培训等。 提供私有化部署&#xff0c;免费售…

亚马逊云科技HPC解决方案,帮助浙江大学实现成本和科研任务的双丰收

浙江大学土壤学科是朱祖祥院士等几代土壤科学家共同创建的A国家重点学科&#xff0c;整体实力雄厚&#xff0c;优势特色明显&#xff0c;总体水平居国内前列。在亚马逊云科技科研创新支持计划&#xff08;Amazon Web Services Cloud Credits for Research&#xff09;的多次支持…

发掘JavaScript潜力:掌握高级技巧,成为JavaScript编程大师!

&#x1f3ac; 岸边的风&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! &#x1f4da; 前言 众所周知&#xff0c;JavaScript 是一种非常流行&#x1f525;的编程语言&#xff0c;它已经成为了网…

3000字详解:风控核心岗位及核心价值

01、信贷场景中所谓风控是什么&#xff1f; 从一个小故事说起&#xff1a; “风控是什么&#xff1f;” “你走过大桥么&#xff1f;” “桥上有栏杆么&#xff1f;” “有” “你过桥时会扶栏杆么” “一般不扶” “那栏杆是不是没必要有呢” “那还是得有啊&#xf…

SpringBoot统一功能处理(AOP思想实现)(统一用户登录权限验证 / 异常处理 / 数据格式返回)

主要是三个处理&#xff1a; 1、统一用户登录权限验证&#xff1b; 2、统一异常处理&#xff1b; 3、统一数据格式返回。 目录 一、用户登录权限校验 &#x1f345; 1、使用拦截器 &#x1f388; 1.1自定义拦截器 &#x1f388; 1.2 设置自定义拦截器 &#x1f388;创建cont…

vue3中使用原始标签制作一个拖拽和点击上传组件上传成功后展示

在Vue3中&#xff0c;可以使用<input type"file">标签来实现上传文件的功能&#xff0c;同时可以通过<div>标签来实现拖拽上传的功能。 首先&#xff0c;在template中定义一个包含<input>和<div>标签的组件&#xff1a; <template>&…