加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何使用python的urllib2库只请求一次验证URL,而不是两次

发布时间:2020-12-20 13:22:44 所属栏目:Python 来源:网络整理
导读:通常,我们请求一个带有 python urllib2库的认证url,用法如 this page所述,但这会导致2个服务器请求,第一个响应401错误,然后第二个是客户端编码username / passwd into验证标头和请求再次.但是,如果您确实知道领域和(用户名,密码),您只能直接访问该网址一次.
通常,我们请求一个带有 python urllib2库的认证url,用法如 this page所述,但这会导致2个服务器请求,第一个响应401错误,然后第二个是客户端编码username / passwd into验证标头和请求再次.但是,如果您确实知道领域和(用户名,密码),您只能直接访问该网址一次.我可以通过将身份验证信息编码到请求标头中来执行此操作,并且它只请求一次,但我无法使用HTTPPasswordMgrWithDefaultRealm和相关类来执行此操作.

>只有一次请求代码:

import urllib2,base64
url = 'http://xxxx'
username = 'jpx'
passwd = 'jpx123'
b64str = base64.encodestring('%s:%s' % (username,passwd))

req = urllib2.Request(url)
auth = 'Basic %s' % b64str
req.add_header('Authorization',auth)

try:
    opener = urllib2.urlopen(req)
except IOError,e:
    print str(e)

print opener.read()

解决方法

是的,这就是urllib的密码管理器的工作原理.它仅在从服务器接收401后发送auth信息.你可以将很多东西子类化并改变这种行为,但是像在示例中那样自己将信息编码到头中似乎更容易.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读