Вы когда-нибудь хотели сопоставить порт с другим портом? Это очень распространенная проблема, если вы используете туннельный прокси через SSH. Мой Фринд представил этот код C для этого.

Во-первых, здесь мы видим GitHub, а здесь — их веб-сайт. Это определение Polipo согласно их веб-сайту:

Polipo — небольшой и быстрый кеширующий веб-прокси (веб-кеш, HTTP-прокси, прокси-сервер). Хотя Polipo был разработан для использования одним человеком или небольшой группой людей, ничто не мешает его использованию более крупной группой.

У Polipo есть некоторые особенности, которые, насколько я знаю, уникальны среди доступных на данный момент прокси:

  • Polipo будет использовать конвейерную обработку HTTP/1.1, если полагает, что удаленный сервер поддерживает ее, независимо от того, являются ли входящие запросы конвейерными или поступают одновременно по нескольким соединениям (это больше, чем простое использование постоянных соединений, которое выполняется например кальмар);
  • Polipo кэширует начальный сегмент экземпляра, если загрузка прервалась, и, при необходимости, завершает его позже с помощью запросов Range;
  • Polipo будет обновлять клиентские запросы до HTTP/1.1, даже если они поступают как HTTP/1.0, и повышать или понижать ответы сервера в зависимости от возможностей клиента (это может включать преобразование в HTTP/1.1 кодирование по частям или обратно);
  • Polipo имеет полную поддержку IPv6 (за исключением адресов с ограниченной областью (link-local)).
  • Polipo может дополнительно использовать технику, известную как мультиплексирование бедняков, чтобы еще больше сократить задержку.

Короче говоря, Polipo использует множество методов, чтобы сделать просмотр веб-страниц (кажущимся) более быстрым.

Я использовал это для сопоставления порта с моим HTTP и совместного использования его в сети, чтобы другие могли получить доступ к бесплатному Интернету. Вот мой простой код для этого:

# В этом файле нужно только перечислить переменные конфигурации, которые отличаются
# от значений по умолчанию. См. /usr/share/doc/polipo/examples/config.sample
# и «polipo -v» для переменных, которые вы можете настроить, и дополнительной информации.

logSyslog = true
logFile = /var/log/polipo/polipo.log
socksParentProxy = localhost:8090
proxyAddress = «0.0.0.0»

Я полагаю, что этот фрагмент кода можно использовать для всего отображения, мультиплексирования и т. д.