范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

linux下最全curl命令使用方式学习和拓展

  为什么要使用curl命令?
  curl命令可以帮助我们在linux服务内部通讯,排查接口是否能够正确调用,外网的接口是否有防火墙限制,内网的请求可以快速帮我们获取接口参数返回,并且调试程序代码,在局域网,或者内网的时候只能在内网调试,这个时候curl命令足以支持我们完成所有调试和测试。
  curl 能做什么?
  这是官网的介绍:记住学习一个技术一定要看官网的文档和介绍,不要一上手就去百度,百度只会让你成为一个基础的代码搬运工,要养成去官网看文档的习惯。
  curl官网:https://curl.se/docs/httpscripting.html
  下面引用下官网的脚本介绍和使用:使用 Curl 编写 HTTP 请求脚本的艺术
  背景
  本文档假定您熟悉 HTML 和一般网络。
  越来越多的应用程序迁移到 Web 使得"HTTP 脚本"的请求和需求更加频繁。能够自动从网络中提取信息、伪造用户、向网络服务器发布或上传数据都是当今重要的任务。
  Curl 是一个用于执行各种 URL 操作和传输的命令行工具,但本文档将重点介绍如何在执行 HTTP 请求时使用它以获取乐趣和利润。我将假设您知道如何调用curl --help或curl --manual获取有关它的基本信息。
  Curl 并不是为你做所有事情。它发出请求,获取数据,发送数据并检索信息。您可能需要使用某种脚本语言或重复的手动调用将所有内容粘合在一起。
  HTTP 协议
  HTTP 是用于从 Web 服务器获取数据的协议。它是一个建立在 TCP/IP 之上的简单协议。该协议还允许使用几种不同的方法将信息从客户端发送到服务器,如下所示。
  HTTP 是由客户端发送到服务器以请求特定操作的纯 ASCII 文本行,然后服务器在实际请求的内容发送到客户端之前回复几行文本。
  客户端 curl 发送一个 HTTP 请求。请求包含一个方法(如 GET、POST、HEAD 等)、许多请求标头,有时还包含一个请求正文。HTTP 服务器以状态行(指示事情是否顺利)、响应标头以及最常见的响应正文进行响应。"body"部分是您请求的纯数据,例如实际的 HTML 或图像等。
  见协议
  使用 curl 的选项--verbose(-v作为一个简短的选项)将显示 curl 发送到服务器的命令类型,以及一些其他信息文本。
  --verbose是调试甚至理解 curl<-> 服务器交互是最有用的选项。
  有时甚至--verbose是不够的。然后提供更多细节,因为它们显示了--tracecurl发送和接收的所有内容。像这样使用它:--trace-ascii
  curl --trace-ascii debugdump.txt http://www.example.com/
  看时间
  很多时候,您可能想知道到底是什么时间,或者您只想知道传输中两点之间的毫秒数。对于这些情况以及其他类似情况,--trace-time您需要选择该选项。它会将时间添加到每个跟踪输出行:
  curl --trace-ascii d.txt --trace-time http://example.com/
  查看响应
  默认情况下 curl 将响应发送到标准输出。您需要将其重定向到某个地方以避免这种情况,通常是使用 -oor完成的-O。
  网址
  规格
  统一资源定位符格式是您指定 Internet 上特定资源地址的方式。你知道这些,你已经看过像https://curl.se或https://yourbank.com这样的 URL一百万次。RFC 3986 是规范规范。是的,正式名称不是 URL,而是 URI。
  主持人
  主机名通常使用 DNS 或 /etc/hosts 文件解析为 IP 地址,这就是 curl 将与之通信的内容。或者,您可以直接在 URL 中指定 IP 地址而不是名称。
  对于开发和其他尝试情况,您可以使用 curl 的--resolve选项为主机名指向不同的 IP 地址,而不是其他情况下使用的 IP 地址:
  curl --resolve www.example.org:80:127.0.0.1 http://www.example.org/
  端口号
  curl 支持的每个协议都在默认端口号上运行,无论是通过 TCP 还是在某些情况下是 UDP。通常您不必考虑这一点,但有时您会在其他端口或类似端口上运行测试服务器。然后,您可以在 URL 中使用冒号和紧跟主机名的数字指定端口号。就像对端口 1234 执行 HTTP 时一样:
  curl http://www.example.org:1234/
  您在 URL 中指定的端口号是服务器用来提供其服务的端口号。有时您可能会使用代理,然后您可能需要将代理的端口号与 curl 连接到服务器所需的端口号分开。就像在端口 4321 上使用 HTTP 代理一样:
  curl --proxy http://proxy.example.org:4321 http://remote.example.org/
  用户名和密码
  某些服务设置为需要 HTTP 身份验证,然后您需要提供名称和密码,然后根据使用的确切身份验证协议以各种方式将其传输到远程站点。
  您可以选择在 URL 中插入用户名和密码,也可以单独提供:
  curl http://user:password@example.org/
  或者
  curl -u user:password http://example.org/
  您需要注意的是,这种 HTTP 身份验证并不是当今面向用户的网站通常所做的和要求的。他们倾向于使用表格和cookies。
  路径部分
  路径部分只是被发送到服务器以请求它发回相关的响应。路径是在主机名和可能的端口号后面的斜杠右侧的内容。
  获取页面
  得到
  使用 HTTP 进行的最简单和最常见的请求/操作是获取 URL。URL 本身可以引用网页、图像或文件。客户端向服务器发出 GET 请求并接收它请求的文档。如果您发出命令行
  curl https://curl.se
  您会在终端窗口中返回一个网页。该 URL 包含的整个 HTML 文档。
  所有 HTTP 回复都包含一组通常隐藏的响应头,使用 curl 的--include( -i) 选项来显示它们以及文档的其余部分。
  头
  --head您可以使用( ) 选项仅向远程服务器询问标头,-I这将使 curl 发出 HEAD 请求。在某些特殊情况下,服务器拒绝 HEAD 方法,而另一些仍然有效,这是一种特殊的烦恼。
  HEAD 方法的定义和制作使得服务器返回的标题与它对 GET 所做的完全一样,但没有正文。这意味着您可能会Content-Length:在响应标头中看到 a,但在 HEAD 响应中不能有实际的正文。
  单个命令行中的多个 URL
  单个 curl 命令行可能涉及一个或多个 URL。最常见的情况可能是只使用一个,但您可以指定任意数量的 URL。是的,任何。无限。然后,您将收到针对所有给定 URL 的重复请求。
  例如,发送两个 GET:
  curl http://url1.example.com http://url2.example.com
  如果您使用--dataPOST 到 URL,则使用多个 URL 意味着您将相同的 POST 发送到所有给定的 URL。
  例如,发送两个 POST:
  curl --data name=curl http://url1.example.com http://url2.example.com
  单个命令行中的多个 HTTP 方法
  有时您需要在一个命令行中对多个 URL 进行操作,并对每个 URL 执行不同的 HTTP 方法。为此,您将享受该--next选项。它基本上是一个分隔符,将一堆选项与下一个选项分开。之前的所有 URL--next都将获得相同的方法,并将所有 POST 数据合并为一个。
  当 curl--next在命令行上到达时,它将重置方法和 POST 数据并允许新的设置。
  也许最好用几个例子来说明这一点。要先发送一个 HEAD,然后再发送一个 GET:
  curl -I http://example.com --next http://example.com
  要先发送 POST,然后再发送 GET:
  curl -d score=10 http://example.com/post.cgi --next http://example.com/results.html
  HTML 表单
  表格解释
  表单是网站呈现 HTML 页面的一般方式,其中包含供用户输入数据的字段,然后按某种"确定"或"提交"按钮将该数据发送到服务器。然后服务器通常使用发布的数据来决定如何行动。就像使用输入的词在数据库中搜索,或在错误跟踪系统中添加信息,在地图上显示输入的地址或使用信息作为登录提示验证用户是否可以查看它的内容查看。
  当然,服务器端必须有某种程序来接收您发送的数据。你不能凭空发明一些东西。
  得到
  GET-form 使用 GET 方法,如 HTML 中指定的那样:
  在您喜欢的浏览器中,此表单将显示一个文本框以供填写,并带有一个标有"确定"的按钮。如果您填写"1905"并按 OK 按钮,您的浏览器将创建一个新的 URL 来为您获取。该 URL 将junk.cgi?birthyear=1905&press=OK附加到前一个 URL 的路径部分。
  如果在页面上看到原始表单www.example.com/when/birth.html,您将获得的第二页将变为www.example.com/when/junk.cgi?birthyear=1905&press=OK。
  大多数搜索引擎都是这样工作的。
  要让 curl 为您发送 GET 表单,只需输入预期的创建 URL:
  curl "http://www.example.com/when/junk.cgi?birthyear=1905&press=OK"
  邮政
  GET 方法使所有输入字段名称都显示在浏览器的 URL 字段中。当您希望能够使用给定数据为该页面添加书签时,这通常是一件好事,但如果您在其中一个字段中输入了秘密信息,或者如果有大量字段创建了一个长且不可读的网址。
  然后 HTTP 协议提供 POST 方法。这样,客户端发送的数据与 URL 分开,因此您不会在 URL 地址字段中看到任何数据。
  该表单看起来与前一个类似:
  并且要使用 curl 来发布此表单,并填写与以前相同的数据,我们可以这样做:
  curl --data "birthyear=1905&press=%20OK%20" http://www.example.com/when/junk.cgi
  这种 POST 将使用 Content-Typeapplication/x-www-form-urlencoded并且是使用最广泛的 POST 类型。
  您发送到服务器的数据必须已经正确编码,curl 不会为您这样做。例如,如果您希望数据包含一个空格,则需要将该空格替换为%20等。不遵守此规定很可能会导致您的数据被错误接收并弄乱。
  最近的 curl 版本实际上可以为您对 POST 数据进行 url 编码,如下所示:
  curl --data-urlencode "name=I am Daniel" http://www.example.com
  如果您--data在命令行上重复多次,curl 将连接所有给定的数据段 - 并&在每个数据段之间放置一个符号。
  文件上传 POST
  早在 1995 年末,他们就定义了另一种通过 HTTP 发布数据的方式。它记录在 RFC 1867 中,为什么这种方法有时被称为 RFC1867-posting。
  该方法主要是为了更好地支持文件上传而设计的。允许用户上传文件的表单可以用 HTML 编写如下:
  这清楚地表明即将发送的 Content-Type 是multipart/form-data.
  要使用 curl 发布到这样的表单,请输入如下命令行:
  curl --form upload=@localfilename --form press=OK [URL]
  隐藏字段
  基于 HTML 的应用程序在页面之间传递状态信息的常用方法是向表单添加隐藏字段。隐藏字段已经填写,它们不会显示给用户,它们会像所有其他字段一样被传递。
  具有一个可见字段、一个隐藏字段和一个提交按钮的类似示例表单可能如下所示:
  要使用 curl 发布此内容,您无需考虑字段是否隐藏。卷曲它们都是一样的:
  curl --data "birthyear=1905&press=OK&person=daniel" [URL]
  弄清楚 POST 的样子
  当您要填写表单并使用 curl 而不是浏览器将其发送到服务器时,您当然有兴趣完全按照浏览器的方式发送 POST。
  一个简单的查看方法是将带有表单的 HTML 页面保存在本地磁盘上,将"方法"修改为 GET,然后按提交按钮(如果需要,您也可以更改操作 URL) .
  然后,您将清楚地看到数据被附加到 URL 中,并用 -?字母分隔,因为 GET 表单应该如此。
  HTTP 上传
  放
  也许将数据上传到 HTTP 服务器的最佳方式是使用 PUT。话又说回来,这当然需要有人在知道如何接收 HTTP PUT 流的服务器端放置一个程序或脚本。
  使用 curl 将文件放入 HTTP 服务器:
  curl --upload-file uploadfile http://www.example.com/receive.cgi
  HTTP 身份验证
  基本认证
  HTTP 身份验证能够告诉服务器您的用户名和密码,以便它可以验证您是否被允许执行您正在执行的请求。HTTP 中使用的基本身份验证(默认情况下 curl 使用的类型)是基于纯文本的,这意味着它发送的用户名和密码只是稍微混淆,但仍然可以被任何在你和远程服务器之间的网络上嗅探的人完全读取。
  告诉 curl 使用用户和密码进行身份验证:
  curl --user name:password http://www.example.com
  其他认证
  该站点可能需要不同的身份验证方法(检查服务器返回的标头),然后--ntlm, --digest,--negotiate甚至--anyauth可能是适合您的选项。
  代理身份验证
  有时您的 HTTP 访问只能通过使用 HTTP 代理获得。这似乎在各个公司中尤为常见。HTTP 代理可能需要自己的用户名和密码才能允许客户端访问 Internet。要使用 curl 指定那些,请运行以下命令:
  curl --proxy-user proxyuser:proxypassword curl.se
  如果您的代理需要使用 NTLM 方法完成身份验证,请使用--proxy-ntlm,如果它需要 Digest 使用--proxy-digest。
  如果您使用这些用户+密码选项中的任何一个,但省略了密码部分,curl 将交互提示输入密码。
  隐藏凭据
  请注意,当程序运行时,在列出系统正在运行的进程时,可能会看到它的参数。因此,如果您将密码作为纯命令行选项传递,其他用户可能会看到您的密码。有办法规避这一点。
  值得注意的是,虽然这是 HTTP 身份验证的工作方式,但许多网站在提供登录等时不会使用此概念。有关详细信息,请参阅下面的 Web 登录章节。
  更多 HTTP 标头
  推荐人
  HTTP 请求可能包含一个"referer"字段(是的,它拼写错误),可用于判断客户端从哪个 URL 获取到该特定资源。一些程序/脚本会检查请求的引用字段,以验证这不是来自外部站点或未知页面。虽然这是一种检查容易伪造的东西的愚蠢方法,但许多脚本仍然这样做。使用 curl,您可以在引用字段中放入任何您想要的内容,从而更容易欺骗服务器为您的请求提供服务。
  使用 curl 设置引用字段:
  curl --referer http://www.example.come http://www.example.com
  用户代理
  与referer 字段类似,所有HTTP 请求都可以设置User-Agent 字段。它命名正在使用的用户代理(客户端)。许多应用程序使用此信息来决定如何显示页面。愚蠢的网络程序员试图为不同浏览器的用户制作不同的页面,以使它们看起来最适合他们的特定浏览器。他们通常也做不同类型的 JavaScript、VBScript 等。
  有时,您会看到使用 curl 获取页面不会返回您在使用浏览器获取页面时看到的相同页面。然后你知道是时候设置用户代理字段来欺骗服务器,让服务器认为你是那些浏览器之一。
  要使 curl 在 Windows 2000 机器上看起来像 Internet Explorer 5:
  curl --user-agent "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" [URL]
  或者为什么不看起来像在旧的 Linux 机器上使用 Netscape 4.73:
  curl --user-agent "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" [URL]
  重定向
  位置标头
  当从服务器请求资源时,来自服务器的回复可能包括关于浏览器下一步应该去哪里找到该页面的提示,或者一个新页面保留新生成的输出。告诉浏览器重定向的标头是Location:.
  默认情况下, Curl 不跟随Location:标头,而是以与显示所有 HTTP 回复相同的方式简单地显示此类页面。但是,它确实具有一个选项,可以使它尝试跟随Location:指针。
  告诉 curl 跟随一个位置:
  curl --location http://www.example.com
  如果您使用 curl 发布到一个立即将您重定向到另一个页面的站点,您可以安全地使用--location( -L) 和--data/--form一起。Curl 只会在第一个请求中使用 POST,然后在以下操作中恢复为 GET。
  其他重定向
  浏览器通常支持至少两种 curl 不支持的其他重定向方式:首先,html 可能包含一个元刷新标签,要求浏览器在设定的秒数后加载特定的 URL,或者它可能使用 JavaScript 来完成。
  饼干
  饼干基础
  Web 浏览器执行"客户端状态控制"的方式是使用 cookie。Cookie 只是带有相关内容的名称。cookie 由服务器发送给客户端。服务器告诉客户端它想要返回 cookie 的路径和主机名,它还发送一个过期日期和更多属性。
  当客户端使用先前在接收到的 cookie 中指定的名称和路径与服务器通信时,客户端将 cookie 及其内容发送回服务器,当然除非它们已过期。
  许多应用程序和服务器使用此方法将一系列请求连接到单个逻辑会话中。为了能够在这种情况下使用 curl,我们必须能够以 Web 应用程序期望的方式记录和发送回 cookie。浏览器处理它们的方式相同。
  饼干选项
  使用 curl 获取页面时向服务器发送一些 cookie 的最简单方法是在命令行中添加它们,例如:
  curl --cookie "name=Daniel" http://www.example.com
  Cookies 作为常见的 HTTP 标头发送。这是实用的,因为它允许 curl 仅通过记录标题来记录 cookie。使用--dump-header( -D) 选项使用 curl 记录 cookie,例如:
  curl --dump-header headers_and_cookies http://www.example.com
  (请注意,--cookie-jar下面描述的选项是存储 cookie 的更好方法。)
  如果您想重新连接到服务器并使用从先前连接中存储的 cookie(或手动制作以欺骗服务器相信您有先前的连接,Curl 内置了一个完整的 cookie 解析引擎,则可以使用该引擎)。要使用以前存储的 cookie,您可以运行 curl,如下所示:
  curl --cookie stored_cookies_in_file http://www.example.com
  --cookie当您使用该选项时,Curl 的"cookie 引擎"将被启用。如果您只想让 curl 了解收到的 cookie,请使用--cookie不存在的文件。例如,如果你想让 curl 理解来自页面的 cookie 并跟踪一个位置(因此可能会发回它收到的 cookie),你可以像这样调用它:
  curl --cookie nada --location http://www.example.com
  Curl 能够读取和写入使用 Netscape 和 Mozilla 曾经使用的相同文件格式的 cookie 文件。这是在脚本或调用之间共享 cookie 的便捷方式。( --cookie)-b开关自动检测给定文件是否是这样的 cookie 文件并对其进行解析,并且通过使用--cookie-jar( -c) 选项,您将使 curl 在操作结束时写入一个新的 cookie 文件:
  curl --cookie cookies.txt --cookie-jar newcookies.txt http://www.example.com
  HTTPS
  HTTPS 是 HTTP 安全的
  有几种方法可以进行安全的 HTTP 传输。到目前为止,最常用的协议是通常称为 HTTPS、HTTP over SSL 的协议。SSL 对通过网络发送和接收的所有数据进行加密,从而使攻击者更难窥探敏感信息。
  SSL(或称为该标准的最新版本的 TLS)提供了大量高级功能,以允许加密 HTTP 所需的所有加密和关键基础设施机制。
  当构建使用 TLS 库时,Curl 支持加密提取,并且可以构建它以使用相当大的一组库中的curl -V一个 - 将显示您的 curl 是为使用哪个库而构建的(如果有的话!)。要从 HTTPS 服务器获取页面,只需运行 curl,如下所示:
  curl https://secure.example.com
  证书
  在 HTTPS 世界中,您使用证书来验证您是您声称的那个人,作为普通密码的补充。Curl 支持客户端证书。所有证书都使用密码锁定,您需要输入密码才能让 curl 使用证书。密码短语可以在命令行中指定,如果没有,则在 curl 查询时以交互方式输入。在 HTTPS 服务器上使用带有 curl 的证书,例如:
  curl --cert mycert.pem https://secure.example.com
  curl 还尝试通过根据本地存储的 CA 证书包验证服务器的证书来验证服务器是否是它声称的身份。验证失败将导致 curl 拒绝连接。然后您必须使用--insecure( -k) 以防您想告诉 curl 忽略无法验证服务器。
  有关服务器证书验证和 ca 证书捆绑的更多信息,请参阅SSLCERTS 文档。
  有时您可能会得到自己的 CA 证书存储,然后您可以告诉 curl 使用它来验证服务器的证书:
  curl --cacert ca-bundle.pem https://example.com/
  自定义请求元素
  修改方法和标头
  做一些花哨的事情,您可能需要添加或更改单个 curl 请求的元素。
  例如,您可以将 POST 请求更改为 PROPFIND 并将数据发送为Content-Type: text/xml(而不是默认的 Content-Type),如下所示:
  curl --data "" --header "Content-Type: text/xml" --request PROPFIND example.com
  您可以通过提供没有内容的默认标题来删除默认标题。就像您可以通过切断 Host: 标头来破坏请求一样:
  curl --header "Host:" http://www.example.com
  您可以以相同的方式添加标题。您的服务器可能需要一个Destination:标头,您可以添加它:
  curl --header "Destination: http://nowhere" http://example.com
  更多关于改变方法
  需要注意的是,curl 根据请求的操作自行选择使用哪些方法。-d会做 POST,-I会做 HEAD 等等。如果使用--request/-X选项,您可以更改 curl 选择的方法关键字,但不会修改 curl 的行为。这意味着如果您例如使用 -d "data" 进行 POST,您可以将方法修改为PROPFINDwith-X并且 curl 仍会认为它发送 POST 。-X POST您可以通过简单地添加如下命令行将普通 GET 更改为 POST 方法:
  curl -X POST http://example.org/
  ...但是 curl 仍然会像发送 GET 一样思考和行动,因此它不会发送任何请求正文等。
  网页登录
  一些登录技巧
  虽然不仅仅是与 HTTP 相关,但它仍然会给很多人带来问题,所以这里是关于绝大多数登录表单如何工作以及如何使用 curl 登录到它们的执行概要。
  还可以注意到,要以自动化方式正确执行此操作,您肯定需要编写脚本并执行多个 curl 调用等。
  首先,服务器主要使用 cookie 来跟踪客户端的登录状态,因此您需要捕获在响应中收到的 cookie。然后,许多网站还在登录页面上设置了一个特殊的 cookie(以确保您通过他们的登录页面到达那里),因此您应该养成首先获取登录表单页面以捕获那里设置的 cookie 的习惯。
  一些基于 Web 的登录系统具有不同数量的 JavaScript,有时它们使用此类代码来设置或修改 cookie 内容。可能他们这样做是为了防止编程登录,就像本手册描述了如何......无论如何,如果阅读代码不足以让您手动重复该行为,那么捕获浏览器完成的 HTTP 请求并分析发送的 cookie 通常是一种工作方法,用于解决如何缩短 JavaScript 所需的时间。
  在登录的实际标签中,许多网站填写随机/会话或其他秘密生成的隐藏标签,您可能需要先捕获登录表单的 HTML 代码并提取所有隐藏字段才能正确执行登录 POST。请记住,在普通 POST 中发送时,内容需要进行 URL 编码。
  调试
  一些调试技巧
  很多时候,当您在站点上运行 curl 时,您会注意到该站点对您的 curl 请求的响应方式似乎与它对浏览器的响应方式不同。
  然后你需要开始让你的 curl 请求更类似于浏览器的请求:
  使用该--trace-ascii选项来存储请求的完整详细日志,以便于分析和更好地理解
  确保在需要时检查并使用 cookie(阅读--cookie和写作--cookie-jar)
  将 user-agent (with -A) 设置为一个,就像最近流行的浏览器一样
  -E像浏览器设置的那样设置引用者(带)
  如果您使用 POST,请确保以与浏览器相同的顺序发送所有字段。
  检查浏览器的功能
  确保您正确执行此操作的一个好帮手是 Web 浏览器的开发人员工具,可让您查看您发送和接收的所有标头(即使使用 HTTPS)。
  更原始的方法是使用 Wireshark 或 tcpdump 等工具捕获网络上的 HTTP 流量,并检查浏览器发送和接收的标头。(HTTPS 强制您使用它SSLKEYLOGFILE来执行此操作。)
  参数帮助命令:[root@master ~]# curl -h  Usage: curl [options...]   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  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 file"s 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. Don"t 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-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 OPT=VAL 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)  --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
  curl最全命令使用介绍:https://curl.se/docs/manpage.html
  curl最全基础教程使用方式:https://curl.se/docs/manual.html
  常用的4种方式:post ,get,delete.putcurl get方式:curl url 直接访问curl -o url 下载
  get 加请求头-X 请求方式-H 请求头-v 显示请求信息-d请求体
  curl -X GET -H "Content-type: application/json" -H "Content-Type: application/json" -d "{"excelExportColumnList":[{"fieldName":"orderCode","title":"订单号"}],"excelName":"充电订单记录导出.xlsx","queryParams":{"cacheKey":"cdf8a3da-cf96-4d8b-8001-0e3802a25872"}}
  " "http://*******/api/charge/report/searchChargerOrder"
  post 方式带token访问(post方式参数和get一样)
  curl -X POST -H "Authorization:{{4_5_Fe33QEGRSnh7Taotz4DLscmuNye02f8dyHYj_Jw.jQfVt4l6Xp7yUdtNxqdTpKXNbgUEmezd1zBuRSAK1Iw}}" -H "Content-Type: application/json" -d "{"name": "vipTest1"}" url
  put请求:服务注册发现用的比较多
  curl -X PUT -H "Content-Type: application/json" -d "{"key1":"value"}" "YOUR_URI"
  delete请求:
  curl -v -X DELETE url
  看过我自己写的请求,只是基础使用,具体的方式都在curl官网,教程操作文档很全,我介绍了我们常用使用curl的方式,当然还有证书,代理,其他协议的使用,感兴趣的可以自己去官网研究下,curl支持脚本方式调用,不仅仅支持xshell脚本,还有代码。
  ————没有与生俱来的天赋,都是后天的努力拼搏 (我是小杨,谢谢你的关注和支持)

入秋后火了一种穿搭,叫卫衣鲨鱼裤,时髦显瘦,明星也跟风有些时髦又百搭的单品,一到应季的时候就会火速重现在大家面前,它的时髦穿法也会被时髦精们重新搭配起来,就像一直很火的卫衣鲨鱼裤的组合,在入秋后就又流行了起来。运动休闲风格的卫衣搭配上看脸像浪子,实则情史干净的10位男明星,真是人不可貌相娱乐圈就是个名副其实的销金库大染缸,一不小心就会丢掉初心其中长相妩媚撩人的数不胜数,但真正情史干净,仔细算算少之又少美是天才的一种形式,它比天才还要直接,因为它无须证实,肉眼可见!这15位女明星,算不算被灰色强奸了?人之初,性本善,相信这个世界上的善意是远远比恶意要多得多的。但,总有一小部分人,打着为你好的理由来施行自己的罪恶行为。尤其是在娱乐圈,因为工作的性质,所以有太多的女星都会遭到意料不关于举办第四届中国工业互联网大赛的通知原标题关于举办第四届中国工业互联网大赛的通知各有关单位为深入实施工业互联网创新发展战略,拓展融合创新应用,赋能企业数字化转型,定于2022年9月12月举办第四届中国工业互联网大赛(温铁军数字经济与农业的结合我是温铁军。今天想跟大家交流一下关于数字经济与三农问题,直接结合调查研究的体会,向大家汇报一下我们科研团队最近这些年在这个数字经济,特别是数字乡村,数字农业这些领域中所做的调查研究机器人演京剧来源人民网人民日报海外版2022世界人工智能大会日前在上海举办。展会上,来自达闼的5G机器人小姜头戴翎羽,身披金黄色大靠服饰,化身齐天大圣孙悟空,将京剧中的手眼身法等招式模仿得惟妙浅谈ampampquot为什么西方科技发展快?ampampquot1浅谈为什么西方国家科技发展比我国快?1我想第一点是野心和梦想的缺乏,中国的民众叫老百姓,我觉得这个名词非常值得研究。老百姓就想过好日子,也就是说吃好喝好住就行了,闲来无事打麻将消磨IPO定价23。88元,小米海信创维供应商,逸豪新材申购解读大家好,我是量子熊猫。9月至今已经过去大半,本月一共上市了16只新股,然后破发了5只,破发率超过30,新股行情依然不容乐观,再叠加最近市场行情表现较弱,打新还是要继续谨慎一些。不过简单聊一下华为nove10Z(一款毫无性价比的机型)近日,华为在线上商城上悄无声息的上架了一款中低端机型华为Nove10z,从命名上说,这款手机应是华为nove10机型的低配版,我们先来看看外观,图片走起这个外观对于花粉来说应该很熟葬礼外交,中国展现东方智慧在国际关系中,葬礼外交大有玄机。中国外交部发言人毛宁9月17日宣布,应英国政府邀请,中国国家主席习近平特别代表国家副主席王岐山将出席9月19日在伦敦举行的伊丽莎白二世女王葬礼。短短蛋仔派对又双叒出奇招!全新决战技竟能精准拿捏对手?风靡万千休闲玩家的蛋仔派对,凭借逗趣的玩法机制和可爱的美术画风,让无数小伙伴开启难忘的闯关冒险之旅!有人戏称这款手游是高配版糖豆人,特别是很多创新设计,着实让人眼前一亮!比如游戏中
潮州有什么名小吃?潮州菜系文明海外,潮州的小吃当然也不甘落后。潮州春卷鸭母捻沙茶粿等极具地方风味特色,光是在潮州古城里走街串巷一阵,就能感受到地方的小吃花样之多。胡荣泉身为潮州著名老字号小吃店,小吃丽江古镇和束河古镇,哪个更好玩?丽江古镇和束河古镇,哪个更好玩儿呢?仁者见仁,智者见智,我也有自己的看法。我有不太恰当的比喻丽江古镇好像霸道总裁,束河古镇好像店铺掌柜。丽江古镇旅游开发的比较早,形成了旅游一条龙的摄影爱好者入手新机器之后,原先的老机器应该怎么处理?首先恭喜题主升级成功,从尼康D7200一下进军到尼康D850,我的尼康D300s还是在坚持中,用了9年时间,一直不舍得把它放弃。对于升级后的机器,有些朋友就是直接让其吃土了,尤其是怀孕可以吃虾吗?孕妈妈是非常特殊的一群人群,吃喝拉撒一不小心就掉坑了。壹周君觉得,这虾可以吃,但有些孕妈妈还真是不能乱吃。海鲜河鲜中,咱们对虾最为推崇,因为营养全面,蛋白质丰富,关键呢,美味好吃呀人民币是国内的称呼,它在外国被叫做什么?中国发行的钞票!小名叫钱。大名叫人民币。因为钞票上印着,中国人民银行!所以称作人民币。在国际上英语简CHN人民币。中国币,离岸人民币。我就知道它的别称叫毛老头。毛,毛泽东。就是钱币薇娅为啥拿自己的事业去赌?她觉得自己是名人了,犯了法觉得国家及税务不会随便动她,故忘乎所以!今年吴亦凡倒了,让她知道资本不敢犯法,她慌了,开始注销公司了。如果知道偷漏税会导致此景,就另觅其径!薇娅是把国家法最近看奥运,孙颖莎若干年后会不会成为下一个大魔王?2021年,三人三大赛事对比一,三大赛成绩1,莎莎奥运冠军,世乒赛冠军,世界杯冠军!2,曼玉奥运冠军,世乒赛冠军。3,沉梦奥运冠军。三人的成就档次,一目了然。,,,二,格局大小,综巨大的恐龙为什么会退化成小鸟?难道退化也是一种进化?所为恐龙时代,并不是想象的只有几种恐龙或不多的其他物种,生命物种还是较多的,只是说有三五种体积较大或较凶猛动物处在食肉动物顶端优势,而随着时间年轮的久远和地球遭遇外太空较大陨石的撞薇娅这次可以全身而退吗?等待她的会是什么?其实,现在,薇娅事件的后果已经慢慢显现出来,首先全网封杀,她的所有账号现在都已经搜索不到了,从全网第一的头部主播,但现在搜索无名,真的只是一刹那,收入那么高,还偷税漏税,我们每个月小米MIX2为何降价?这里补充一下,小米MIX2降价的是第三方渠道商以及黄牛,官方仍然保持原价。大家不要听风就是雨,保持起码的判断力。另外,之前原价购买的用户也要保持淡定,电子产品降价实在比较正常,不要如果苹果退出中国,手机行业哪个品牌受益最大?在悟空问答上的197个问题,只写接地气的科技内容,欢迎关注。苹果退出中国市场除非脑子进水了,大中华地区每季度的销售额都占到了苹果财报的五分之一,嗯,我国的确进入小康社会了不过放心,