zoukankan      html  css  js  c++  java
  • python使用代理访问服务器

    python使用代理访问服务器主要有一下3个步骤:

    1.创建一个代理处理器ProxyHandler:

    proxy_support = urllib.request.ProxyHandler(),ProxyHandler是一个类,其参数是一个字典:{ '类型':'代理ip:端口号'}

    什么是Handler?Handler也叫作处理器,每个handlers知道如何通过特定协议打开URLs,或者如何处理URL打开时的各个方面,例如HTTP重定向或者HTTP cookies。

    2.定制、创建一个opener:

    opener = urllib.request.build_opener(proxy_support)

    什么是opener?python在打开一个url链接时,就会使用opener。其实,urllib.request.urlopen()函数实际上是使用的是默认的opener,只不过在这里我们需要定制一个opener来指定handler。

    3a.安装opener

    urllib.request.install_opener(opener)

    install_opener 用来创建(全局)默认opener,这个表示调用urlopen将使用你安装的opener。

    3b.调用opener
    opener.open(url)

    该方法可以像urlopen函数那样直接用来获取urls:通常不必调用install_opener,除了为了方便。

    复制代码
    >>> proxy_support = urllib.request.ProxyHandler({'http':'115.32.41.100:80'})
    >>> proxy_support
    <urllib.request.ProxyHandler object at 0x0000000002EE74A8>
    >>> opener = urllib.request.build_opener(proxy_support)
    >>> opener
    <urllib.request.OpenerDirector object at 0x0000000002F972B0>
    >>> opener.handlers
    [<urllib.request.ProxyHandler object at 0x0000000002EE74A8>, <urllib.request.UnknownHandler object at 0x0000000003197B38>, <urllib.request.HTTPHandler object at 0x0000000003197C18>, <urllib.request.HTTPDefaultErrorHandler object at 0x0000000003197CC0>, <urllib.request.HTTPRedirectHandler object at 0x0000000003197BA8>, <urllib.request.FTPHandler object at 0x0000000003197DD8>, <urllib.request.FileHandler object at 0x0000000003197E80>, <urllib.request.HTTPSHandler object at 0x0000000003197E48>, <urllib.request.HTTPErrorProcessor object at 0x0000000003197E10>]
    >>> opener.addheaders
    [('User-agent', 'Python-urllib/3.3')]
    >>> opener.addheaders = [('User-Agent','Test_Proxy_Python3.5_maminyao')]
    >>> opener.addheaders
    [('User-Agent', 'Test_Proxy_Python3.5_maminyao')]
    >>> 
    复制代码

    从代理ip列表中随机使用某ip去访问URL的例子

    复制代码
    import urllib.request
    import random
    
    url = 'http://www.whatismyip.com.tw'
    iplist = ['115.32.41.100:80','58.30.231.36:80','123.56.90.175:3128']
    
    proxy_support = urllib.request.ProxyHandler({'http':random.choice(iplist)})
    opener = urllib.request.build_opener(proxy_support)
    opener.addheaders = [('User-Agent','Test_Proxy_Python3.5_maminyao')]
    urllib.request.install_opener(opener)
    response = urllib.request.urlopen(url)
    html = response.read().decode('utf-8')
    
    print(html)
    复制代码

    原网址:http://www.cnblogs.com/paomaliuju/p/5176461.html

  • 相关阅读:
    Silverlight 调用GP服务第一篇之发布GP服务(Geoprocessing Service)
    SQLServer中char、varchar、nchar、nvarchar的区别:
    word中带圈符号如何手动输入
    js中循环for
    正则表达式总结
    SQL Server 2008 数据库 不允许保存修改。
    多线程三种锁Monitor,lock,Mutex
    Lambda和Linq的用法
    RowDeleting和RowDeleted区别
    ASP.NET中aspx.cs页面代码中的换行方法
  • 原文地址:https://www.cnblogs.com/jmmchina/p/6692576.html
Copyright © 2011-2022 走看看