Библиотека fake_useragent



Основная информация

Библиотека fake_useragent обеспечивает удобную генерацию фейковых значений User-Agent, что достаточно востребовано в сфере автоматизации и парсинга. Заметно облегчается процесс маскировки скрипта под рядового пользователя. Есть большое количество инструментов для настройки режима добавления новых заголовков и их смену. Такой подход позволяет заметно снизить вероятность получения блокировки.

Установка осуществляется при помощи стандартной команды:

pip install fake-useragent

Перед использованием в коде необходимо осуществить импорт:

from fake_useragent import UserAgent

Экземпляр класса можно создать двумя способами, в контексте дальнейшей работы они не отличаются.

ua = fake_useragent.UserAgent()
# или
ua = UserAgent()

Для запросов можно использовать обычный цикл:

for x in range(10):
    fake_ua = {'user-agent': ua.random}
    response = requests.get(url=url, headers=fake_ua)
    print(response.text)

Данный цикл работает следующим образом. На текущей итерации при помощи метода .random генерируется новый экземпляр класса UserAgent. Далее полученный UserAgent используется для выполнения GET-запроса. Полученный результат выводится при помощи стандартного print.

Пример реального использования представлен ниже.

# Импортируем необходимые библиотеки
from fake_useragent import UserAgent
import requests
import time
from random import randint

# Функция для выполнения GET-запроса с подменой User-Agent
def make_request(url, headers):
    try:
        response = requests.get(url, headers=headers, timeout=10)
        if response.status_code == 200:
            return response.text
        else:
            return f"Ошибка: получен статус-код {response.status_code}"
    except Exception as e:
        return f"Произошла ошибка: {e}"
# Инициализация
url = "http://httpbin.org/user-agent"
ua = UserAgent()
# Цикл для выполнения 10 запросов с разными User-Agent и случайными задержками
for i in range(10):
    fake_ua = {'User-Agent': ua.random}  # Генерация случайного User-Agent
    print(f"Итерация {i + 1} с User-Agent: {fake_ua['User-Agent']}")

    # Выполнение запроса
    response_text = make_request(url, fake_ua)
    print(f"Ответ сервера: {response_text}")

    # Случайная задержка от 1 до 5 секунд
    sleep_time = randint(1, 5)
    print(f"Задержка на {sleep_time} секунд")
    time.sleep(sleep_time)

Далее код будет разобран подробнее.

Функция make_request принимает на вход URL и заголовки, далее осуществляется выполнение GET-запроса. Если возвращается код 200, функция передает текст ответа, если код другой – возвращается текст ошибки.

На этапе инициализации переменных указывается нужный URL и создается новый экземпляр класса. Далее запускается цикл, на каждой итерации:

— создается новый User-Agent;
— осуществляется вызов функции make_request для передачи нового GET- запроса;
— выводится полученный ответ;
— для дополнительной защиты добавляется случайная пауза в диапазоне 1-5 секунд.

Дополнительные возможности библиотеки

Ограничение исходного списка обозревателей

В аргументе browsers можно явно передать список обозревателей для генерации. Пример реализации:

from fake_useragent import UserAgent
ua = UserAgent(browsers=['edge', 'chrome'])
print(ua.random)

По умолчанию fake_useragent поддерживает следующие браузеры:

chrome — для генерации User-Agent браузера Google Chrome;
edge — для генерации User-Agent браузера Microsoft Edge;
firefox — для генерации User-Agent браузера Mozilla Firefox;
safari — для генерации User-Agent браузера Apple Safari.

Аргумент os для указания операционных систем

По аналогичной схеме можно ограничить набор операционных систем. Пример:

from fake_useragent import UserAgent
ua = UserAgent(os='linux')
print(ua.random)

По умолчанию, fake_useragent поддерживает следующие операционные системы:

windows — для генерации User-Agent с операционной системой Windows;
macos — для macOS;
linux — для Linux.

Сочетание browsers и os позволяет получить узкий набор User-Agent под определенные задачи.

Аргумент min_percentage в библиотеке fake_useragent

Еще одна интересная возможность – фильтрация браузеров по популярности. Аргумент представляет собой минимальный процент популярности User-Agent, который будет использоваться при генерации. По умолчанию установлено значение 0, что означает полное отсутствие ограничений.

Это позволяет лучше имитировать доступ к сайту обычных пользователей, поскольку частое обращение через непопулярные браузеры может вызвать подозрение. Также контент сайта может быть не оптимизирован для работы с непопулярными браузерами, вплоть до нарушения работоспособности парсера.



Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: