Lua-CURLv3 принимает параметры libcurl в таблице, используемой для создания easy handle. Поместите прокси туда:

local cURL = require "cURL"
local transfer = cURL.easy {
  url = "https://www.example.com/file.bin",
  proxy = "http://proxy.example:8080",
  writefunction = output,
}

local ok, failure = pcall(function()
  transfer:perform()
end)
transfer:close()
if not ok then error(failure) end

Этот фрагмент предполагает, что output — это доступный для записи файл, открытый в двоичном режиме и принадлежащий вызывающему. Вызывающий закрывает его после операции. Защищённый вызов гарантирует, что easy handle будет закрыт, когда perform вызовет ошибку.

URL по-прежнему идентифицирует файл. Параметр прокси выбирает посредника, а libcurl обрабатывает поддерживаемый туннель HTTP для назначения HTTPS. Для разрешённого скачивания публичного файла без учётной записи прокси возьмите конечную точку HTTP из записи в списке HTTP-прокси. Вручную переписывать URL файла в URL прокси не нужно.

Явный параметр также делает источник конфигурации понятным. Обработка окружения прокси в libcurl — это другой вход; настройка прокси операционной системы браузера не является универсальным значением, которое каждая сетевая библиотека Lua получает автоматически.

Если запрос должен следовать управляемой автоматической политике, организуйте поддерживаемое обнаружение и передайте выбранный маршрут клиенту. Таблица параметров easy предоставляет фиксированный маршрут для этой передачи.

Похожие статьи