• python2.7用socks和socket设置代理


       接下来是最近遇到的一个代理问题。

    背景:一个基于python2.7的自动化测试项目

    目的:因调试需求,需要通过代理连接其他公司的前端网站,来检验项目运行所在的问题。

    问题:RUN>等了1分钟没有任何提示,之后抛出异常,raise ConnectionError(e, request=request)

         requests.exceptions.ConnectionError: HTTPConnectionPool(host='xx.xx.xx.xx', port=80): Max retries exceeded with url: /xx/xx/xxx (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object      at 0x0000000002E7DC50>: Failed to establish a new connection: [Errno 10060] ',)

       明显连接不上网址,但是网页可以连接上,那就是代理的问题了。

    解决: 正常的python2.7版本设置代理的格式是这样的:

    proxy_handler = urllib2.ProxyHandler({'http':'ip:port'})
    opener = urllib2.build_opener(proxy_handler) 
    r = opener.open('http://www.baidu.com')

    但是我不需要主动的去打开网页,于是了解到可以把代理安装到urllib2,之后通过urllib2打开的网页都通过这个代理连接,于是就变成了这样。

    proxy_handler = urllib2.ProxyHandler({'http':'ip:port'})
    opener = urllib2.build_opener(proxy_handler)
    urllib2.install_opener(opener)

    到此为止,对于python2.7版本的代理设置基本上都可以满足了。

    再次运行......还是连接不上,一样的异常。之后上网查找各种设置代理的问题,没有试成功过,包括设置pycharm的系统代理,也行不通。

    之后我用python3.6版本做了个连接代理的测试,发现python3.6的可以成功,但是python3.6的代理设置和python2.7的代理设置不尽相同,没什么关系。

    接着就去看代码内部逻辑找到连接网址的相关代码块,去看看是怎么连接的,既然咱们用urllib2设置的代理,那连接的时候应该会有相关的方法,what?,用socks连接的........

    但是咱们知道python2.7是没有socks.py模块的,这......,想着死马当活马医吧,直接就把python3.6的socks.py文件复制到了python2.7的Lib下,直接import,把python3.6设置代理的方法复制了进来

    import socket
    import socks
    socks.set_default_proxy(socks.HTTP, 'ip', port) socket.socket = socks.socksocket

    RUN>报错提示缺一个win_inet_pton.py模块,然后把这个模块下载下来,再import,再RUN,然后就看见控制台,出现了密密麻麻的SUCCESS信息。成功了。

    ps:python2和python3还是有血缘关系的,哈哈。

         点击下载win_inet_pton.py 密码:7m0p

  • 相关阅读:
    ASP.NET MVC 重点教程一周年版 第二回 UrlRouting
    ASP.NET MVC 重点教程一周年版 第三回 Controller与View
    DynamicData for Asp.net Mvc留言本实例 下篇 更新
    Asp.net MVC视频教程 18 单选与复选框
    使用ASP.NET MVC Futures 中的异步Action
    ASP.NET MVC RC 升级要注意的几点
    ATL、MFC、WTL CString 的今生前世
    msvcprt.lib(MSVCP90.dll) : error LNK2005:已经在libcpmtd.lib(xmutex.obj) 中定义
    关于Windows内存的一些参考文章
    Windows访问令牌相关使用方法
  • 原文地址:https://www.cnblogs.com/lccyb/p/9431352.html
Copyright © 2020-2023  润新知