Hide navigation sidebar
Hide table of contents sidebar
Back to top
Toggle table of contents sidebar

# Configuring PRAW

- Configuration Options
  - Basic Configuration Options
  - OAuth Configuration Options
  - Reddit Site Configuration Options
  - Miscellaneous Configuration Options
  - Custom Configuration Options

Configuration options can be provided to PRAW in one of three ways:

- praw.ini Files
- Keyword Arguments to `Reddit`
- PRAW Environment Variables

Environment variables have the highest priority, followed by keyword arguments to `Reddit`, and finally settings in `praw.ini` files.

## Using an HTTP or HTTPS proxy with PRAW

PRAW internally relies upon the requests package to handle HTTP requests. Requests supports use of `HTTP_PROXY` and `HTTPS_PROXY` environment variables in order to proxy HTTP and HTTPS requests respectively [ref].

Given that PRAW exclusively communicates with Reddit via HTTPS, only the `HTTPS_PROXY` option should be required.

For example, if you have a script named `prawbot.py`, the `HTTPS_PROXY` environment variable can be provided on the command line like so:

    HTTPS_PROXY=http://localhost:3128 ./prawbot.py

## Configuring a custom requests Session

PRAW uses requests to handle networking. If your use-case requires custom configuration, it is possible to configure a custom Session instance and then use it with PRAW.

For example, some networks use self-signed SSL certificates when connecting to HTTPS sites. By default, this would raise an exception in requests. To use a self-signed SSL certificate without an exception from requests, first export the certificate as a `.pem` file. Then configure PRAW like so:

    import praw
    from requests import Session

    session = Session()
    session.verify = "/path/to/certfile.pem"
    reddit = praw.Reddit(
        client_id="SI8pN3DSbt0zor",
        client_secret="xaxkj7HNh8kwg8e5t4m6KvSrbTI",
        password="1guiwevlfo00esyy",
        requestor_kwargs={"session": session},  # pass the custom Session instance
        user_agent="testscript by u/fakebot3",
        username="fakebot3",
    )

The code above creates a custom Session instance and configures it to use a custom certificate, then passes it as a parameter when creating the `Reddit` instance. Note that the example above uses a Password Flow authentication type, but this method will work for any authentication type.