From 906620378b19c3c7acea119b513870e687d76b1c Mon Sep 17 00:00:00 2001 From: Peter Korsgaard Date: Wed, 3 Dec 2025 20:14:08 +0100 Subject: [PATCH] support/scripts/pkg-stats: use an unique HTTP user-agent As requested by the gnu.org admins: " Since August 2024, we've been under DDoS attacks from common command line tools. To fix this, we would need to change the user-agent from "Python/3.11 aiohttp/3.8.4" to "buildroot.org pkg-stats" instead. " It indeed probably makes sense to use an unique user-agent string, so rework the script to do that. Signed-off-by: Peter Korsgaard Signed-off-by: Julien Olivain (cherry picked from commit 0981b4117dcbf323b7d90c6debf0f89685e21a95) Signed-off-by: Thomas Perale --- support/scripts/pkg-stats | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/support/scripts/pkg-stats b/support/scripts/pkg-stats index c659acb80e..7d9170e30f 100755 --- a/support/scripts/pkg-stats +++ b/support/scripts/pkg-stats @@ -42,6 +42,8 @@ RM_API_STATUS_FOUND_BY_DISTRO = 2 RM_API_STATUS_FOUND_BY_PATTERN = 3 RM_API_STATUS_NOT_FOUND = 4 +HTTP_HEADERS = {'User-Agent': 'buildroot.org pkg-stats'} + class Defconfig: def __init__(self, name, path): @@ -469,7 +471,7 @@ async def check_url_status(session, pkg, npkgs, retry=True, verbose=False): global check_url_count try: - async with session.head(pkg.url) as resp: + async with session.head(pkg.url, headers=HTTP_HEADERS) as resp: if resp.status >= 400: pkg.status['url'] = ("error", "invalid {}".format(resp.status)) check_url_count += 1 @@ -526,7 +528,7 @@ def check_package_latest_version_set_status(pkg, status, version, identifier): async def check_package_get_latest_version_by_distro(session, pkg, retry=True): url = "https://release-monitoring.org/api/project/Buildroot/%s" % pkg.name try: - async with session.get(url) as resp: + async with session.get(url, headers=HTTP_HEADERS) as resp: if resp.status != 200: return False @@ -553,7 +555,7 @@ async def check_package_get_latest_version_by_distro(session, pkg, retry=True): async def check_package_get_latest_version_by_guess(session, pkg, retry=True): url = "https://release-monitoring.org/api/projects/?pattern=%s" % pkg.name try: - async with session.get(url) as resp: + async with session.get(url, headers=HTTP_HEADERS) as resp: if resp.status != 200: return False