Настройка прокси с использованием PAC для перехода на DIRECT, когда прокси-сервер недоступен.

Вопрос или проблема

У меня есть следующий .pac файл:

function FindProxyForURL(url, host)
{
    return "PROXY proxy.example.com:8080; DIRECT;";
}

Я использую FoxyProxy с Firefox 13, и я ожидал, что он будет использовать DIRECT, если данный прокси недоступен. Вместо этого я получаю сообщение Firefox настроен на использование прокси-сервера, который не может быть найден. Мои ожидания неуместны? Есть ли способ заставить его работать так, как мне хотелось бы?

Вы должны явно указать использовать DIRECT.

Лучший способ контролировать это — определить, в какой сети вы находитесь. Вот пример proxy.pac, который немного сложнее:

function FindProxyForURL(url, host) {
    // Переменные
    var proxy_LAN1 = "PROXY 10.61.9.200:8080; DIRECT;"; 
    var LAN1_addr_ip4 = "10.97.100.0"; 
    var LAN1_addr_ip6 = "fe80::b892:6a74:9635:*"; // Необходимо для FF/TB (Mozilla)
    var proxy_no = "DIRECT";
    var alert_done = 99;

    //alert("Мой адрес: " + myIpAddress() + "\nURL: " + url + "\nХост: " + host);

    // Если адрес локальный, всегда используйте прямое подключение
    if( isPlainHostName(host) ) {
        //alert("Локальный адрес, поэтому без прокси");
        return proxy_no;
    }

    // Прокси, если ПК находится в LAN1
    if (isInNet(myIpAddress(), LAN1_addr_ip4, "255.255.255.0") || shExpMatch(myIpAddress(), LAN1_addr_ip6) ) {
        //alert("Адрес LAN1 & прокси");
        return proxy_LAN1;
    }

    // По умолчанию — прямое подключение
    // alert("Прокси по умолчанию (нет)");
    return proxy_no;
}

/*
ЗАМЕТКИ:
    Используйте alert("xxx"), чтобы узнать, что происходит. IE отображает всплывающее окно, FF/TB используют консоль ошибок
    Можно использовать несколько прокси. Разделяйте их ;
    Для локальных pac файлов IE требует "file://c:\proxy.pac", FF/TB требуется file:///c:\proxy.pac" (дополнительный /)
    FF/TB - myIpAddress() возвращает IPv6 вместо IPv4 адреса для Vista и Win7, поэтому isInNet() не работает!
FUNCTIONS:
    alert(text)
    isPlainHostName(host)
    shExpMatch(lookup, match)
    isInNet(address, lookup.address, netmask)
    myIpAddress()
    dnsDomainIs(host, ".foobar")
ПРИМЕРЫ:
    if (shExpMatch(url, "http://192.168.1.100*")) { return proxy_no; }
    if (isInNet(myIpAddress(), "192.168.1.0", "255.255.255.0"))
*/

Как видите, это пытается определить, находимся ли мы в определенной сети, и устанавливает прокси только если это так.

Согласно документации MDN, кажется, что ваши ожидания оправданы. Я думаю, проблема может быть в завершающей точке с запятой в возвращаемой строке. Попробуйте вместо этого

function FindProxyForURL(url, host)
{
    return "PROXY proxy.example.com:8080; DIRECT";
}

Все примеры на MDN используют точку с запятой в качестве разделителя, без завершающей точки с запятой на последнем элементе.

PROXY w3proxy.netscape.com:8080; PROXY mozilla.netscape.com:8081; DIRECT

То же самое, что и выше, но если оба прокси выйдут из строя, автоматически начните устанавливать прямые соединения. (В первом примере выше Netscape будет запрашивать подтверждение пользователя для установления прямых соединений; в этом случае вмешательство пользователя не требуется.)

Попробуйте и дайте нам знать, как это сработало.

Ответ или решение

Конфигурирование настроек прокси с использованием PAC для автоматического переключения на DIRECT при недоступности прокси-сервера

В условиях растущей зависимости от сетевых технологий, правильная настройка параметров прокси-сервера становится критически важной для обеспечения стабильного доступа к интернет-ресурсам. В вашем вопросе вы указали на проблему, связанную с конфигурацией Proxy Auto-Configuration (PAC) файла, который не обеспечивает должного переключения на прямое соединение (DIRECT) при недоступности прокси-сервера. Рассмотрим некоторые ключевые аспекты и рекомендации по данной проблеме.

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

Ваш исходный .pac файл имеет следующую структуру:

function FindProxyForURL(url, host) {
    return "PROXY proxy.example.com:8080; DIRECT;";
}

Как вы уже заметили, при использовании этого файла в Firefox 13 вы получаете сообщение об ошибке: "Firefox настроен на использование прокси-сервера, который не может быть найден". Это указывает на то, что браузер не может переключиться на режим отсутствия прокси (DIRECT), когда указанный прокси-сервер недоступен.

Возможные причины ошибки

  1. Точка с запятой: Одна из распространенных причин, по которой Firefox не может переключиться на режим DIRECT, заключается в наличии завершающей точки с запятой после параметра DIRECT. По стандартам написания PAC файлов, эта точка с запятой не требуется. Приведите строку к следующему виду:

    return "PROXY proxy.example.com:8080; DIRECT";
  2. Проверка доступности прокси: Некоторые конфигурации могут не обеспечивать автоматическое обнаружение недоступности прокси-сервера. Необходимо рассмотреть более сложные условия для проверки состояния сети.

Пример улучшенного PAC файла

Ниже пример более сложного PAC файла, который позволяет проверять наличие определенного сетевого подключения перед выбором прокси. Это может помочь наладить корректную работу на локальных сетях, а также обеспечить автоматическое переключение на режим DIRECT, если прокси-сервер недоступен.

function FindProxyForURL(url, host) {
    // Конфигурация прокси
    var proxy_LAN1 = "PROXY 10.61.9.200:8080; DIRECT";
    var LAN1_addr_ip4 = "10.97.100.0"; 
    var LAN1_addr_ip6 = "fe80::b892:6a74:9635:"; 

    // Прямое подключение по умолчанию
    var proxy_no = "DIRECT";

    // Проверка на локальное имя
    if (isPlainHostName(host)) {
        return proxy_no;
    }

    // Проверка наличия локального подключения
    if (isInNet(myIpAddress(), LAN1_addr_ip4, "255.255.255.0") || shExpMatch(myIpAddress(), LAN1_addr_ip6)) {
        return proxy_LAN1;
    }

    // Возврат к прямому подключению, если прокси не доступен
    return proxy_no;
}

Заключение

Следуя вышеперечисленным рекомендациям — особенно исключая завершающую точку с запятой после параметра DIRECT и добавляя дополнительные условия для проверки состояния сети — вы повысите вероятность успешного переключения на режим прямого подключения в случае недоступности прокси-сервера. Если вы все еще сталкиваетесь с проблемами, возможно, стоит проверить настройки сетевой инфраструктуры и сам прокси-сервер на предмет корректной работы.

Эти изменения не только устранит текущую проблему, но и сделают ваш PAC файл более устойчивым к изменениям в сетевой среде. Не забывайте о необходимости проверки работы настроек на реальных сценариях, чтобы убедиться в их эффективности и надежности.

Оцените материал
Добавить комментарий

Капча загружается...