栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用python请求模块传递代理身份验证(需要摘要身份验证)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用python请求模块传递代理身份验证(需要摘要身份验证)

我编写了可用于代理身份验证的类(基于摘要身份验证)。
我从request.auth.HTTPDigestAuth借用了几乎所有代码。

import requestsimport requests.authclass 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")# HTTPr = requests.get("http://www.google.co.jp/", proxies=proxies, auth=auth)r.status_pre # 200 OK# HTTPSr = requests.get("https://www.google.co.jp/", proxies=proxies, auth=auth)r.status_pre # 200 OK


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/645509.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号