Contents

看 HTTP 和 HTTPS API 服務封包參數方法

最近程式測試API,有時候好奇程式傳出去內容是否跟 Postman 一樣,但是 DEBUG 時候真的不方便。最近在想有什麼方法(或工具)可以做到?
之前有看到有用 SSLKEYLOGFILE 可以用 Wireshark 解封包。深入理解 TLS/SSL 安全加密協定
雖然 Java 也有看到類似方法,但是要特別設定 jSSLKeyLog,還要安裝 Wireshark 軟體,所以覺得很麻煩?
最近看有沒有比較簡單方式測試?稍微爬一下文整理

HTTP test server accepting GET/POST requests - Stack Overflow

裡面看到 socat 大法最方便,可看封包又能轉傳!

Httpbin

httpbin.org

1
docker run -p 80:80 kennethreitz/httpbin

但這點在程式直覺看結果還是很不方便

Post Test Server V2

PTS - V2

有 http , https 方式接收資料,還算不錯。但沒有自己架設版本

nc

推薦使用這個指令,簡單好用。不知道 socat 也能不能做到這種事情,還能順便轉送出去封包?XD(下面有實作出來)
最大缺點應該就是不能 https

1
nc -kdl localhost 8000

socat

超級推薦使用這個指令,可看到資料,又可以推送出去,不是很棒嗎!!連 https 都能搞定

1
socat -v TCP-LISTEN:8080,fork,reuseaddr TCP:tw.yahoo.com:80
1
2
3
4
# http to https
socat -v TCP-LISTEN:8080,fork,reuseaddr OPENSSL:web_url:443,verify=0
# 測試用
curl -H Host:web_url http://localhost:8080/

這邊加 verify=0 是不能檢查憑證,這樣可以用瀏覽器看,但網站有做 Host 驗證的話,可以設定瀏覽器 Header設定 Host ,找ModHeader - Chrome 線上應用程式商店就能做到,不然就是改 Host檔案。這個是參考 Traefik 那篇(在 Raspberry PI 架設 Traefik 初體驗 | 程式狂想筆記)

相對,API 程式要加 Header,不然就是設定 Host 檔案,目前沒有找到 socat 修改 Header 方法。

參考來源: SSH over SSL, episode 2: replacing proxytunnel with socat

webhook.site

Webhook.site - Test, process and transform emails and HTTP requests

之前 line webhook 時候有用這個測試,非常好用。缺點只能用 https …,這算缺點嗎?(XD)
我要用這個測試 Java 8 憑證不認得這個網站憑證…,官方也有docker 自架服務,不過我就沒有嘗試。

PutsReq

PutsReq

也是有不錯操作,但沒有自架服務。

其他爬到東西

vi/websocat: Command-line client for WebSockets, like netcat (or curl) for ws:// with advanced socat-like functions