PyPAC: Proxy auto-config for Python¶
Release v0.16.3.
PyPAC is a Python library for finding proxy auto-config (PAC) files and making HTTP requests that respect them. PAC files are often used in organizations that need fine-grained and centralized control of proxy settings. Are you using one?
PyPAC provides PACSession
,
a drop-in subclass of requests.Session,
so you can start transparently finding and obeying PAC files immediately.
Features¶
- The same Requests API that you already know and love
- Honour PAC setting from Windows Internet Options
- Follow DNS Web Proxy Auto-Discovery protocol
- Proxy authentication pass-through
- Proxy failover and load balancing
- Generic components for adding PAC support to other code
PyPAC supports Python 2.7 and 3.4+.
Installation¶
Install PyPAC using pip:
$ python -m pip install pypac
The source is also available on GitHub.
Quickstart¶
The quickest way to get started is to use a PACSession
:
>>> from pypac import PACSession
>>> session = PACSession()
>>> session.get('http://example.org')
<Response [200]>
Behind the scenes, the first request made with the session will trigger the PAC auto-discovery process. This process first looks for a PAC URL setting in Windows, and if not found, moves on to the DNS WPAD protocol.
Once a PAC file is found, it will be automatically consulted for every request.
If a PAC wasn’t found, then PACSession
acts just like a requests.Session.
If you’re looking to add basic PAC functionality to a library that you’re using,
try the pac_context_for_url
context manager:
from pypac import pac_context_for_url
import boto3
with pac_context_for_url('https://example.amazonaws.com'):
client = boto3.client('sqs')
client.list_queues()
This sets up proxy environment variables at the start of the scope, based on any auto-discovered PAC and the given URL.
pac_context_for_url
should work for any library
that honours proxy environment variables.