Назад к блогу

Настройка прокси в PHP через cURL и Guzzle HTTP Client: полное руководство с примерами кода

Полное руководство по настройке прокси в PHP через cURL и Guzzle HTTP Client — с примерами кода, ротацией IP и советами по выбору типа прокси для парсинга и автоматизации.

📅12 августа 2026 г.

Если вы пишете парсер, автоматизируете сбор данных или обходите ограничения по IP — без прокси в PHP не обойтись. В этом руководстве разберём два главных инструмента: встроенный cURL и популярную библиотеку Guzzle HTTP Client — с готовыми примерами кода, которые можно сразу использовать в проекте.

Зачем прокси в PHP-проектах

PHP остаётся одним из самых распространённых языков для серверной автоматизации, и задачи, требующие прокси, встречаются постоянно. Вот основные сценарии, где без прокси не обойтись:

  • Парсинг сайтов и маркетплейсов — Wildberries, Ozon, Авито, AliExpress блокируют IP после нескольких десятков запросов. Прокси позволяют распределять нагрузку между разными адресами и не получать 403/429.
  • Сбор данных с геозависимых ресурсов — цены, выдача поисковиков, контент могут отличаться в зависимости от страны. Прокси с нужной геолокацией решают эту задачу.
  • Обход rate limiting — многие API ограничивают количество запросов с одного IP. Ротация прокси позволяет обходить эти лимиты.
  • Тестирование геозависимого контента — проверить, как выглядит сайт для пользователей из разных стран, не выходя из офиса.
  • Анонимность при автоматизации — скрыть реальный IP сервера при массовых запросах к внешним ресурсам.
  • Мониторинг конкурентов — регулярный сбор цен, ассортимента, акций с сайтов конкурентов без риска попасть в бан.

В PHP для HTTP-запросов чаще всего используют два инструмента: встроенное расширение cURL и библиотеку Guzzle HTTP Client. Оба поддерживают HTTP, HTTPS, SOCKS4 и SOCKS5 прокси — разберём каждый подробно.

Какой тип прокси выбрать для PHP

Перед тем как писать код, важно понять, какой тип прокси подходит для вашей задачи. Разные типы имеют разные характеристики по скорости, надёжности и степени анонимности.

Тип прокси Скорость Анонимность Лучше всего для
Прокси дата-центров Очень высокая Средняя Парсинг без строгих антибот-систем, API-запросы
Резидентные прокси Средняя Высокая Парсинг защищённых сайтов, маркетплейсы, геоданные
Мобильные прокси Средняя Максимальная Сайты с жёсткой антибот-защитой, социальные сети

Для большинства задач парсинга данных с маркетплейсов вроде Wildberries или Ozon оптимальным выбором станут резидентные прокси — их IP принадлежат реальным домашним пользователям, что делает запросы практически неотличимыми от обычного браузерного трафика. Прокси дата-центров подойдут там, где скорость важнее незаметности, а защита слабая.

Все три типа прокси поддерживают протоколы HTTP/HTTPS и SOCKS5, поэтому с точки зрения кода — настройка одинакова. Разница только в строке подключения.

Прокси в cURL: базовая настройка

Расширение cURL доступно в PHP из коробки и является стандартным способом выполнения HTTP-запросов на сервере. Для подключения прокси используются две основные опции: CURLOPT_PROXY и CURLOPT_PROXYTYPE.

HTTP-прокси без аутентификации

<?php

$ch = curl_init();

curl_setopt_array($ch, [
    CURLOPT_URL            => 'https://httpbin.org/ip',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_TIMEOUT        => 30,

    // Указываем адрес прокси
    CURLOPT_PROXY          => '185.199.100.1:8080',

    // Тип прокси: HTTP (по умолчанию)
    CURLOPT_PROXYTYPE      => CURLPROXY_HTTP,
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

echo "HTTP Code: $httpCode\n";
echo $response;

Здесь CURLOPT_PROXY принимает строку в формате host:port. Для HTTPS-трафика через HTTP-прокси cURL автоматически использует метод CONNECT — туннелирование, поэтому содержимое запроса остаётся зашифрованным.

Полезные опции cURL для работы с прокси

Опция Описание
CURLOPT_PROXY Адрес прокси-сервера (host:port)
CURLOPT_PROXYTYPE Тип: CURLPROXY_HTTP, CURLPROXY_SOCKS4, CURLPROXY_SOCKS5
CURLOPT_PROXYUSERPWD Логин и пароль в формате user:password
CURLOPT_HTTPPROXYTUNNEL Включить туннелирование через HTTP CONNECT
CURLOPT_SSL_VERIFYPEER Проверка SSL-сертификата (false — отключить)
CURLOPT_TIMEOUT Таймаут запроса в секундах
CURLOPT_CONNECTTIMEOUT Таймаут подключения к прокси

Аутентификация и SOCKS5 в cURL

Большинство коммерческих прокси требуют аутентификацию по логину и паролю. Также SOCKS5 — предпочтительный протокол, когда нужна полная анонимность, поскольку он не добавляет заголовки вроде X-Forwarded-For, которые могут выдать использование прокси.

HTTP-прокси с логином и паролем

<?php

$proxyHost = '185.199.100.1';
$proxyPort = '8080';
$proxyUser = 'your_login';
$proxyPass = 'your_password';

$ch = curl_init();

curl_setopt_array($ch, [
    CURLOPT_URL            => 'https://httpbin.org/ip',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 30,
    CURLOPT_CONNECTTIMEOUT => 10,

    // Прокси с аутентификацией
    CURLOPT_PROXY          => "$proxyHost:$proxyPort",
    CURLOPT_PROXYTYPE      => CURLPROXY_HTTP,
    CURLOPT_PROXYUSERPWD   => "$proxyUser:$proxyPass",

    // Туннелирование для HTTPS
    CURLOPT_HTTPPROXYTUNNEL => true,

    // Заголовки браузера для маскировки
    CURLOPT_USERAGENT      => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
    CURLOPT_HTTPHEADER     => [
        'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
        'Accept-Language: ru-RU,ru;q=0.9,en;q=0.8',
    ],
]);

$response = curl_exec($ch);

if (curl_errno($ch)) {
    echo 'Ошибка cURL: ' . curl_error($ch);
} else {
    echo $response;
}

curl_close($ch);

SOCKS5-прокси в cURL

<?php

$ch = curl_init();

curl_setopt_array($ch, [
    CURLOPT_URL            => 'https://httpbin.org/ip',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 30,

    CURLOPT_PROXY          => '185.199.100.1:1080',

    // SOCKS5 с разрешением DNS через прокси (рекомендуется!)
    CURLOPT_PROXYTYPE      => CURLPROXY_SOCKS5_HOSTNAME,

    // Аутентификация (если требуется)
    CURLOPT_PROXYUSERPWD   => 'login:password',
]);

$response = curl_exec($ch);
curl_close($ch);

echo $response;

💡 Важно: SOCKS5 vs SOCKS5_HOSTNAME

Используйте CURLPROXY_SOCKS5_HOSTNAME вместо CURLPROXY_SOCKS5. Разница в том, что при SOCKS5_HOSTNAME DNS-запросы тоже проходят через прокси, что предотвращает утечку DNS и повышает анонимность. При обычном SOCKS5 DNS разрешается локально — это может раскрыть ваш реальный IP.

Ротация прокси в cURL

Один прокси быстро попадёт под блокировку при массовых запросах. Правильная стратегия — иметь пул прокси и чередовать их. Вот простая, но рабочая реализация:

<?php

class ProxyRotator
{
    private array $proxies;
    private int $currentIndex = 0;

    public function __construct(array $proxies)
    {
        $this->proxies = $proxies;
        shuffle($this->proxies); // Перемешиваем для случайного порядка
    }

    /**
     * Получить следующий прокси из пула
     */
    public function getNext(): string
    {
        $proxy = $this->proxies[$this->currentIndex];
        $this->currentIndex = ($this->currentIndex + 1) % count($this->proxies);
        return $proxy;
    }

    /**
     * Получить случайный прокси
     */
    public function getRandom(): string
    {
        return $this->proxies[array_rand($this->proxies)];
    }
}

// Список прокси в формате login:password@host:port
$proxyList = [
    'user1:[email protected]:8080',
    'user2:[email protected]:8080',
    'user3:[email protected]:8080',
    'user4:[email protected]:8080',
];

$rotator = new ProxyRotator($proxyList);

/**
 * Функция запроса с автоматическим выбором прокси
 */
function fetchWithProxy(string $url, ProxyRotator $rotator): ?string
{
    $proxyStr = $rotator->getNext();

    // Парсим строку прокси
    preg_match('/^(.+):(.+)@(.+):(\d+)$/', $proxyStr, $m);
    [, $user, $pass, $host, $port] = $m;

    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL            => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT        => 20,
        CURLOPT_CONNECTTIMEOUT => 8,
        CURLOPT_PROXY          => "$host:$port",
        CURLOPT_PROXYTYPE      => CURLPROXY_HTTP,
        CURLOPT_PROXYUSERPWD   => "$user:$pass",
        CURLOPT_USERAGENT      => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)',
        CURLOPT_SSL_VERIFYPEER => false,
    ]);

    $response = curl_exec($ch);
    $error    = curl_error($ch);
    curl_close($ch);

    if ($error) {
        error_log("Прокси $host:$port недоступен: $error");
        return null;
    }

    return $response;
}

// Пример: парсим 10 страниц с ротацией прокси
$urls = [
    'https://example.com/page/1',
    'https://example.com/page/2',
    'https://example.com/page/3',
    // ...
];

foreach ($urls as $url) {
    $html = fetchWithProxy($url, $rotator);
    if ($html) {
        echo "Получено: " . strlen($html) . " байт\n";
    }
    usleep(500000); // Пауза 0.5 сек между запросами
}

Обратите внимание на usleep(500000) — пауза между запросами критически важна. Даже с ротацией прокси слишком частые запросы могут привести к блокировке по поведенческим паттернам. Рекомендуемый интервал — от 500 мс до 2 секунд в зависимости от сайта.

Прокси в Guzzle HTTP Client: базовая настройка

Guzzle — это мощная PHP-библиотека для HTTP-запросов, которая используется в большинстве современных PHP-фреймворков (Laravel, Symfony). Она предоставляет более удобный и читаемый API по сравнению с голым cURL, поддерживает асинхронные запросы, middleware и удобную обработку ошибок.

Установка через Composer

composer require guzzlehttp/guzzle

HTTP-прокси без аутентификации

<?php

require 'vendor/autoload.php';

use GuzzleHttp\Client;

$client = new Client([
    // Базовый URL (опционально)
    'base_uri' => 'https://httpbin.org',

    // Настройки по умолчанию для всех запросов
    'timeout'  => 30,
    'connect_timeout' => 10,

    // Прокси для всех запросов клиента
    'proxy' => 'http://185.199.100.1:8080',
]);

$response = $client->get('/ip');

echo $response->getStatusCode() . "\n";  // 200
echo $response->getBody() . "\n";        // {"origin": "185.199.100.1"}

В Guzzle прокси задаётся через опцию proxy в формате URL. Это более интуитивно, чем в cURL. Прокси можно задать как на уровне клиента (для всех запросов), так и для каждого запроса отдельно.

HTTP-прокси с аутентификацией

<?php

use GuzzleHttp\Client;

$login    = 'your_login';
$password = 'your_password';
$host     = '185.199.100.1';
$port     = '8080';

$client = new Client([
    'timeout' => 30,
]);

// Прокси с аутентификацией передаётся в URL-формате
$response = $client->get('https://httpbin.org/ip', [
    'proxy' => "http://$login:$password@$host:$port",
    'headers' => [
        'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
        'Accept'     => 'text/html,application/xhtml+xml,application/xml;q=0.9',
    ],
]);

echo $response->getBody();

Формат прокси-URL в Guzzle: scheme://user:password@host:port. Для HTTP-прокси используем http://, для SOCKS5 — socks5://.

Продвинутая работа с Guzzle: таймауты, заголовки, SOCKS5

Рассмотрим более сложные сценарии: разные прокси для HTTP и HTTPS, SOCKS5, отключение проверки SSL и настройка заголовков для имитации браузера.

Разные прокси для HTTP и HTTPS

<?php

use GuzzleHttp\Client;

$client = new Client([
    'timeout' => 30,
    'proxy'   => [
        // Прокси для HTTP-запросов
        'http'  => 'http://login:[email protected]:8080',
        // Прокси для HTTPS-запросов
        'https' => 'http://login:[email protected]:8080',
        // Исключения — эти хосты идут без прокси
        'no'    => ['localhost', '127.0.0.1', '.internal.corp'],
    ],
]);

SOCKS5 в Guzzle

<?php

use GuzzleHttp\Client;

// Для SOCKS5 в Guzzle нужен дополнительный пакет
// composer require clue/socks-react (или используйте curl handler)

$client = new Client([
    'timeout' => 30,
    'proxy'   => 'socks5://login:[email protected]:1080',
    'curl'    => [
        CURLOPT_PROXYTYPE => CURLPROXY_SOCKS5_HOSTNAME,
    ],
]);

$response = $client->get('https://httpbin.org/ip');
echo $response->getBody();

Полная конфигурация с заголовками браузера

<?php

use GuzzleHttp\Client;
use GuzzleHttp\RequestOptions;

$client = new Client([
    'timeout'         => 30,
    'connect_timeout' => 10,
    'verify'          => false, // Отключить проверку SSL (для отладки)
    'allow_redirects' => [
        'max'       => 5,
        'strict'    => false,
        'referer'   => true,
        'protocols' => ['http', 'https'],
    ],
    'headers' => [
        'User-Agent'      => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
        'Accept'          => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
        'Accept-Language' => 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
        'Accept-Encoding' => 'gzip, deflate, br',
        'Cache-Control'   => 'no-cache',
        'Connection'      => 'keep-alive',
    ],
]);

$response = $client->get('https://example.com/catalog', [
    'proxy' => 'http://login:[email protected]:8080',
]);

$statusCode = $response->getStatusCode();
$body       = (string) $response->getBody();

echo "Статус: $statusCode, Размер: " . strlen($body) . " байт\n";

⚠️ Про verify => false

Отключение проверки SSL ('verify' => false) допустимо только при отладке или работе с внутренними сервисами. В продакшн-коде всегда оставляйте проверку SSL включённой, иначе вы уязвимы для атак типа man-in-the-middle.

Ротация прокси в Guzzle

В Guzzle ротацию удобно реализовать через middleware — промежуточный слой, который перехватывает каждый запрос и добавляет к нему прокси. Это элегантнее, чем передавать прокси вручную в каждый вызов.

<?php

use GuzzleHttp\Client;
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Middleware;
use Psr\Http\Message\RequestInterface;

/**
 * Middleware для автоматической ротации прокси
 */
function proxyRotationMiddleware(array $proxies): callable
{
    $index = 0;
    $total = count($proxies);

    return Middleware::mapRequest(
        function (RequestInterface $request) use ($proxies, &$index, $total) {
            $proxy = $proxies[$index % $total];
            $index++;

            // Добавляем прокси в атрибуты запроса
            // (передаём через options в handler)
            return $request->withHeader('X-Selected-Proxy', $proxy);
        }
    );
}

// Список прокси
$proxies = [
    'http://user1:[email protected]:8080',
    'http://user2:[email protected]:8080',
    'http://user3:[email protected]:8080',
];

// Простой вариант: класс-обёртка над Guzzle с ротацией
class GuzzleWithRotation
{
    private Client $client;
    private array $proxies;
    private int $index = 0;

    public function __construct(array $proxies, array $clientConfig = [])
    {
        $this->proxies = $proxies;
        $this->client  = new Client($clientConfig);
    }

    public function get(string $url, array $options = []): \GuzzleHttp\Psr7\Response
    {
        $options['proxy'] = $this->proxies[$this->index % count($this->proxies)];
        $this->index++;

        return $this->client->get($url, $options);
    }

    public function post(string $url, array $options = []): \GuzzleHttp\Psr7\Response
    {
        $options['proxy'] = $this->proxies[$this->index % count($this->proxies)];
        $this->index++;

        return $this->client->post($url, $options);
    }
}

// Использование
$guzzle = new GuzzleWithRotation($proxies, [
    'timeout' => 30,
    'headers' => [
        'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)',
    ],
]);

$urls = [
    'https://example.com/product/1',
    'https://example.com/product/2',
    'https://example.com/product/3',
];

foreach ($urls as $url) {
    try {
        $response = $guzzle->get($url);
        echo "OK [{$response->getStatusCode()}]: $url\n";
        sleep(1);
    } catch (\Exception $e) {
        echo "Ошибка: " . $e->getMessage() . "\n";
    }
}

Обработка ошибок и отладка

При работе с прокси ошибки неизбежны: прокси может быть недоступен, медленно отвечать, или целевой сайт может вернуть ошибку. Важно грамотно обрабатывать все эти ситуации.

Обработка ошибок в cURL

<?php

function fetchWithErrorHandling(string $url, string $proxy): array
{
    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL            => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT        => 20,
        CURLOPT_CONNECTTIMEOUT => 8,
        CURLOPT_PROXY          => $proxy,
        CURLOPT_PROXYTYPE      => CURLPROXY_HTTP,
    ]);

    $body     = curl_exec($ch);
    $errno    = curl_errno($ch);
    $error    = curl_error($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $totalTime = curl_getinfo($ch, CURLINFO_TOTAL_TIME);
    curl_close($ch);

    // Коды ошибок cURL для прокси
    $proxyErrors = [
        CURLE_COULDNT_CONNECT    => 'Не удалось подключиться к прокси',
        CURLE_OPERATION_TIMEDOUT => 'Таймаут подключения к прокси',
        CURLE_RECV_ERROR         => 'Ошибка получения данных',
        CURLE_SSL_CONNECT_ERROR  => 'Ошибка SSL через прокси',
    ];

    if ($errno) {
        $message = $proxyErrors[$errno] ?? "cURL ошибка #$errno: $error";
        return ['success' => false, 'error' => $message, 'code' => $errno];
    }

    if ($httpCode >= 400) {
        return ['success' => false, 'error' => "HTTP $httpCode", 'code' => $httpCode];
    }

    return [
        'success' => true,
        'body'    => $body,
        'code'    => $httpCode,
        'time'    => round($totalTime, 3),
    ];
}

// Использование с повторными попытками
function fetchWithRetry(string $url, array $proxies, int $maxRetries = 3): ?string
{
    foreach ($proxies as $proxy) {
        for ($attempt = 1; $attempt <= $maxRetries; $attempt++) {
            $result = fetchWithErrorHandling($url, $proxy);

            if ($result['success']) {
                echo "Успех через $proxy (попытка $attempt, {$result['time']}с)\n";
                return $result['body'];
            }

            echo "Ошибка через $proxy: {$result['error']}\n";

            if ($attempt < $maxRetries) {
                sleep(2); // Пауза перед повтором
            }
        }
    }

    return null; // Все прокси не сработали
}

Обработка ошибок в Guzzle

<?php

use GuzzleHttp\Client;
use GuzzleHttp\Exception\ConnectException;
use GuzzleHttp\Exception\RequestException;
use GuzzleHttp\Exception\ServerException;
use GuzzleHttp\Exception\ClientException;

$client = new Client(['timeout' => 30]);

$proxies = [
    'http://user1:[email protected]:8080',
    'http://user2:[email protected]:8080',
];

function fetchGuzzleWithFallback(Client $client, string $url, array $proxies): ?string
{
    foreach ($proxies as $proxy) {
        try {
            $response = $client->get($url, [
                'proxy'   => $proxy,
                'timeout' => 20,
            ]);

            return (string) $response->getBody();

        } catch (ConnectException $e) {
            // Прокси недоступен или таймаут подключения
            echo "Прокси недоступен ($proxy): " . $e->getMessage() . "\n";

        } catch (ClientException $e) {
            // HTTP 4xx — ошибка клиента (403, 404, 429)
            $code = $e->getResponse()->getStatusCode();
            echo "HTTP $code для $url через $proxy\n";

            if ($code === 429) {
                echo "Rate limit — пауза 5 секунд\n";
                sleep(5);
            }

        } catch (ServerException $e) {
            // HTTP 5xx — ошибка сервера
            echo "Ошибка сервера: " . $e->getResponse()->getStatusCode() . "\n";

        } catch (RequestException $e) {
            // Другие ошибки запроса
            echo "Ошибка запроса: " . $e->getMessage() . "\n";
        }
    }

    return null;
}

cURL vs Guzzle: что выбрать

Оба инструмента отлично работают с прокси, но имеют разные сильные стороны. Вот сравнение по ключевым критериям:

Критерий cURL Guzzle
Установка ✅ Встроен в PHP ⚠️ Нужен Composer
Читаемость кода ⚠️ Много опций, многословно ✅ Чистый, удобный API
Производительность ✅ Чуть быстрее (нет оберток) ✅ Сравнима, есть async
Асинхронные запросы ⚠️ curl_multi (сложно) ✅ Встроенная поддержка
Middleware / хуки ❌ Нет ✅ HandlerStack, Middleware
SOCKS5 поддержка ✅ Нативная ✅ Через curl handler
Обработка ошибок ⚠️ Коды ошибок вручную ✅ Исключения с типами
Интеграция в Laravel/Symfony ⚠️ Вручную ✅ Нативная поддержка
Подходит для Простые скрипты, без зависимостей Проекты на фреймворках, сложная логика

Рекомендация: Если вы пишете простой скрипт или работаете на хостинге без Composer — используйте cURL. Для проектов на Laravel, Symfony или любых современных PHP-приложениях — Guzzle будет значительно удобнее и даст больше возможностей для масштабирования.

🚀 Быстрый чек-лист перед запуском

  • ✅ Проверьте, что прокси работает: curl -x http://login:pass@host:port https://httpbin.org/ip
  • ✅ Установите таймауты: timeout и connect_timeout
  • ✅ Добавьте реалистичный User-Agent
  • ✅ Реализуйте паузы между запросами (минимум 500 мс)
  • ✅ Предусмотрите обработку ошибок и fallback на другой прокси
  • ✅ Для SOCKS5 используйте CURLPROXY_SOCKS5_HOSTNAME (не SOCKS5)
  • ✅ Не отключайте verify SSL в продакшне

Заключение

Настройка прокси в PHP — задача несложная, если знать правильные опции и форматы. Для базовых задач достаточно cURL с CURLOPT_PROXY и CURLOPT_PROXYUSERPWD. Для проектов на фреймворках Guzzle предоставляет более удобный API, типизированные исключения и поддержку middleware для ротации прокси.

Ключевые принципы для надёжной работы: используйте SOCKS5 с разрешением DNS через прокси (CURLPROXY_SOCKS5_HOSTNAME), всегда устанавливайте таймауты, добавляйте паузы между запросами и реализуйте ротацию прокси для масштабных задач. Обработка ошибок с fallback на другой прокси — обязательный элемент любого продакшн-кода.

🎁 Бонус новым пользователям

+30% к первому пополнению

Резидентные, мобильные и датацентр-прокси для скрапинга, мультиаккаунтинга и обхода блокировок. Трафик не сгорает: платите за GB — остаток живёт без срока.

Создать аккаунт +30% при пополнении от $5 (до +$10). Начисляется автоматически после регистрации, действует 7 дней.