Меню документации

Как считается трафик с оплатой за ГБ

В прокси с оплатой за ГБ (PPG) оплачивается трафик между вашим клиентом и хабом Litport. На этой странице описано, что учитывается, что происходит при раннем отключении и как сократить оплачиваемый трафик. Страница относится к TCP-соединениям через HTTP CONNECT и SOCKS5 без режима кеша.

Что считается трафиком#

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

Часть соединения Учитывается
Рукопожатие прокси: запрос и ответ CONNECT или согласование SOCKS5 Да
TLS-рукопожатие и накладные расходы на TLS-записи, включая TLS до самого прокси Да
Ваш запрос, включая тело с отправляемыми данными Да
Ответ Да, в том объёме, который хаб успел отправить вам

Оплачивается ли отправка данных (upload)?#

Да. Отправка (upload) и получение (download) оплачиваются одинаково, байт за байтом.

Оплачиваются ли накладные расходы TLS?#

Да. TLS-рукопожатие и обрамление записей — это байты, прошедшие через хаб. См. во что обходится прокси https://.

Есть ли минимум на запрос?#

Нет. Трафик оплачивается в точных байтах по токену и часу, без минимума на запрос и без округления вверх.

Что с режимом кеша?#

Когда режим кеша включён, хаб сам читает ваши HTTPS-запросы. Попадания в кеш бесплатны; промахи и обходы кеша оплачиваются, как описано в разделе Параметры кеша и устранение неполадок. Остальная часть страницы относится к трафику без режима кеша.

Оплачивается ли запрос, который я отменил?#

Вы платите за то, что было передано до вашего отключения, а не за весь ответ. Когда клиент закрывает соединение, хаб завершает туннель и закрывает своё соединение с апстримом. Байты, которые хаб уже отправил в вашу сторону, всё равно учитываются, даже если клиент их так и не прочитал: к моменту закрытия они были в пути или в буферах.

Раннее отключение даёт наибольшую экономию на больших ответах и более медленных соединениях. На быстром соединении значительная часть небольшого ответа может быть уже в пути к моменту отключения.

Результаты измерений#

Мы тестировали через один хаб, с HTTP CONNECT, SOCKS5 и TLS до прокси, на двух резидентских пулах и одном серверном пуле. Значения — медианы на запрос, включая неудавшиеся запросы. Ваши значения зависят от размера ответа, скорости и вашего клиента.

Что делал клиент Запросов Оплачено, медиана на запрос
Прочитал тело целиком, 220 КБ 290 230 КБ; 235 КБ при TLS до прокси
Отключился примерно после 50 КБ тела размером 220 КБ, резидентские пулы 1,160 86–95 КБ
То же с медленным телом (220 КБ передавались за 5 секунд) 1,100 56 КБ
Отключился примерно после 50 КБ тела размером 2 МБ или 5 МБ, резидентские пулы 200 76–85 КБ
Отключился примерно после 50 КБ тела размером 220 КБ, серверный пул 30 192 КБ
Перестал читать примерно после 50 КБ, но держал соединение открытым 20 секунд 30 230 КБ
Отключился через 3 секунды после отправки запроса, ответ на который приходил через 10 секунд 630 5.8–5.9 КБ
Отключился сразу после TLS-рукопожатия 600 5.8 КБ

Как сократить оплачиваемый трафик#

  1. Отключайтесь, как только получили нужное. Считайте полученные байты, а не размер после распаковки.
  2. Закрывайте соединение с прокси. Если просто перестать читать данные в приложении, передача и оплата не прекращаются; см. результаты выше.
  3. Не возвращайте досрочно прерванное соединение в пул keep-alive.
  4. Если вы отключаетесь до получения какого-либо ответа, вы платите примерно за рукопожатие и запрос, как в тесте с задержкой ответа выше. Ответ, который уже в пути к моменту отключения, учитывается. Litport не может сообщить, получил или обработал ли сайт запрос, который ещё находился в пути.
  5. В браузере отмена запроса может оставлять соединение с прокси открытым. Прежде чем на это полагаться, измерьте оплачиваемый трафик в своей конфигурации.
  6. Отдавайте повторяющиеся статические файлы из кеша статических ответов и блокируйте ненужные изображения, медиа и шрифты.
  7. Проверяйте результат по каждому токену в разделе «Статистика трафика».

Пример на Node.js#

Этот код закрывает туннель, как только получено 50 КБ ответа. В наших тестах это оплачивалось около 94 КБ, а чтение всего ответа — около 230 КБ. 94 КБ больше 50 КБ, потому что в эту сумму входят ещё TLS-рукопожатие, запрос и заголовки (около 7 КБ), а также данные, которые уже были в пути к моменту закрытия туннеля.

import https from 'node:https'
import { HttpsProxyAgent } from 'https-proxy-agent'

const agent = new HttpsProxyAgent('http://USERNAME:[email protected]:1337')

const req = https.get('https://example.com/page', { agent }, (res) => {
  let received = 0
  res.on('data', (chunk) => {
    received += chunk.length
    if (received >= 50_000) req.destroy() // closes the tunnel; counting stops here
  })
})
req.on('error', () => {})