You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
If I try to chain handlers, things don't work. What am I doing wrong?
With SocksiPyHandler first:
opener = urllib.request.build_opener(SocksiPyHandler(socks.SOCKS5, "127.0.0.1", 1082), urllib.request.HTTPSHandler(context=myssl))
opener.handlers
[<urllib.request.UnknownHandler at 0x7efeddaa0438>,
<urllib.request.HTTPDefaultErrorHandler at 0x7efeddaa04e0>,
<urllib.request.HTTPRedirectHandler at 0x7efeddaa05c0>,
<urllib.request.FTPHandler at 0x7efeddaa0588>,
<urllib.request.FileHandler at 0x7efeddaa01d0>,
<urllib.request.DataHandler at 0x7efeddaa0dd8>,
<sockshandler.SocksiPyHandler at 0x7efeddaa0d68>,
<urllib.request.HTTPSHandler at 0x7efeddaa0860>,
<urllib.request.HTTPErrorProcessor at 0x7efeddaa0c88>]
print(opener.open("https://172.22.255.172"))
....
URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1056)>
So this is successfully using the proxy, but doesn't seem to be using the HTTPS handler which has a context that should ignore the self-signed certificate. My understanding is this is chained in the wrong order.
With SocksiPyHandler second:
opener = urllib.request.build_opener(urllib.request.HTTPSHandler(contet=myssl),SocksiPyHandler(socks.SOCKS5, "127.0.0.1", 1082))
opener.handlers
[<urllib.request.UnknownHandler at 0x7efedda557f0>,
<urllib.request.HTTPDefaultErrorHandler at 0x7efedda552b0>,
<urllib.request.HTTPRedirectHandler at 0x7efedda553c8>,
<urllib.request.FTPHandler at 0x7efedda55be0>,
<urllib.request.FileHandler at 0x7efedda55cc0>,
<urllib.request.DataHandler at 0x7efedda55c88>,
<urllib.request.HTTPSHandler at 0x7efedda55358>,
<sockshandler.SocksiPyHandler at 0x7efedda55400>,
<urllib.request.HTTPErrorProcessor at 0x7efedda55c50>]
print(opener.open("https://172.22.255.172"))
...
URLError: <urlopen error [Errno 110] Connection timed out>
The proxy is not being used, the connection is attempted directly instead of via the proxy, and times out.
How am I supposed to use this? Am I doing something wrong? Could do with more documentation about how to do this.
Note I'm trying to modify someone else's code which builds an opener with several handlers and puts a proxy handler at the end of the chain. And when I put a sockshandler.SocksiPyHandler at the end of the list it is not used, per #2 above.
The text was updated successfully, but these errors were encountered:
If I try to chain handlers, things don't work. What am I doing wrong?
opener = urllib.request.build_opener(SocksiPyHandler(socks.SOCKS5, "127.0.0.1", 1082), urllib.request.HTTPSHandler(context=myssl))
opener.handlers
[<urllib.request.UnknownHandler at 0x7efeddaa0438>,
<urllib.request.HTTPDefaultErrorHandler at 0x7efeddaa04e0>,
<urllib.request.HTTPRedirectHandler at 0x7efeddaa05c0>,
<urllib.request.FTPHandler at 0x7efeddaa0588>,
<urllib.request.FileHandler at 0x7efeddaa01d0>,
<urllib.request.DataHandler at 0x7efeddaa0dd8>,
<sockshandler.SocksiPyHandler at 0x7efeddaa0d68>,
<urllib.request.HTTPSHandler at 0x7efeddaa0860>,
<urllib.request.HTTPErrorProcessor at 0x7efeddaa0c88>]
print(opener.open("https://172.22.255.172"))
....
URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1056)>
So this is successfully using the proxy, but doesn't seem to be using the HTTPS handler which has a context that should ignore the self-signed certificate. My understanding is this is chained in the wrong order.
opener = urllib.request.build_opener(urllib.request.HTTPSHandler(contet=myssl),SocksiPyHandler(socks.SOCKS5, "127.0.0.1", 1082))
opener.handlers
[<urllib.request.UnknownHandler at 0x7efedda557f0>,
<urllib.request.HTTPDefaultErrorHandler at 0x7efedda552b0>,
<urllib.request.HTTPRedirectHandler at 0x7efedda553c8>,
<urllib.request.FTPHandler at 0x7efedda55be0>,
<urllib.request.FileHandler at 0x7efedda55cc0>,
<urllib.request.DataHandler at 0x7efedda55c88>,
<urllib.request.HTTPSHandler at 0x7efedda55358>,
<sockshandler.SocksiPyHandler at 0x7efedda55400>,
<urllib.request.HTTPErrorProcessor at 0x7efedda55c50>]
print(opener.open("https://172.22.255.172"))
...
URLError: <urlopen error [Errno 110] Connection timed out>
The proxy is not being used, the connection is attempted directly instead of via the proxy, and times out.
How am I supposed to use this? Am I doing something wrong? Could do with more documentation about how to do this.
Note I'm trying to modify someone else's code which builds an opener with several handlers and puts a proxy handler at the end of the chain. And when I put a sockshandler.SocksiPyHandler at the end of the list it is not used, per #2 above.
The text was updated successfully, but these errors were encountered: