• Python标准库之urllib,urllib2自定义Opener


    urllib2.urlopen()函数不支持验证、cookie或者其它HTTP高级功能。要支持这些功能,必须使用build_opener()函数创建自定义Opener对象。

    1. build_opener([handler1 [ handler2, ... ]])

    参数handler是Handler实例,常用的有HTTPBasicAuthHandler、HTTPCookieProcessor、ProxyHandler等。

    build_opener ()返回的对象具有open()方法,与urlopen()函数的功能相同。

    如果要修改http报头,可以用:

    import urllib2
    opener = urllib2.build_opener()
    opener.addheaders = [('User-agent', 'Mozilla/5.0')]
    opener.open('http://www.example.com/')

    2. install_opener(opener)

    安装不同的opener对象作为urlopen()使用的全局opener。

    3. 密码验证(HTTPBasicAuthHandler)

    HTTPBasicAuthHandler()处理程序可用add_password()来设置密码。

    h.add_password(realm,uri,user,passwd)

    realm是与验证相关联的名称或描述信息,取决于远程服务器。uri是基URL。user和passwd分别指定用户名和密码。

    import urllib2
    auth=urllib2.HTTPBasicAuthHandler()
    auth.add_password('Administrator','http://www.example.com','Dave','123456')
    opener=urllib2.build_opener(auth)
    u=opener.open('http://www.example.com/evilplan.html')
    

    4. Cookie处理(HTTPCookieProcessor)

    import urllib2,cookielib
    cookie=cookielib.CookieJar()
    cookiehand=urllib2.HTTPCookieProcessor(cookie)
    opener=urllib2.build_opener(cookiehand)
    

    5.代理(ProxyHandler)

    ProxyHandler(proxies)参数proxies是一个字典,将协议名称(http,ftp)等映射到相应代理服务器的URL。

    proxy=ProxyHandler({'http':'http://someproxy.com:8080'})
    auth=HTTPBasicAuthHandler()
    auth.add_password()
    opener=build_opener(auth,proxy)
    

    也可以在urlopen中使用代理

    import urllib2  
    proxy = 'http://%s:%s@%s' % ('userName', 'password', 'proxy')  
    inforMation = urllib2.urlopen("http://www.example.com", proxies={'http':proxy})       
    

      

  • 相关阅读:
    Python—requests模块详解
    强烈推荐(原创亲测)!!!Fiddler抓取https设置详解(图文)
    dexlib2的源码框架
    Android检测代理
    APP加固反调试(Anti-debugging)技术点汇总
    IDA逆向常用宏定义
    JNI学习积累之一 ---- 常用函数大全
    CMake之CMakeLists.txt编写入门
    Android Project和app中两个build.gradle配置的区别
    更新说明
  • 原文地址:https://www.cnblogs.com/linxiyue/p/3537557.html
Copyright © 2020-2023  润新知