之所以会有这样的操作,是因为域名一般对应的都是一个反向代理,直接请求域名,反向代理会将流量随机选一台机器打过去,而无法确保所有的机器都可用。所以直接用ip。
在 curl 命令中,--resolve 参数用于指定自定义的主机名解析规则。通过使用 --resolve 参数,你可以将指定的主机名解析为指定的 IP 地址,并将该解析结果应用于 curl 请求中。
具体来说,--resolve 参数的语法如下:
1 | curl --resolve <host:port:address> <URL> |
其中:
<host:port>是你希望自定义解析的主机名和端口号的组合。<address>是你希望将该主机名解析为的自定义 IP 地址。
通过指定 --resolve 参数,curl 将绕过标准的 DNS 解析过程,直接使用你提供的自定义 IP 地址来发送请求。这对于模拟特定的网络环境或测试特定服务器配置非常有用。
以下是一个示例:
1 | curl --resolve example.com:80:127.0.0.1 http://example.com |
上述命令将主机名 example.com 解析为 IP 地址 127.0.0.1,然后发送 HTTP 请求到 http://example.com。在这个示例中,--resolve 参数将请求定向到本地主机,绕过了标准的 DNS 解析过程。
请注意,--resolve 参数只影响当前 curl 命令的执行,不会修改系统的实际 DNS 解析规则。它仅用于在特定情况下进行临时的主机名解析定制。
之前在网易,经常用到这个命令
curl --resolve 'brain-prd-jd.netease.im:443:xxx.xxx.xxx.xx' https://brain-prd-jd.netease.im/v1/whois/brain
即绕过DNS解析,直接将https://brain-prd-jd.netease.im/v1/whois/brain这个请求,指向xxx.xxx.xxx.xx这个ip所对应的机器
其实用--resolve参数, 和绑定host一样的效果:
因为可能是m个域名,对应n个ip(n台机器),无论是挨个curl –resolve,还是修改host,都会很麻烦,写过一个检查绑定关系的工具:
1 | package main |
可以直接通过
go run checkbind.go -domain https://域名1,https://域名2 -ip 119.147.xxx.xx,120.147.xxx.xx -whois /v1/whois/health_check来检测
使用 CURL 的“–resolve“选项将请求固定到 IP 地址
Golang force http request to specific ip (similar to curl –resolve)
原文链接: https://dashen.tech/2023/07/07/curl-resolve参数的作用/
版权声明: 转载请注明出处.