mirror of https://github.com/scrapy/scrapy.git
Relax Proxy-Authorization restrictions
This commit is contained in:
parent
90b8503789
commit
77c055ee28
|
|
@ -78,4 +78,7 @@ class HttpProxyMiddleware:
|
||||||
del request.headers[b'Proxy-Authorization']
|
del request.headers[b'Proxy-Authorization']
|
||||||
del request.meta['_auth_proxy']
|
del request.meta['_auth_proxy']
|
||||||
elif b'Proxy-Authorization' in request.headers:
|
elif b'Proxy-Authorization' in request.headers:
|
||||||
del request.headers[b'Proxy-Authorization']
|
if proxy_url:
|
||||||
|
request.meta['_auth_proxy'] = proxy_url
|
||||||
|
else:
|
||||||
|
del request.headers[b'Proxy-Authorization']
|
||||||
|
|
|
||||||
|
|
@ -400,6 +400,9 @@ class TestHttpProxyMiddleware(TestCase):
|
||||||
self.assertNotIn(b'Proxy-Authorization', request.headers)
|
self.assertNotIn(b'Proxy-Authorization', request.headers)
|
||||||
|
|
||||||
def test_proxy_authentication_header_proxy_without_credentials(self):
|
def test_proxy_authentication_header_proxy_without_credentials(self):
|
||||||
|
"""As long as the proxy URL in request metadata remains the same, the
|
||||||
|
Proxy-Authorization header is used and kept, and may even be
|
||||||
|
changed."""
|
||||||
middleware = HttpProxyMiddleware()
|
middleware = HttpProxyMiddleware()
|
||||||
request = Request(
|
request = Request(
|
||||||
'https://example.com',
|
'https://example.com',
|
||||||
|
|
@ -408,7 +411,16 @@ class TestHttpProxyMiddleware(TestCase):
|
||||||
)
|
)
|
||||||
assert middleware.process_request(request, spider) is None
|
assert middleware.process_request(request, spider) is None
|
||||||
self.assertEqual(request.meta['proxy'], 'https://example.com')
|
self.assertEqual(request.meta['proxy'], 'https://example.com')
|
||||||
self.assertNotIn(b'Proxy-Authorization', request.headers)
|
self.assertEqual(request.headers['Proxy-Authorization'], b'Basic foo')
|
||||||
|
|
||||||
|
assert middleware.process_request(request, spider) is None
|
||||||
|
self.assertEqual(request.meta['proxy'], 'https://example.com')
|
||||||
|
self.assertEqual(request.headers['Proxy-Authorization'], b'Basic foo')
|
||||||
|
|
||||||
|
request.headers['Proxy-Authorization'] = b'Basic bar'
|
||||||
|
assert middleware.process_request(request, spider) is None
|
||||||
|
self.assertEqual(request.meta['proxy'], 'https://example.com')
|
||||||
|
self.assertEqual(request.headers['Proxy-Authorization'], b'Basic bar')
|
||||||
|
|
||||||
def test_proxy_authentication_header_proxy_with_same_credentials(self):
|
def test_proxy_authentication_header_proxy_with_same_credentials(self):
|
||||||
middleware = HttpProxyMiddleware()
|
middleware = HttpProxyMiddleware()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue