Skip to content

Instantly share code, notes, and snippets.

@ponfertato
Created March 30, 2026 09:21
Show Gist options
  • Select an option

  • Save ponfertato/60898525c55b3eed6becfa0749b9afc9 to your computer and use it in GitHub Desktop.

Select an option

Save ponfertato/60898525c55b3eed6becfa0749b9afc9 to your computer and use it in GitHub Desktop.
Performs latency benchmarking for TLS 1.3 handshakes, sorts results by speed, and outputs the top 5 recommended domains for Xray Reality masking.
TARGET_IP=$(hostname -I | awk '{print $1}')
TARGET_PORT=443
TIMEOUT_SEC=2
MAX_RESULTS=5
SNI_LIST=(
"update.microsoft.com"
"download.windowsupdate.com"
"windows.update.microsoft.com"
"go.microsoft.com"
"docs.microsoft.com"
"learn.microsoft.com"
"azure.microsoft.com"
"portal.azure.com"
"login.microsoftonline.com"
"graph.microsoft.com"
"swcdn.apple.com"
"updates.cdn-apple.com"
"itunes.apple.com"
"api.apple-cloudkit.com"
"mesu.apple.com"
"gdmf.apple.com"
"ocsp.apple.com"
"crl.apple.com"
"www.icloud.com"
"gateway.icloud.com"
"speed.cloudflare.com"
"cdnjs.cloudflare.com"
"www.cloudflare.com"
"api.cloudflare.com"
"dash.cloudflare.com"
"www.amd.com"
"drivers.amd.com"
"download.amd.com"
"www.nvidia.com"
"geforce.com"
"us.download.nvidia.com"
"www.asus.com"
"support.asus.com"
"dlcdnets.asus.com"
"www.intel.com"
"downloadcenter.intel.com"
"ark.intel.com"
"cdn.jsdelivr.net"
"unpkg.com"
"registry.npmjs.org"
"pypi.org"
"files.pythonhosted.org"
"nodejs.org"
"docker.com"
"hub.docker.com"
"registry.hub.docker.com"
"www.samsung.com"
"updates.samsung.com"
"samsungotn.net"
"time.android.com"
"android.clients.google.com"
"www.oracle.com"
"edelivery.oracle.com"
"www.ibm.com"
"cloud.ibm.com"
"www.redhat.com"
"access.redhat.com"
"cdn.redhat.com"
"yandex.ru"
"disk.yandex.ru"
"ya.ru"
"vk.com"
"ok.ru"
"www.gosuslugi.ru"
"www.sberbank.ru"
"www.ozon.ru"
"www.wildberries.ru"
)
echo "Scanning $TARGET_IP:$TARGET_PORT..."
TEMP_FILE=$(mktemp)
for SNI in "${SNI_LIST[@]}"; do
START=$(date +%s%N)
RESP=$(echo | timeout $TIMEOUT_SEC openssl s_client -connect "$TARGET_IP:$TARGET_PORT" -servername "$SNI" -tls1_3 2>&1)
END=$(date +%s%N)
if echo "$RESP" | grep -q "Protocol.*TLSv1.3"; then
DURATION=$(( (END - START) / 1000000 ))
echo "$DURATION $SNI" >> "$TEMP_FILE"
fi
done
if [ ! -s "$TEMP_FILE" ]; then
echo "No working SNI found."
rm -f "$TEMP_FILE"
exit 1
fi
echo "Top $MAX_RESULTS Recommended SNI:"
sort -n "$TEMP_FILE" | head -n $MAX_RESULTS | nl -w2 -s". " | while read -r line; do
TIME=$(echo $line | awk '{print $2}')
DOMAIN=$(echo $line | awk '{print $3}')
echo "$line -> ${TIME}ms"
done
BEST_SNI=$(sort -n "$TEMP_FILE" | head -n1 | awk '{print $2}')
echo "Use Target/SNI: $BEST_SNI"
rm -f "$TEMP_FILE"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment