.pac file es solo un script emca, también conocido como JavaScript. Consulte the wikipedia article en el formato de archivo.
Si copia el código PAC, puede procesarlo para ver qué proxy se está utilizando en función de la URL de destino. Si se siente elegante, puede envolver el guión en una página web (localmente) para crear una herramienta para evaluar localmente.
Editar:
Como alternativa al método empecé a recomendar, debes revisar PACTester, disponible en Google Code. Esto le permitirá probar rápidamente una gama de opciones.
Si tiene .Net disponible y está interesado en jugar con C#, puede consultar this article on MSDN que tiene un código que puede usar de manera similar a la anterior.
Para ampliar el método original descrito anteriormente, hay una serie de funciones que pueden (y suelen ser) proporcionadas por el navegador del host. La función básica que debe implementarse en un archivo pac
es FindProxyForUrl()
. Esto acepta dos parámetros: la url y el host (el host se deriva del nombre de url). Las funciones "proporcionadas" incluyen: isInNet()
, localHostOrDomainIs()
, isPlainHostName()
, isResolvable()
, etc.
Si está trabajando en un entorno Microsoft continuación puedes leer la this page on Technet que describe el formato .PAC con algunos ejemplos útiles.
por la documentación de Microsoft para isInNet()
:
La función devuelve isInNet(host, pattern, mask)
TRUE
si la dirección IP del host coincide con la pattern
especificado. El mask
indica qué parte de la dirección IP debe coincidir (255 = coincidencia, 0 = ignorar).
Si desea obtener información técnica, aquí está the Mozilla source code para la implementación de los servicios relacionados con proxy auto-config. En él se especifica el código JS para isInNet()
como:
200 function isInNet(ipaddr, pattern, maskstr) {
201 var test = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/(ipaddr);
202 if (test == null) {
203 ipaddr = dnsResolve(ipaddr);
204 if (ipaddr == null)
205 return false;
206 } else if (test[1] > 255 || test[2] > 255 ||
207 test[3] > 255 || test[4] > 255) {
208 return false; // not an IP address
209 }
210 var host = convert_addr(ipaddr);
211 var pat = convert_addr(pattern);
212 var mask = convert_addr(maskstr);
213 return ((host & mask) == (pat & mask));
214
215 }
Espero que ayude!
¿esto funcionó para usted? –
Perdón por no ser más claro. No funcionó porque los errores de javascript isInNet no están definidos. – KirdApe
Solo una nota, tuve que buscar el servidor proxy desde el archivo pac, y esta herramienta: http://code.google.com/p/pacparser/ funcionó bien. – Ayusman