Skip to main content

Генерация User-Agent и HTTP-заголовков на ядре Go

Project description

GitHub: py-fake-useragent

Библиотека Python+Go для генерации актуальных и правдоподобных строк User-Agent и полных наборов HTTP-заголовков. py-fake-useragent - это скомпилированная библиотека go-fake-useragent для Python через cgo чтобы не переписывать одну и туже логику. Работает через ctypes.

В отличие от других подобных библиотек, py-fake-useragent не использует статичные, захардкоженные или обновляемые вручную списки юзер-агентов. Вместо этого она динамически получает последние версии браузеров (Chrome, Edge) из официальных источников (Google, Microsoft), обеспечивая постоянную актуальность генерируемых данных.

Поддерживаемые браузеры

Только эти два десктопных браузера:

  • Google Chrome
  • Microsoft Edge

Потому что цель подобных библиотек - обеспечить маскировку под реальные массовые браузеры. Добавление остальных браузеров - бессмысленно, т.к. их доля в десктопном сегменте незначительная. Использование редких юзер-агентов - противоречит цели.

Особенности

  • Динамическое обновление: версии браузеров загружаются из официальных API и репозиториев.
  • Высокая отказоустойчивость и многоуровневая система фоллбэка:
    1. кэш на диске (опционально).
    2. параллельные сетевые запросы к нескольким источникам (какой-нибудь да ответит!).
    3. математическая аппроксимация версии на основе текущей даты как крайняя мера.
  • Генерация полных заголовков: может генерировать не только User-Agent, но и соответствующие ему sec-ch-ua и прочие заголовки, имитируя реальный браузер (а уже в клиентском коде можно к ним добавить свои).
  • Кэширование на диске: ускоряет инициализацию при повторных запусках и снижает количество сетевых запросов.
  • Поддержка поисковых ботов: генерирует заголовки для маскировки под Googlebot, BingBot и YandexBot.
  • Нулевые зависимости: используется только стандартная библиотека Go.

Установка

uv add py_fake_useragent

или:

pip install py_fake_useragent

Использование

import logging
from json import dumps

from py_fake_useragent import UserAgent, CrawlerType

# настройка стандартного логгера Python,
# для большей скорости лучше использовать: https://github.com/microsoft/picologging
logging.basicConfig(level=logging.DEBUG, format='[%(levelname)s] %(message)s')
py_logger = logging.getLogger('GoUserAgent')

if __name__ == '__main__':
    print('--- инициализация с кэшем и логгером ---')
    ua = UserAgent(use_disk_cache=True, logger=py_logger)

    print('\n--- получение User-Agent ---')
    random_ua = ua.get()
    print(f'Случайный UA: {random_ua}')

    print('\n--- получение заголовков ---')
    headers = ua.get_headers('https://example.com/path')
    print(dumps(headers, indent=2))

    print('\n--- получение заголовков краулера ---')
    google_headers = ua.get_crawler_headers(CrawlerType.GOOGLE)
    print('Google Bot:\n', dumps(google_headers, indent=2))

    print('\n--- явное закрытие (не обязательно, но рекомендуется если библиотека не будет использоваться дальше) ---')
    ua.close()

    print('\n--- инициализация без кэша (будет использована аппроксимация, если нет сети)')
    print('и с контекстным менеджером `with` для автоматического управления ресурсами ---\n')

    with UserAgent(use_disk_cache=False) as ua:
        ua_no_cache = ua.get()
        print(f'UA без кэша: {ua_no_cache}')
        print(f'заголовки без кэша: {dumps(ua.get_headers("https://site.ru/url/path"), indent=2)}')

выходные данные:

--- инициализация с кэшем и логгером ---
[DEBUG] time=2026-06-06T14:15:22.168+05:00 level=DEBUG msg="успешно загружены версии User-Agent из кэша на диске"

--- получение User-Agent ---
Случайный UA: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.178 Safari/537.36 Edg/148.0.7778.178

--- получение заголовков ---
{
  "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
  "accept-language": "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7",
  "cache-control": "no-cache",
  "device-memory": "32",
  "downlink": "8.0",
  "dpr": "1.0",
  "ect": "4g",
  "origin": "https://yandex.ru",
  "pragma": "no-cache",
  "priority": "u=0, i",
  "referer": "https://yandex.ru",
  "rtt": "200",
  "sec-ch-ua": "\"Microsoft Edge\";v=\"148\", \"Not,A-Brand\";v=\"99\", \"Chromium\";v=\"148\"",
  "sec-ch-ua-arch": "\"x86\"",
  "sec-ch-ua-bitness": "\"64\"",
  "sec-ch-ua-full-version": "\"148.0.7778.178\"",
  "sec-ch-ua-full-version-list": "\"Microsoft Edge\";v=\"148.0.7778.178\", \"Not,A-Brand\";v=\"99.0.0.0\", \"Chromium\";v=\"148.0.7778.178\"",
  "sec-ch-ua-mobile": "?0",
  "sec-ch-ua-model": "\"\"",
  "sec-ch-ua-platform": "\"Windows\"",
  "sec-ch-ua-platform-version": "\"19.0.0\"",
  "sec-ch-ua-wow64": "?0",
  "sec-ch-viewport-height": "532",
  "sec-ch-viewport-width": "1278",
  "sec-fetch-dest": "document",
  "sec-fetch-mode": "navigate",
  "sec-fetch-site": "same-origin",
  "sec-fetch-user": "?1",
  "upgrade-insecure-requests": "1",
  "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.178 Safari/537.36 Edg/148.0.7778.178",
  "viewport-width": "1278"
}

--- получение заголовков краулера ---
Google Bot:
 {
  "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
  "accept-encoding": "gzip, deflate, br",
  "accept-language": "en-US,en;q=0.9",
  "from": "googlebot(at)google.com",
  "user-agent": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Googlebot/2.1; +http://www.google.com/bot.html) Chrome/139.0.7258.139 Safari/537.36"
}

--- явное закрытие (не обязательно) ---

--- инициализация без кэша (будет использована аппроксимация, если нет сети)
и с контекстным менеджером `with` для автоматического управления ресурсами ---

UA без кэша: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.168 Safari/537.36
заголовки без кэша: {
  "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
  "accept-language": "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7",
  "cache-control": "no-cache",
  "device-memory": "8",
  "downlink": "10.0",
  "dpr": "1.5",
  "ect": "4g",
  "origin": "https://yandex.ru",
  "pragma": "no-cache",
  "priority": "u=0, i",
  "referer": "https://yandex.ru",
  "rtt": "200",
  "sec-ch-ua": "\"Google Chrome\";v=\"148\", \"Not?A)Brand\";v=\"24\", \"Chromium\";v=\"148\"",
  "sec-ch-ua-arch": "\"x86\"",
  "sec-ch-ua-bitness": "\"64\"",
  "sec-ch-ua-full-version": "\"148.0.7778.168\"",
  "sec-ch-ua-full-version-list": "\"Google Chrome\";v=\"148.0.7778.168\", \"Not?A)Brand\";v=\"24.0.0.0\", \"Chromium\";v=\"148.0.7778.168\"",
  "sec-ch-ua-mobile": "?0",
  "sec-ch-ua-model": "\"\"",
  "sec-ch-ua-platform": "\"Windows\"",
  "sec-ch-ua-platform-version": "\"19.0.0\"",
  "sec-ch-ua-wow64": "?0",
  "sec-ch-viewport-height": "592",
  "sec-ch-viewport-width": "1216",
  "sec-fetch-dest": "document",
  "sec-fetch-mode": "navigate",
  "sec-fetch-site": "same-origin",
  "sec-fetch-user": "?1",
  "upgrade-insecure-requests": "1",
  "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.168 Safari/537.36",
  "viewport-width": "1216"
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

py_fake_useragent-0.1.2-py3-none-win_amd64.whl (2.8 MB view details)

Uploaded Python 3Windows x86-64

py_fake_useragent-0.1.2-py3-none-musllinux_1_1_x86_64.whl (2.9 MB view details)

Uploaded Python 3musllinux: musl 1.1+ x86-64

py_fake_useragent-0.1.2-py3-none-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl (2.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

py_fake_useragent-0.1.2-py3-none-macosx_14_0_arm64.whl (2.8 MB view details)

Uploaded Python 3macOS 14.0+ ARM64

File details

Details for the file py_fake_useragent-0.1.2-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for py_fake_useragent-0.1.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 bddb4f7f5379faa4e5b8b53bc4c3f34ab03087371c2c8547657414f131c4439f
MD5 824ffd2b57f4df0091047e6b1a2da5f2
BLAKE2b-256 807cf5d3e45e865dfddc6489c2381feb8af5075de1629fe9b2d172ad30fb659b

See more details on using hashes here.

File details

Details for the file py_fake_useragent-0.1.2-py3-none-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for py_fake_useragent-0.1.2-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 29b1f929140c7afacef81f15b0c2ce7d3813e5f07441669df5730bf662d8bc5d
MD5 24b0e4229a9fedeba506e690e259ea29
BLAKE2b-256 0821de5c254faa2c2131215a0858018e5fd5d7d3911d505882109f945aa90090

See more details on using hashes here.

File details

Details for the file py_fake_useragent-0.1.2-py3-none-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for py_fake_useragent-0.1.2-py3-none-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 c1eca5827d6b56e018febe1327f53f1f92faf1ce8c85ce8c47997988ac51f400
MD5 95e9b3446837e32ca3a90a92d73b1770
BLAKE2b-256 9c33fc133b2e31b37b4e409b9dc9d9c67cd1de9afcaf1c8be269d6176bebd99d

See more details on using hashes here.

File details

Details for the file py_fake_useragent-0.1.2-py3-none-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for py_fake_useragent-0.1.2-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 be5c545ef4954b8474f1d3db2ce1a6a579ce6c47f3503d7242d500b143189480
MD5 350f1f511f15a3969102b16b58735a02
BLAKE2b-256 66e226b1d56ff54c834941dcfb6fbdcb061df072c9fb4f32a0d3d1457cd91ac2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page