其他

curl 的一些tips

curl -G 和-GET的区别


curl 命令中的 -G 参数和 -GET 参数都表示发送 HTTP GET 请求的意思,但它们的具体用法略有不同。

-G 参数表示使用 HTTP GET 方法发送请求,但它还有一个特殊的功能,就是将参数以 URL query string 的形式发送。例如:

curl -G --data-urlencode 'name=John' --data-urlencode 'age=25' http://example.com/user

这个命令将会向 http://example.com/user 发送一个 HTTP GET 请求,请求的 URL 为 http://example.com/user?name=John&age=25。其中 --data-urlencode 参数表示对参数进行 URL 编码后再发送。

-GET 参数表示使用 HTTP GET 方法发送请求,但它并不会将参数以 URL query string 的形式发送。如果需要发送参数,必须使用 -d 参数指定参数的键值对,例如:

curl -GET -d 'name=John' -d 'age=25' http://example.com/user

这个命令将会向 http://example.com/user 发送一个 HTTP GET 请求,请求的 URL 不带参数,但是通过 -d 参数指定了两个参数 name=Johnage=25

总之,-G 参数更适合发送带有参数的 HTTP GET 请求,而 -GET 参数则更适合发送不带参数的 HTTP GET 请求。但是实际上,-GET 参数已经被废弃了,因此不建议再使用该参数。

curl -x是什么


-x 是 curl 命令中用于指定代理服务器的参数。当使用该参数时,curl 将会使用指定的代理服务器来发送 HTTP 请求,而不是直接发送给目标服务器。

-x 参数的语法如下:

curl -x <proxy> <url>

其中,<proxy> 是代理服务器的地址和端口号,可以使用以下格式:

  • proxyserver:port:指定代理服务器的地址和端口号,例如 proxy.example.com:8080
  • http://proxyserver:port:指定 HTTP 代理服务器的地址和端口号
  • socks5://proxyserver:port:指定 SOCKS5 代理服务器的地址和端口号

<url> 是要请求的 URL。

例如,下面的命令将会通过 proxy.example.com:8080 这个代理服务器来请求 http://example.com 这个 URL:

curl -x proxy.example.com:8080 http://example.com

如果代理服务器需要用户名和密码进行身份验证,则可以使用 --proxy-user 参数指定用户名和密码,例如:

curl -x proxy.example.com:8080 --proxy-user username:password http://example.com

这个命令将会使用 proxy.example.com:8080 代理服务器来请求 http://example.com,并使用 usernamepassword 进行身份验证。