I am having trouble finding solid examples of how to build a simple script in urllib3 which opens a url (via a proxy), then reads it and finally prints it. The proxy requires a user/pass to authenticate however it's not clear to me how you do this? Any help would be appreciated.
How to handle proxies in urllib3
urllib3 has a ProxyManager
component which you can use. You'll need to build headers for the Basic Auth component, you can either do that manually or use the make_headers
helper in urllib3.
All together, it would look something like this:
from urllib3 import ProxyManager, make_headers
default_headers = make_headers(proxy_basic_auth='myusername:mypassword')
http = ProxyManager("https://myproxy.com:8080/", proxy_headers=default_headers)
# Now you can use `http` as you would a normal PoolManager
r = http.request('GET', 'https://stackoverflow.com/')
Is the "headers" the login for the proxy, or can it be used to log into a website as well? –
Robbirobbia
@Robbirobbia It's for the proxy. You can make separate headers for the website itself. –
Overnight
This only worked for me when I changed "headers=default_headers" to "proxy_headers=default_headers". See #58132073 –
Davenport
I believe the correct answer to this should be
from urllib3 import ProxyManager, make_headers
default_headers = make_headers(proxy_basic_auth='myusername:mypassword')
http = ProxyManager("https://myproxy.com:8080/", headers=default_headers)
# Now you can use `http` as you would a normal PoolManager
r = http.request('GET', 'https://stackoverflow.com/')
(note: proxy_basic_auth, not basic_auth)
I was trying this with basic_auth in my environment without any luck. shazow you committed this comment to git which pointed me in the right direction
© 2022 - 2024 — McMap. All rights reserved.
requests
? #8288128 – Albric