diff --git a/Cargo.lock b/Cargo.lock index a1ad2ab5ba7..a18c48d5d9d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3147,6 +3147,7 @@ dependencies = [ "futures", "futures-util", "libp2p-identity", + "lighthouse_version", "mediatype", "multiaddr", "pretty_reqwest_error", diff --git a/common/eth2/Cargo.toml b/common/eth2/Cargo.toml index 7a75bdc80a1..2cd62db0508 100644 --- a/common/eth2/Cargo.toml +++ b/common/eth2/Cargo.toml @@ -20,6 +20,7 @@ ethereum_ssz_derive = { workspace = true } futures = { workspace = true } futures-util = "0.3.8" libp2p-identity = { version = "0.2", features = ["peerid"] } +lighthouse_version = { workspace = true } mediatype = "0.19.13" multiaddr = "0.18.2" pretty_reqwest_error = { workspace = true } diff --git a/common/eth2/src/lib.rs b/common/eth2/src/lib.rs index bcd979daca6..e7ab818d9ac 100644 --- a/common/eth2/src/lib.rs +++ b/common/eth2/src/lib.rs @@ -23,6 +23,7 @@ use educe::Educe; use futures::Stream; use futures_util::StreamExt; use libp2p_identity::PeerId; +use lighthouse_version::VERSION; pub use reqwest; use reqwest::{ Body, IntoUrl, RequestBuilder, Response, @@ -154,8 +155,20 @@ impl fmt::Display for BeaconNodeHttpClient { impl BeaconNodeHttpClient { pub fn new(server: SensitiveUrl, timeouts: Timeouts) -> Self { + let mut headers = HeaderMap::new(); + + // Add User-Agent header to identify the client + if let Ok(user_agent) = HeaderValue::from_str(VERSION) { + headers.insert(reqwest::header::USER_AGENT, user_agent); + } + + let client = reqwest::Client::builder() + .default_headers(headers) + .build() + .unwrap_or_else(|_| reqwest::Client::new()); + Self { - client: reqwest::Client::new(), + client, server, timeouts, }