Error with python 3.3.2 and https

A

asianavatar

I am trying to write a program that requires me hitting a https web link. However, I can't seem to get it to work. The program works fine when dealing with http sites, however, when I try it with a https site I get

socket.gaierror: [Errno 11001] getaddrinfo failed

It seems like it has something to do with the ssl not working, however, I do have the ssl.py in the python library and I have no problem importing it.

My code is below. Any help would be greatly appreciated.

import urllib.request
auth = urllib.request.HTTPSHandler()
proxy = urllib.request.ProxyHandler({'http':'my proxy'})
opener = urllib.request.build_opener(proxy, auth)
f = opener.open('http://www.google.ca/')
 
C

Chris Angelico

I am trying to write a program that requires me hitting a https web link. However, I can't seem to get it to work. The program works fine when dealing with http sites, however, when I try it with a https site I get

socket.gaierror: [Errno 11001] getaddrinfo failed

It seems like it has something to do with the ssl not working, however, I do have the ssl.py in the python library and I have no problem importing it.

My code is below. Any help would be greatly appreciated.

import urllib.request
auth = urllib.request.HTTPSHandler()
proxy = urllib.request.ProxyHandler({'http':'my proxy'})
opener = urllib.request.build_opener(proxy, auth)
f = opener.open('http://www.google.ca/')

Check the name of your proxy; maybe you can't resolve it. Can you
identify your proxy by IP address?

By omitting the proxy part, I can quite happily make a direct request
using code like yours.

ChrisA
 
A

asianavatar

I only have the http of the proxy. I guess I could find out the ip of it. However, even if I use the http proxy address, why would it work for a http site and not a https site if its the proxy that can't resolve.
 
C

Chris Angelico

I only have the http of the proxy. I guess I could find out the ip of it. However, even if I use the http proxy address, why would it work for a http site and not a https site if its the proxy that can't resolve.

Can you post working code for HTTP and nonworking for HTTPS? There was
no SSL in the code you posted. Or are you saying it's really just that
you change the URL and it stops working? If so, I don't think we can
test it without having your proxy... you may want to talk to whoever
controls the proxy.

ChrisA
 
A

asianavatar

Yeah that is the case. Once I change the f = opener.open('website') line to a link that has a https I get that socket error. Nothing else changes. Iwas reading online and came across this site which shows you how if the version of python installed supports ssl.

http://morlockhq.blogspot.ca/2008/05/python-tip-checking-to-see-if-your.html

When I followed the instructions I got that it wasn't supported, although the ssl.py is in the lib directory. Python was installed from the official python page using the windows installer. Is somehow ssl disabled by default?Do I need to get a third party ssl module?
 
C

Chris Angelico

Yeah that is the case. Once I change the f = opener.open('website') line to a link that has a https I get that socket error. Nothing else changes.I was reading online and came across this site which shows you how if the version of python installed supports ssl.

http://morlockhq.blogspot.ca/2008/05/python-tip-checking-to-see-if-your.html

When I followed the instructions I got that it wasn't supported, althoughthe ssl.py is in the lib directory. Python was installed from the officialpython page using the windows installer. Is somehow ssl disabled by default? Do I need to get a third party ssl module?

Hrm. Unfortunately those instructions don't work for Python 3... or at
least, if they do, then both of my handy installations (one Windows,
one Linux) don't have SSL. However, I *can* do 'import ssl' and
'import _ssl', the latter of which is what Lib/socket.py checks for.
In Python 3.3's Lib/socket.py there's no mention of ssl anywhere, so
I'd be inclined to look elsewhere for support checks.

ChrisA
 
A

asianavatar

So apparently switching the http to https in the proxyHandler call did the trick. Thanks for all the help.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,015
Latest member
AmbrosePal

Latest Threads

Top