Px

genotrance·genotrance.px

An HTTP proxy server to automatically authenticate through an NTLM proxy

Px is a HTTP(s) proxy server that allows applications to authenticate through an NTLM or Kerberos proxy server, typically used in corporate deployments, without having to deal with the actual handshake. Px leverages Windows SSPI or single sign-on and automatically authenticates using the currently logged in Windows user account. It is also possible to run Px on Windows, Linux and MacOS without single sign-on by configuring the domain, username and password to authenticate with.

winget install --id genotrance.px --exact --source winget

Latest 0.12.0·July 21, 2026

Release Notes

New features

  • PAC file encoding is now auto-detected using an extended browser-compatible algorithm: HTTP Content-Type charset (for URL-loaded PACs), then BOM check, then UTF-8, then Windows code page cascade (cp1252, cp1251), then Latin-1 fallback. This handles enterprise environments where IIS or other Windows servers serve PAC files in cp1252 or cp1251 without proper charset headers. The --pac_encoding option remains available as an explicit override if auto-detection does not work. PAC decode and load failures are now always printed instead of being hidden behind --debug (#269). Bug fixes
  • Fixed --workers > 1 crashing on Windows with OSError: [WinError 87] due to IOCP socket registration conflict. Each worker now creates its own independent listening sockets instead of sharing from the parent process (#267).
  • Enabled --workers on macOS — previously disabled because the old socket sharing approach was incompatible. The new per-worker socket model uses SO_REUSEPORT on Linux and macOS and SO_REUSEADDR on Windows.
  • Fixed px randomly becoming unresponsive after running for days when using --debug mode. os.fsync() in the debug log write path could block the asyncio event loop indefinitely on slow or locked filesystems (antivirus, network drives). Replaced with file.flush() which pushes data to the OS page cache without blocking (#268). Improvements
  • Px now automatically raises the open file descriptor soft limit (RLIMIT_NOFILE) at startup on Linux and macOS. macOS launchd defaults to 256 and Linux defaults to 1024, both too low for a proxy handling concurrent CONNECT tunnels. The limit is raised to min(hard_limit, 65536) with a step-down fallback for macOS where kern.maxfilesperproc may reject high values (#272).

Installer type: zip

x643685E07EB888A559521B90464D7491CC11CAA9173CAC5D9DBE2D2E6EC055758E

Details

Homepage
https://github.com/genotrance/px
License
MIT
Publisher
genotrance
Support
https://github.com/genotrance/px/issues
Copyright
Copyright (c) 2017-2025 Ganesh Viswanathan
Moniker
px-proxy

Older versions (3)

0.11.0
x644E69F56F5BAD9878190A5E82B5EA18857D15EF34A04256A624A40B4458E96417
0.10.3
x64444C591D5847C653870F55D2CF14C773E9A750CF10DF4D0BEDA1A488850BA63D
0.10.2
x64DECBFA9074A969555CD8D8D7CADDDB4710091860CE4BB84B67244D1667A3CAB3