From a4048f47f8d57d071dddc3a29967ca31bb23215a Mon Sep 17 00:00:00 2001 From: Andrew Ayer Date: Mon, 23 Jun 2025 16:32:19 -0400 Subject: [PATCH] Send helpful User-Agent string with all requests --- cmd/certspotter/main.go | 2 ++ ctclient/client.go | 4 +++- loglist/load.go | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/cmd/certspotter/main.go b/cmd/certspotter/main.go index c57f472..a187692 100644 --- a/cmd/certspotter/main.go +++ b/cmd/certspotter/main.go @@ -25,6 +25,7 @@ import ( "syscall" "time" + "software.sslmate.com/src/certspotter/ctclient" "software.sslmate.com/src/certspotter/loglist" "software.sslmate.com/src/certspotter/monitor" ) @@ -139,6 +140,7 @@ func appendFunc(slice *[]string) func(string) error { func main() { loglist.UserAgent = fmt.Sprintf("certspotter/%s (%s; %s; %s)", certspotterVersion(), runtime.Version(), runtime.GOOS, runtime.GOARCH) + ctclient.UserAgent = fmt.Sprintf("certspotter/%s (+https://github.com/SSLMate/certspotter)", certspotterVersion()) var flags struct { batchSize bool diff --git a/ctclient/client.go b/ctclient/client.go index a587c32..2852ab5 100644 --- a/ctclient/client.go +++ b/ctclient/client.go @@ -24,6 +24,8 @@ import ( "time" ) +var UserAgent = "software.sslmate.com/src/certspotter" + // Create an HTTP client suitable for communicating with CT logs. dialContext, if non-nil, is used for dialing. func NewHTTPClient(dialContext func(context.Context, string, string) (net.Conn, error)) *http.Client { return &http.Client{ @@ -61,7 +63,7 @@ func get(ctx context.Context, httpClient *http.Client, fullURL string) ([]byte, if err != nil { return nil, err } - request.Header.Set("User-Agent", "") // Don't send a User-Agent to make life harder for malicious logs + request.Header.Set("User-Agent", UserAgent) if httpClient == nil { httpClient = defaultHTTPClient diff --git a/loglist/load.go b/loglist/load.go index 11c8e8f..19a1f79 100644 --- a/loglist/load.go +++ b/loglist/load.go @@ -21,7 +21,7 @@ import ( "time" ) -var UserAgent = "certspotter" +var UserAgent = "software.sslmate.com/src/certspotter" type ModificationToken struct { etag string