Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improper handling of response code 407 #188

Open
anishj-crest opened this issue Mar 19, 2021 · 2 comments
Open

Improper handling of response code 407 #188

anishj-crest opened this issue Mar 19, 2021 · 2 comments

Comments

@anishj-crest
Copy link

anishj-crest commented Mar 19, 2021

StackTrace

Traceback (most recent call last):
  File "C:\Users\anish.jain\Miniconda3\lib\site-packages\socks.py", line 809, in connect        
    negotiate(self, dest_addr, dest_port)
  File "C:\Users\anish.jain\Miniconda3\lib\site-packages\socks.py", line 718, in _negotiate_HTTP
    raise HTTPError(error)
socks.HTTPError: 407: Proxy Authentication Required


During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\anish.jain\Miniconda3\lib\site-packages\httplib2\__init__.py", line 1346, in _conn_request
    conn.connect()
  File "C:\Users\anish.jain\Miniconda3\lib\site-packages\httplib2\__init__.py", line 1046, in connect
    raise socket_err
  File "C:\Users\anish.jain\Miniconda3\lib\site-packages\httplib2\__init__.py", line 1029, in connect
    self.sock.connect((self.host, self.port) + sa[2:])
  File "C:\Users\anish.jain\Miniconda3\lib\site-packages\socks.py", line 47, in wrapper
    return function(*args, **kwargs)
  File "C:\Users\anish.jain\Miniconda3\lib\site-packages\socks.py", line 814, in connect
    raise GeneralProxyError("Socket error", error)
socks.GeneralProxyError: Socket error: 407: Proxy Authentication Required


During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "test.py", line 22, in <module>
    test_sock5_httplib2()
  File "test.py", line 13, in test_sock5_httplib2
    resp, content = http.request("http://ipinfo.io/ip", "GET")
  File "C:\Users\anish.jain\Miniconda3\lib\site-packages\httplib2\__init__.py", line 1708, in request
    (response, content) = self._request(
  File "C:\Users\anish.jain\Miniconda3\lib\site-packages\httplib2\__init__.py", line 1424, in _request
    (response, content) = self._conn_request(conn, request_uri, method, body, headers)
  File "C:\Users\anish.jain\Miniconda3\lib\site-packages\httplib2\__init__.py", line 1355, in _conn_request
    errno_ = e.args[0].errno if isinstance(e.args[0], socket.error) else e.errno
IndexError: tuple index out of range

System and Library info:

>>> import sys
>>> sys.version
'3.8.5 (default, Sep  3 2020, 21:29:08) [MSC v.1916 64 bit (AMD64)]'
>>> import httplib2
>>> httplib2.__version__
'0.19.0'
>>>

SourceCode (test.py)

def test_http_httplib2():
    #with httplib2 module
    from httplib2 import Http, socks, ProxyInfo

    proxy = ProxyInfo(proxy_type=socks.PROXY_TYPE_HTTP,
                                   proxy_host="IP",
                                   proxy_port=3128,
                                   proxy_user="USER",
                                   proxy_pass="PASSWORD",
                                   proxy_rdns=False)

    http = Http(proxy_info = proxy)
    resp, content = http.request("http://ipinfo.io/ip", "GET")
    #print(resp.status)

    #with requests module
    import requests

    resp  = requests.get("http://ipinfo.io/ip",proxies={"http":"http://USER:PASSWORD@IP:3128"})
    #print(resp.status_code)

if __name__ == "__main__":
    test_http_httplib2()

Expected Behaviour

Instead of throwing an exception, it should return status code 407 gracefully. Check response with requests module.

@temoto
Copy link
Member

temoto commented Mar 22, 2021

Please show C:\Users\anish.jain\Miniconda3\bin\pip freeze
specifically, lines containing substring sock
I want to know where lib\site-packages\socks.py is coming from to create a regression test.

@anishj-crest
Copy link
Author

@temoto I created a new virtual environment for python 3.7.

The new stack trace is:

Traceback (most recent call last):
File "test.py", line 22, in
test_sock5_httplib2()
File "test.py", line 13, in test_sock5_httplib2
resp, content = http.request("http://ipinfo.io/ip", "GET")
File "C:\Users\anish.jain\Miniconda3\envs\test\lib\site-packages\httplib2_init_.py", line 1709, in request
conn, authority, uri, request_uri, method, body, headers, redirections, cachekey,
File "C:\Users\anish.jain\Miniconda3\envs\test\lib\site-packages\httplib2_init_.py", line 1424, in _request
(response, content) = self.conn_request(conn, request_uri, method, body, headers)
File "C:\Users\anish.jain\Miniconda3\envs\test\lib\site-packages\httplib2_init
.py", line 1346, in conn_request
conn.connect()
File "C:\Users\anish.jain\Miniconda3\envs\test\lib\site-packages\httplib2_init
.py", line 1029, in connect
self.sock.connect((self.host, self.port) + sa[2:])
File "C:\Users\anish.jain\Miniconda3\envs\test\lib\site-packages\httplib2\socks.py", line 504, in connect
self.__negotiatehttp(destpair[0], destpair[1])
File "C:\Users\anish.jain\Miniconda3\envs\test\lib\site-packages\httplib2\socks.py", line 465, in __negotiatehttp
raise HTTPError((statuscode, statusline[2]))
httplib2.socks.HTTPError: (407, b'Proxy Authentication Required')

Output of pip freeze

certifi==2020.12.5
httplib2==0.19.0
pyparsing==2.4.7
wincertstore==0.2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants