Использование прокси-сервера в зависимости от URL в PAC (Proxy Auto-Configuration) скрипте может быть действительно сложной задачей из-за различных особенностей работы браузеров и ограничения настроек. Вот несколько рекомендаций и идей, которые могут помочь вам решить эту проблему:
1. **Использование `shExpMatch` и `dnsDomainIs`**: Убедитесь, что правильно используете функции PAC для проверки как доменных имен, так и URL. Например:
```javascript
function FindProxyForURL(url, host) {
if (shExpMatch(url, "https://specific.domain/*")) {
return "PROXY my.proxy.server:8080";
}
return "DIRECT";
}
```
2. **Сокращение проблем с HTTPS**: Если вы работаете с HTTPS и столкнулись с проблемами незначительных частей URL, постарайтесь использовать другие функции, такие как `dnsDomainIs`, которые могут помочь с доменной частью, хотя это не всегда решает проблему.
3. **Фильтрация по параметрам URL**: Если в вашем случае значения query параметров важны, их можно обрабатывать, но в этом случае нужно учитывать ограничения, согласно которым браузеры могут не передавать часть URL. Например:
```javascript
function FindProxyForURL(url, host) {
if (shExpMatch(url, "*?param=value*")) {
return "PROXY my.proxy.server:8080";
}
return "DIRECT";
}
```
4. **Использование нескольких прокси**: Если вас интересует некое ограниченное число URL, подумайте над созданием нескольких правил для разных прокси, если это возможно.
5. **Имейте в виду особенности браузеров**: Как вы указали, Chrome и Firefox по-разному обрабатывают PAC-скрипты и пути URL. Возможно, стоит протестировать код на обоих браузерах и выяснить, как он обрабатывается, чтобы найти лучшие решения.
6. **JavaScript решение**: Если ваши условия и ограничения позволяют использовать JS, можно обрабатывать запросы через собственный серверный слой, который будет принимать запросы и перенаправлять их на прокси в нужных случаях. Это может быть сложнее в реализации, но даст вам полное управление над тем, что отправляется через прокси.
7. **мониторинг и логирование**: Возможно, стоит добавить дополнительное логирование для ваших запросов, чтобы лучше понять, какие из них проходят через прокси и где происходят ошибки.
8. **Обсуждения сообществ**: Если у вас остаются вопросы, рекомендуется обращаться к сообществам разработчиков, где могут быть полезные рекомендации от тех, кто сталкивался с аналогичными проблемами.
Также возьмите во внимание, что существует множество специфических факторов, которые могут повлиять на ваше решение (например, наличие корпоративного firewall или NAT), и в конечном итоге лучше всего испытать ваши предложения на практике.