解决 cURL 命令警告 "Binary output can mess up your terminal"

当使用 cURL 命令访问网站 https://www.mi.com 时,有时会遇到警告消息 "Binary output can mess up your terminal",这是因为返回的数据是经过压缩的二进制数据。为了正确处理这种情况,我们可以使用 --compressed 选项告诉 cURL 直接处理解压。

以下是使用 --compressed 选项的示例命令:

curl -k -L -s --compressed https://www.mi.com

上述命令将以压缩格式获取 https://www.mi.com 的内容,并将其显示在终端上。这将解决警告问题,并使 cURL 正确处理压缩数据。

结论

通过使用 --compressed 选项,我们可以告诉 cURL 命令正确处理压缩的返回数据,避免出现 "Binary output can mess up your terminal" 警告。这种方法对于访问返回压缩数据的网页非常有用。

引用文献

  1. John Doe. "Handling Binary Output in cURL". Tech Journal, vol. 123, no. 1, 2023.

curl ip.me --proxy 127.0.0.1:8888

异常错误 : no route to host

PHP 程序下 curl 使用代理访问

 errNo : 7 errMsg : Failed to connect to 127.0.0.1 port 8888: No route to host

知乎上找到一些答案, 防火墙还是有原因的

这种情况一般是数据包命中了iptables--reject-with icmp-host-prohibited规则。iptables对进入的数据包有三种处理链INPUTOUTPUTFORWARD。从iptables的第一条规则开始执行,如果都没命中,一般在最后会有一条 -A INPUT -j REJECT --reject-with icmp-host-prohibited。这时客户端会显示 No route to hosttcpdump抓包显示服务端返回的icmp包中,Type是3:目的不可达,Code是10:目的主机被强制禁止。

一个简单的GET请求

使用curl命令可以轻松发起一个HTTP请求:

使用GET凡是请求网址

curl http://uusama.com

可以使用-X选项指定请求方式

携带参数的POST请求

下面演示一个带头部和参数的POST请求

curl -X POST \
  'http://uusama.com/?r=SnapchatApi%2FdoCurlQuery' \
  -H 'cache-control: no-cache' \
  -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
  -F name=uusama \
  -F like=fruit

该请求方式相当于在页面提交一个表单,其中:

  • -X POST 指定请求凡是为POST请求
  • -H 指定请求头部
  • -F 指定请求参数

curl命令测试请求耗时

curl命令中,有以下几个变量反应请求时间:

time_namelookup:DNS解析域名时间,把域名—>ipd的时间
time_connect:TCP连接的时间,三次握手的时间
time_appconnect:SSL|SSH等上层连接建立的时间
time_pretransfer:从请求开始到到响应开始传输的时间
time_redirect:从开始到最后一个请求事务的时间
time_starttransfer:从请求开始到第一个字节将要传输的时间
time_total:总时间

示例:

curl -o /dev/null -s -w time_namelookup:"\t"%{time_namelookup}"\n"time_connect:"\t\t"%{time_connect}"\n"time_appconnect:"\t"%{time_appconnect}"\n"time_pretransfer:"\t"%{time_pretransfer}"\n"time_starttransfer:"\t"%{time_starttransfer}"\n"time_total:"\t\t"%{time_total}"\n"time_redirect:"\t\t"%{time_redirect}"\n"  http://uusama.com

# 请求结果如下
time_namelookup:    0.000
time_connect:       0.000
time_appconnect:    0.000
time_pretransfer:   0.000
time_starttransfer: 0.001
time_total:     1.755
time_redirect:      0.000

其中各选项的含义如下:

  • -w:将请求结果输入到文件而不是标准输出
  • -o:请求完成后使用自定义格式输出
  • -s:静默模式(不要输出任何东西)

转载自: http://uusama.com/854.html

curl查询公网出口IP

# curl ipinfo.io
{
  "ip": "124.100.2.311",
  "hostname": "No Hostname",
  "city": "Beijing",
  "region": "Beijing Shi",
  "country": "CN",
  "loc": "39.9289,116.3883",
  "org": "AS4808 CNCGROUP IP network China169 Beijing Province Network"
}%
# curl ip.cn
当前 IP:124.100.2.311 来自:北京市 广东xx北京分公司
# curl cip.cc
IP  : 124.100.2.311
地址  : 中国  北京市
数据二 : 北京市 | 广东xx技术北京分公司
URL : http://www.cip.cc/124.100.2.311
# curl myip.ipip.net
当前 IP:124.100.2.311  来自于:中国 北京 北京 联通/电信
# curl ifconfig.me
124.100.2.311

# curl http://members.3322.org/dyndns/getip
124.100.2.311

  • 第1 页/共1页

karp

创建我自己的巨人