一、描述
在准备发布网站或调试已上线网站的问题时,有时绕过 CDN 和代理层来请求网站内容会很有帮助,方法是将这些 Web 请求直接发送到特定 IP 地址,而不使用网站的公共 DNS 记录。这种将 Web 请求直接“固定”到服务器的做法通常可以通过更改 /etc/hosts 文件来实现,这将导致对指定域名(例如:“ www.example.com”)的请求从本地计算机路由到指定的 IP 地址(例如:127.0.0.1),直到您对 /etc/hosts 所做的更改被还原。
但是,如果您想将单个请求固定到 IP 地址,而不修改系统的配置文件,该怎么办?幸运的是,这种“临时”绑定可以通过 cURL的命令行实现,它提供了一个特殊 resolve 选项格式 --resolve [DOMAIN]:[PORT]:[IP],它将在执行 cURL 命令期间执行的所有与给定 [DOMAIN] 和 [匹配的 Web 请求路由PORT] 到指定的 [IP] 地址。此选项指定的值(可以在单个命令中多次调用,以将多个域/端口组合路由到不同的 IP 地址)将应用于初始请求,也适用于跟随的重定向请求。
例如:
-
如果是使用 http 请求的话,这个很简单,直接加上 -H "Host: {域名}" 就可以了:
curl -v "Host: www.baidu.com" 180.101.50.242
-
如果是 https 的话,可以加上 --resolve 选项,也适用于 http 请求 。
# 格式: curl -s -v --resolve ${域名}:443:${ip} https://${域名} curl -s -v --resolve www.baidu.com:443:180.101.50.242 https://www.baidu.com
张贴您的评论