In urllib3
, you can add headers to your HTTP requests by providing a dictionary of headers when you make a request. Below is a step-by-step guide on how to do this:
Step 1: Install urllib3
If you haven't already, you will need to install urllib3
. You can do this using pip
:
pip install urllib3
Step 2: Import urllib3
Start by importing urllib3
in your Python script:
import urllib3
Step 3: Create a PoolManager
instance
Create an instance of PoolManager
, which is the central class for managing HTTP connections:
http = urllib3.PoolManager()
Step 4: Define your headers
Create a dictionary containing the headers you want to include in your request:
headers = {
'User-Agent': 'My User Agent String',
'Accept': 'application/json',
'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
}
Step 5: Make a request with headers
Use the request
method of the PoolManager
instance, passing the method ('GET'
, 'POST'
, etc.), the URL, and the headers dictionary:
response = http.request('GET', 'http://example.com', headers=headers)
Full Example
Here's a complete example script that sends a GET
request with custom headers:
import urllib3
# Create the PoolManager instance
http = urllib3.PoolManager()
# Define custom headers in a dictionary
headers = {
'User-Agent': 'My User Agent String',
'Accept': 'application/json',
'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
}
# Send the GET request with the defined headers
response = http.request('GET', 'http://example.com', headers=headers)
# Print the response data
print(response.data.decode('utf-8'))
When you run this script, it will send a GET
request to http://example.com
with the specified headers. The response from the server will be printed to the console.
Remember to handle exceptions and errors gracefully in a production environment. urllib3
can raise various exceptions, such as MaxRetryError
, TimeoutError
, etc., that you should account for to prevent your application from crashing unexpectedly.
Additionally, if you're dealing with HTTPS requests, you should take care of SSL certificate verification. By default, urllib3
will warn you about insecure requests if you do not verify SSL certificates. You can use the cert_reqs
parameter and provide the path to a CA bundle, or you can disable the warnings (not recommended for production use):
# To disable SSL warnings (not recommended for production)
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
# To specify a CA bundle for SSL verification
response = http.request('GET', 'https://example.com', headers=headers, cert_reqs='CERT_REQUIRED', ca_certs='/path/to/cabundle.pem')
Always ensure sensitive information such as API tokens or credentials are securely handled and not hardcoded in your scripts. Use environment variables or configuration files to manage such data.