当前位置: 首页 > news >正文

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

转载于:https://www.cnblogs.com/lccyb/p/9431352.html

相关文章:

  • 关于VS2017编译UE4项目,输出窗口有乱码的解决方案
  • Java全栈程序员之01:做个Linux下的程序猿
  • 如何靠谱地查到Tomcat的版本
  • Maven根据pom文件中的Profile标签动态配置编译选项
  • openlayers+geoserver+wms实现空间查询,属性查询
  • 关于 HandlerMethodArgumentResolver 类 以及 WebArgumentResolver 类 自定义解析参数
  • vue.js有什么用,是用来做什么的(整理)
  • Redis字符串类型内部编码剖析
  • HAPkendoUI的Excle导出
  • js 和 css动画
  • [IOI2007 D1T1]Miners 矿工配餐
  • 10.监视SQL Server性能
  • QEMU增量镜像制作
  • SpringBoot 核心模块原理剖析
  • Confluence 6 的小型文字档案(Cookies)
  • Hibernate最全面试题
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • JavaScript类型识别
  • Java程序员幽默爆笑锦集
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • MaxCompute访问TableStore(OTS) 数据
  • Octave 入门
  • PHP面试之三:MySQL数据库
  • socket.io+express实现聊天室的思考(三)
  • 基于Android乐音识别(2)
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 算法---两个栈实现一个队列
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 跳前端坑前,先看看这个!!
  • 网络应用优化——时延与带宽
  • Semaphore
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #DBA杂记1
  • #pragma 指令
  • #考研#计算机文化知识1(局域网及网络互联)
  • #每日一题合集#牛客JZ23-JZ33
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (3)llvm ir转换过程
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (全注解开发)学习Spring-MVC的第三天
  • (十六)串口UART
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)http协议
  • (转)scrum常见工具列表
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .NET Core 和 .NET Framework 中的 MEF2
  • .Net MVC4 上传大文件,并保存表单
  • @hook扩展分析
  • @property括号内属性讲解
  • @Resource和@Autowired的区别
  • [ACL2022] Text Smoothing: 一种在文本分类任务上的数据增强方法