Firefox
Used by: Firefox, Thunderbird, Tor Browser.
Helper library
The checker runs this engine's own PAC helper library, copied verbatim at 3f73c528a1ae (MPL-2.0).
Upstream source.
Version ranges and quirks
Firefox
| Behaviour | Value | Source |
|---|---|---|
| alert() output | console | code, verified 2026-10-04 |
| Non-ASCII result rejected | false | code, verified 2026-10-04 |
| DNS lookups | sync | code, verified 2026-10-04 |
| dnsResolve is IPv4 only | false | expert, unverified |
| JavaScript level accepted | latest | code, verified 2026-10-04 |
| Calls FindProxyForURLEx if defined | false | code, verified 2026-10-04 |
| Microsoft *Ex functions | false | code, verified 2026-10-04 |
| Global variables persist between calls | true | expert, unverified |
| Host lower-cased by the engine | true | expert, unverified |
| myIpAddress() source | routing_ipv4 | code, verified 2026-10-04 |
| Native (C++) bindings | dnsResolve, myIpAddress, alert | code, verified 2026-10-04 |
| On exception | direct | code, verified 2026-10-04 |
| On non-string / undefined result | direct | code, verified 2026-10-04 |
| URL passed to FindProxyForURL | all_path_query | code, verified 2026-10-04 |
Function availability
| Function | chromium | chromium | firefox | pacparser | pacparser | pacparser | reference |
|---|---|---|---|---|---|---|---|
isPlainHostName | yes | yes | yes | yes | yes | yes | yes |
dnsDomainIs | yes | yes | yes | yes | yes | yes | yes |
localHostOrDomainIs | yes | yes | yes | yes | yes | yes | yes |
isResolvable | yes | yes | yes | yes | yes | yes | yes |
isInNet | yes | yes | yes | yes | yes | yes | yes |
dnsResolve | yes | yes | yes | yes | yes | yes | yes |
myIpAddress | yes | yes | yes | yes | yes | yes | yes |
dnsDomainLevels | yes | yes | yes | yes | yes | yes | yes |
shExpMatch | yes | yes | yes | yes | yes | yes | yes |
weekdayRange | yes | yes | yes | yes | yes | yes | yes |
dateRange | yes | yes | yes | yes | yes | yes | yes |
timeRange | yes | yes | yes | yes | yes | yes | yes |
alert | yes | yes | yes | no | no | yes | yes |
dnsResolveEx | yes | yes | no | yes | yes | yes | no |
myIpAddressEx | yes | yes | no | yes | yes | yes | no |
isResolvableEx | yes | yes | no | yes | yes | yes | no |
isInNetEx | yes | yes | no | yes | yes | yes | no |
sortIpAddressList | yes | yes | no | no | no | no | no |
Rules with notes for firefox
- PAC-C018Upper-case letters in a hostname pattern
host is passed lower-cased (URL canonicalisation). doc, unverified
- PAC-C027Cloudflare Gateway proxy endpoint with PROXY instead of HTTPS
Supports the HTTPS proxy type through a PAC file (Cloudflare lists Firefox as supported). doc, verified 2026-10-04 · ref
- PAC-D003No Cache-Control header on the PAC response
Reported to keep the PAC for the session when no caching headers are present. expert, unverified
- PAC-K001ES2015+ syntax (let, const, arrow functions, template literals)
SpiderMonkey; current ECMAScript syntax parses. expert, unverified
- PAC-K002alert() used in the PAC
Message is written to the browser console; no dialog. expert, unverified
- PAC-K003IPv6 extension functions (isInNetEx, dnsResolveEx, myIpAddressEx)
Ex functions are not implemented. expert, unverified
- PAC-K005SOCKS keywords mean different versions on different engines
Reported to treat plain SOCKS as SOCKS5; versioned keywords unverified. expert, unverified
- PAC-K006HTTPS proxy keyword without a PROXY fallback
HTTPS keyword supported in current versions. expert, unverified
- PAC-K013Routing decided by myIpAddress()
Reported to resolve the local hostname (gethostbyname(gethostname())). expert, unverified
- PAC-K015Regular-expression syntax inside a shExpMatch pattern
Same helper-library approach (ascii_pac_utils.js); regex alternation works. code, unverified
- PAC-P001DNS lookup on every request
dnsResolve is synchronous on the PAC thread. expert, unverified
- PAC-X001No unconditional return at the end of FindProxyForURL
undefined is treated as DIRECT. expert, unverified
- PAC-X013PROXY entry without a port
Reported to reject the entry; needs lab confirmation. expert, unverified