의 내가 프록시 인증에 사용할 수있는 클래스를 작성하여 다이제스트 인증을 사용할 수 있습니다 (인증 다이제스트 기준).
requests.auth.HTTPDigestAuth에서 거의 모든 코드를 빌 렸습니다.
import requests
import requests.auth
class HTTPProxyDigestAuth(requests.auth.HTTPDigestAuth):
def handle_407(self, r):
"""Takes the given response and tries digest-auth, if needed."""
num_407_calls = r.request.hooks['response'].count(self.handle_407)
s_auth = r.headers.get('Proxy-authenticate', '')
if 'digest' in s_auth.lower() and num_407_calls < 2:
self.chal = requests.auth.parse_dict_header(s_auth.replace('Digest ', ''))
# Consume content and release the original connection
# to allow our new request to reuse the same one.
r.content
r.raw.release_conn()
r.request.headers['Authorization'] = self.build_digest_header(r.request.method, r.request.url)
r.request.send(anyway=True)
_r = r.request.response
_r.history.append(r)
return _r
return r
def __call__(self, r):
if self.last_nonce:
r.headers['Proxy-Authorization'] = self.build_digest_header(r.method, r.url)
r.register_hook('response', self.handle_407)
return r
사용법 : 아직 여기까지 당신의 사람들을 위해
proxies = {
"http" :"192.168.20.130:8080",
"https":"192.168.20.130:8080",
}
auth = HTTPProxyDigestAuth("username", "password")
# HTTP
r = requests.get("http://www.google.co.jp/", proxies=proxies, auth=auth)
r.status_code # 200 OK
# HTTPS
r = requests.get("https://www.google.co.jp/", proxies=proxies, auth=auth)
r.status_code # 200 OK
오류가 발생합니다 : 'HTTPProxyDigestAuth'객체에 'last_nonce'속성이 없습니다. 수업을하려고 할 때. 나는 그것을 들여다 볼 것이다. – MattClimbs
이제 요청을 구현할 필요가 없습니다. 이제 요청은 프록시를 지원합니다. 'proxies = { 'https': 'https : // user : password @ ip : port'}; r = requests.get ('https : // url', proxies = 프록시)'http://docs.python-requests.org/ko/latest/user/advanced/ – BurnsBA
@BurnsBA @MattClimbs @yutaka 파이썬 3에서 https와'user : password @ ip : port'를 사용하여 요청이 잘 작동하는지 확인하십시오. – jamescampbell