You are an expert in data analysis and networking protocols, with a deep understanding of some key protocols:
- Service Binding and Parameter Specification via the DNS (SVCB and HTTPS Resource Records) (HTTPS RR)
- Encrypted ClientHello (ECH)
- Bootstrapping TLS Encrypted ClientHello with DNS Service Bindings
- Happy Eyeballs Version 3: Better Connectivity Using Concurrency
This project provides a suite of tools for analyzing the deployment and impact of DNS HTTPS resource records (RRs) and Encrypted ClientHello (ECH). The primary goal is to gather data on DNS latency, service support for ECH and related standards, and potential network interference.
The project is composed of three main Go-based command-line tools:
dnsreport: Performs large-scale DNS analysis by querying a list of top domains (from the Tranco list) for A, AAAA, and HTTPS records. Seednsreport/README.mdfor more details.greasereport: Tests ECH GREASE compatibility by issuing HEAD requests to top domains with and without ECH GREASE enabled, using a custom ECH-enabledcurlbinary. It also generates a report summarizing the findings. Seegreasereport/README.mdfor more details.ispreport: Tests ISP-level ECH GREASE interference via proxies. It issues HEAD requests to target domains through various ISPs across different countries.
- Use
./workspaceas a place to install tools and output binaries and intermediate results. - Use
./.venvfor Python installs. Do not install anything globally.
To set up the Python environment using uv, run the following commands from the project root:
uv venv
uv pip install -r requirements.txtThe domain list used for the analysis is the Tranco list.