本指南會逐步引導您設定 Go 環境,並在 Go 程式碼中使用 Outline SDK。
我們將建立名為 splitfetch
的範例應用程式,展示 SDK 的功能。這個應用程式會擷取網頁,但不會在單一網路封包中傳送要求,而是使用 Outline SDK 將初始 TCP 串流分割為兩個獨立的封包。這可能有助於略過某些網路介入形式。
您將能夠在 Linux、Mac 和 Windows 上執行應用程式。如要整合行動應用程式,請參閱「在行動應用程式中加入 Outline SDK」。
步驟 1:設定 Go
首先,您需要Go 程式設計語言。如果您已安裝 Go (1.21 以上版本),可以直接跳到下一個步驟。
如要安裝,請按照官方指南操作;如果您使用套件管理工具,請按照下列步驟操作:
安裝 Go 後,您可以在終端機中執行下列指令,驗證 Go 是否正確安裝:
go version
步驟 2:建立 splitfetch
應用程式
讓我們設定 splitfetch
專案。首先,建立專案目錄並初始化 Go 模組:
mkdir splitfetch
cd splitfetch
go mod init example/splitfetch
接著,請匯入 Outline SDK 並建立 main.go
檔案:
go get github.com/Jigsaw-Code/outline-sdk@latest
touch main.go
步驟 3:在應用程式中使用 Outline SDK
在您偏好的程式碼編輯器中開啟 main.go
檔案,然後將下列程式碼貼上。這個程式碼包含 splitfetch
應用程式的所有邏輯。
package main
import (
"context"
"fmt"
"io"
"log"
"net"
"net/http"
"os"
"github.com/Jigsaw-Code/outline-sdk/transport"
"github.com/Jigsaw-Code/outline-sdk/transport/split"
)
// The number of bytes to send in the first packet.
const splitPacketSize = 3
func main() {
// 1. Get the URL from the command-line arguments.
if len(os.Args) < 2 {
log.Fatalf("Usage: %s <URL>", os.Args[0])
}
url := os.Args[1]
// 2. Create a split dialer from the Outline SDK.
// This dialer wraps a standard TCP dialer to add the splitting behavior.
dialer, err := split.NewStreamDialer(&transport.TCPDialer{}, split.NewFixedSplitIterator(splitPacketSize))
if err != nil {
log.Fatalf("Failed to create split dialer: %v", err)
}
// 3. Configure an HTTP client to use our custom split dialer for TCP connections.
httpClient := &http.Client{
Transport: &http.Transport{
DialContext: func(ctx context.Context, network, addr string) (net.Conn, error) {
return dialer.DialStream(ctx, addr)
},
},
}
// 4. Use the custom client to make the HTTP GET request.
resp, err := httpClient.Get(url)
if err != nil {
log.Fatalf("HTTP request failed: %v", err)
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
log.Fatalf("Failed to read response body: %v", err)
}
fmt.Println(string(body))
}
儲存程式碼後,請在終端機中執行下列指令,確認 go.mod
檔案已正確更新。
go mod tidy
步驟 4:執行應用程式
程式碼完成後,您現在可以執行 splitfetch
應用程式。
在 splitfetch
目錄中,在終端機中執行下列指令,並將網址做為引數傳遞:
go run . https://getoutline.org
這會編譯及執行應用程式,並顯示網頁的 HTML 內容。
如果您想建立並發布獨立程式,且無須 go
即可執行,請使用 go build
指令:
Linux 和 Mac
go build -o splitfetch .
Windows
go build -o splitfetch.exe .
建構完成後,您就可以發行及執行應用程式。例如:
./splitfetch https://getoutline.org