urllib2:如何将代理和http基本身份验证处理程序安装为打开器?

安东尼·孔

背景:由于环境限制,我只能使用python 2.4。因此requests是不可能的。

我希望能够使用urllib2.HTTPBasicAuthHandlerProxyHandler同时打开一个URL。

如果我做类似的事情:

proxy = urllib2.ProxyHandler({'http': 'http://myproxy.local'})
proxy_opener = urllib2.build_opener(proxy)

...
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
pass_handler = urllib2.HTTPBasicAuthHandler(passman)
...
 urllib2.install_opener(urllib2.build_opener([proxy_opener, pass_handler]))

代码将停留在此行:

urllib2.urlopen(target_url)

那么,安装两个处理程序的正确方法是什么?

编辑:

我的原始版本存在语法错误。线

urllib2.install_opener(urllib2.build_opener(pass_handler), proxy_opener)

应该

urllib2.install_opener(urllib2.build_opener(pass_handler, proxy_opener)) # note the parenthesis

但是正如atupal所暗示的,应该是

urllib2.install_opener(urllib2.build_opener([proxy_opener, pass_handler]))
不适用

阅读docs-install_openerdocs-build_opener

urllib2.install_opener(opener)

安装一个OpenerDirector实例作为默认的全局打开器。

urllib2.build_opener([handler, ...])

返回一个OpenerDirector实例,该实例按照给定的顺序链接处理程序。处理程序可以是BaseHandler的实例,也可以是BaseHandler的子类(在这种情况下,必须可以在没有任何参数的情况下调用构造函数)。以下类的实例将在处理程序的前面,除非处理程序包含它们,它们的实例或它们的子类:ProxyHandler(如果检测到代理设置),UnknownHandler,HTTPHandler,HTTPDefaultErrorHandler,HTTPRedirectHandler,FTPHandler,FileHandler,HTTPErrorProcessor。

因此,您应该首先使用代理处理程序和auth处理程序构建一个打开程序。如果需要,请全局安装它:

proxy_handler = urllib2.ProxyHandler({'http': 'http://myproxy.local'})

...
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
pass_handler = urllib2.HTTPBasicAuthHandler(passman)
...
urllib2.install_opener(urllib2.build_opener(proxy_handler, pass_handler))

更新:我测试以下代码段,并且按预期工作。不要忘记用您自己的代理,URL,用户名和密码替换:

import urllib2

proxyhandler = urllib2.ProxyHandler({'http': 'http://219.93.183.106:8080'})

url = "http://atupal.org:9001"
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, url, "myusername", "mypassword")
pass_handler = urllib2.HTTPBasicAuthHandler(passman)

opener = urllib2.build_opener(
    proxyhandler,
    pass_handler,
    )
urllib2.install_opener(opener)

print urllib2.urlopen(url).read()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何通过量角器在Chrome上处理HTTP基本身份验证?

来自分类Dev

如何使用基本身份验证创建esb代理

来自分类Dev

在我的Symfony 2应用程序中配置基于HTTP浏览器的基本身份验证-不显示HTTP身份验证登录

来自分类Dev

yii2-httpclient具有基本身份验证和代理设置

来自分类Dev

Python中的HTTP基本身份验证处理程序错误

来自分类Dev

处理身份验证通过urllib2从经过身份验证的网站检索图像

来自分类Dev

AFNetworking 2.0和HTTP基本身份验证

来自分类Dev

在WSO2 EI中使用基本身份验证处理程序保护API

来自分类Dev

如何将凭证从 Angular2 前端传递到 Spring 后端(Spring Security 的基本身份验证)

来自分类Dev

如何使用量角器处理基本身份验证?

来自分类Dev

angularjs:$ http基本身份验证

来自分类Dev

安全的HTTP基本身份验证

来自分类Dev

HTTP 基本身份验证注销

来自分类Dev

OAuth2 INTRIDEA gem和HTTP基本身份验证标头

来自分类Dev

基本身份验证和HttpContext

来自分类Dev

基本身份验证和JWT

来自分类Dev

使用httpClient将代理信息和基本身份验证添加到其余模板

来自分类Dev

如何为基本身份验证配置Web Api 2和IIS?

来自分类Dev

Java中带有代理的HTTP基本身份验证

来自分类Dev

使用鱿鱼代理的基本身份验证

来自分类Dev

阻止Apache将基本身份验证标头转发到反向代理的Tomcat网站

来自分类Dev

如何将带有 HTTP 基本身份验证的 curl 请求转换为 Spring RestTemplate 请求?

来自分类Dev

HTTP基本身份验证的基本超时

来自分类Dev

如何将window.fetch()与httpOnly cookie或基本身份验证一起使用

来自分类Dev

如何将基本身份验证添加到Spring Boot logging.config属性

来自分类Dev

基本身份验证/身份和aspnet核心

来自分类Dev

如何在python中使用urllib2获取身份验证令牌?

来自分类Dev

使用AngularJS拦截器阻止HTTP基本身份验证对话框

来自分类Dev

Twisted-Klein服务器上的HTTP基本身份验证

Related 相关文章

  1. 1

    如何通过量角器在Chrome上处理HTTP基本身份验证?

  2. 2

    如何使用基本身份验证创建esb代理

  3. 3

    在我的Symfony 2应用程序中配置基于HTTP浏览器的基本身份验证-不显示HTTP身份验证登录

  4. 4

    yii2-httpclient具有基本身份验证和代理设置

  5. 5

    Python中的HTTP基本身份验证处理程序错误

  6. 6

    处理身份验证通过urllib2从经过身份验证的网站检索图像

  7. 7

    AFNetworking 2.0和HTTP基本身份验证

  8. 8

    在WSO2 EI中使用基本身份验证处理程序保护API

  9. 9

    如何将凭证从 Angular2 前端传递到 Spring 后端(Spring Security 的基本身份验证)

  10. 10

    如何使用量角器处理基本身份验证?

  11. 11

    angularjs:$ http基本身份验证

  12. 12

    安全的HTTP基本身份验证

  13. 13

    HTTP 基本身份验证注销

  14. 14

    OAuth2 INTRIDEA gem和HTTP基本身份验证标头

  15. 15

    基本身份验证和HttpContext

  16. 16

    基本身份验证和JWT

  17. 17

    使用httpClient将代理信息和基本身份验证添加到其余模板

  18. 18

    如何为基本身份验证配置Web Api 2和IIS?

  19. 19

    Java中带有代理的HTTP基本身份验证

  20. 20

    使用鱿鱼代理的基本身份验证

  21. 21

    阻止Apache将基本身份验证标头转发到反向代理的Tomcat网站

  22. 22

    如何将带有 HTTP 基本身份验证的 curl 请求转换为 Spring RestTemplate 请求?

  23. 23

    HTTP基本身份验证的基本超时

  24. 24

    如何将window.fetch()与httpOnly cookie或基本身份验证一起使用

  25. 25

    如何将基本身份验证添加到Spring Boot logging.config属性

  26. 26

    基本身份验证/身份和aspnet核心

  27. 27

    如何在python中使用urllib2获取身份验证令牌?

  28. 28

    使用AngularJS拦截器阻止HTTP基本身份验证对话框

  29. 29

    Twisted-Klein服务器上的HTTP基本身份验证

热门标签

归档