用了這么多年 curl,竟然不知道還有這種用法?!

更多奇技淫巧歡迎訂閱博客:https://fuckcloudnative.io
我們經(jīng)常會遇到這樣一種場景:某一個服務(wù)更換了 IP,或者部署在多個服務(wù)器上,或許還使用了 CDN。我只是想臨時測試一下某個 IP,如果直接修改 DNS 解析或者修改 CDN 回源地址,可能會影響到用戶的訪問(萬一這個 IP 就是有問題呢?),有沒有別的辦法可以達成這個目的?
假設(shè)我想訪問 http://fuckcloudnative.io 這個域名,并且指定解析的 IP 地址為 1.1.1.1。
你可能會覺得這個問題很簡單,添加一條 hosts 不就行了嘛:
1.1.1.1?fuckcloudnative.io
OK,這個方法沒問題,但你可能需要刷新本地 DNS 緩存,或者需要在瀏覽器中強制刷新。當你測試完了之后,還得能想起來去刪掉這條 hosts。
大多數(shù)情況下我們都是用 curl 來測試服務(wù),你可以選擇修改 /etc/hosts 來達到目的,但這種方法總歸比較麻煩,如果能在 curl 的命令中直接指定域名的 IP 地址,那就更好了。
大部分人熟知的方法是覆蓋 Host HTTP Header:
$?curl?-H?"Host:?fuckcloudnative.io"?http://1.1.1.1/
這個方法在很長一段時間里都是百分之百有效的,但如今是 HTTPS 的世界,這種方法在 HTTPS 的世界里會出現(xiàn)各種問題。今天我將告訴大家一個新的參數(shù) --resolve:
--resolve?
???????Provide?a?custom?address?for?a??specific??host??and??port??pair.
???????Using??this,??you??can?make?the?curl?requests(s)?use?a?specified
???????address?and?prevent?the?otherwise?normally?resolved??address??to
???????be??used.
利用這個參數(shù),我們可以隨心所欲地指定域名解析的 IP,不管是 HTTP 還是 HTTPS。例如:
$?curl?http://fuckcloudnative.io/?--resolve?fuckcloudnative.io:80:1.1.1.1
$?curl?https://fuckcloudnative.io/?--resolve?fuckcloudnative.io:443:1.1.1.1
還有更高級的用法,比如使用 * 作為通配符,這樣請求中調(diào)用的所有 Host 都會轉(zhuǎn)到你指定的 IP:
$?curl?https://fuckcloudnative.io/?--resolve?*:443:1.1.1.1
是不是很好玩?


你可能還喜歡
點擊下方圖片即可閱讀

云原生是一種信仰??

掃碼關(guān)注公眾號
后臺回復(fù)?k8s?獲取史上最方便快捷的 Kubernetes 高可用部署工具,只需一條命令,連 ssh 都不需要!


點擊?"閱讀原文"?獲取更好的閱讀體驗!
??給個「在看」,是對我最大的支持??

