Configuring PRAW
Configuration options can be provided to PRAW in one of three ways:
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.