В приложении, которое уже использует Azure IoT Python SDK, выбирайте транспорт MQTT и его параметры прокси вместе. Эта конфигурация выбирает MQTT через WebSockets:

proxy = ProxyOptions(proxy_type='HTTP',
                     proxy_addr='203.0.113.10', proxy_port=8080)
client = IoTHubDeviceClient.create_from_connection_string(
    connection_string, websockets=True, proxy_options=proxy
)

Классы взяты из документированного интерфейса SDK. Передайте строку подключения устройства через секретную конфигурацию приложения и замените пример конечной точки прокси. Для публично доступной конечной точки IoT Hub, где разрешены публичные посредники, список HTTP-прокси предлагает кандидатов для узла и порта HTTP; убедитесь, что служба разрешает маршрут к месту назначения. Это явные параметры SDK; работающий в браузере прокси или общая настройка операционной системы не задаёт маршрут клиента устройства.

Обратитесь к справочнику ProxyOptions для выбранного типа прокси. Он различает поля HTTP, SOCKS4 и SOCKS5 и описывает зависящее от типа поведение имени пользователя и пароля, включая ограничения для HTTP. Наличие поля не гарантирует все механизмы аутентификации.

Учётная запись прокси и идентификатор устройства авторизуют разные этапы. Отклонённый обмен через посредника может остановить соединение до того, как брокер оценит учётные данные устройства. Выбор WebSockets также оставляет в силе ограничения прокси на назначение и доступ.

Запишите выбранный транспорт, назначение и первый неудачный этап. Клиент SDK, реализация прокси и разрешённый маршрут должны совпадать; ни успешный запрос браузера, ни общее утверждение, что SOCKS передаёт любой протокол, не обеспечивают такой совместимости.

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