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
python2.7用socks和socket设置代理的更多相关文章
- python3给socket模块设置代理
最近需要在公司学习socket编程,但是不能直接连接外网,需要设置一个代理才能正常访问.报错示例: import socket def blocking(wd): sock = socket.sock ...
- java中设置代理的两种方式
1 前言 有时候我们的程序中要提供可以使用代理访问网络,代理的方式包括http.https.ftp.socks代理.比如在IE浏览器设置代理. 那我们在我们的java程序中使用代理呢,有如下两种方式. ...
- DNS隧道之DNS2TCP实现——dns2tcpc必须带server IP才可以,此外ssh可以穿过墙的,设置代理上网
我自己的命令: server端: dns2tcpd -F -d 1 -f ./dns2tcpd.conf 输出: 09:08:59 : Debug options.c:97 Add resource ...
- 将 Tor socks 转换成 http 代理
你可以通过不同的 Tor 工具来使用 Tor 服务,如 Tor 浏览器.Foxyproxy 和其它东西,像 wget 和 aria2 这样的下载管理器不能直接使用 Tor socks 开始匿名下载,因 ...
- crawler_java应用集锦9:httpclient4.2.2的几个常用方法,登录之后访问页面问题,下载文件_设置代理
在工作中要用到android,然后进行网络请求的时候,打算使用httpClient. 总结一下httpClient的一些基本使用. 版本是4.2.2. 使用这个版本的过程中,百度很多,结果都是出现的o ...
- 【Android】给Android Studio设置代理
先打开我们的Android Studio,点击工具栏的file下的settings,如下图 之后再搜索框上面输入Proxy,然后按第四步提示点击,如下图 之后就进入了设置代理的界面了,如下图 默认情况 ...
- android studio设置代理更新
我们都知道Android Studio是基于IDEA开发的,而我们写的每一个程序又都是有Gradle构建的,Gradle的优点可以说是很多,被很多程序员夸得没边,但是它有一个特点还是值得我们注意的.我 ...
- java中网络设置代理
三种方式: 1.JVM启动时加参数设置代理 在系统启动时,使用-D项来设置代理. 例如: java -Dhttp.ProxyHost="proxyUrl" -Dhttp.Proxy ...
- Android Studio设置代理,解决检查更新gradle信息的问题
Android Studio是基于JetBrains公司的IDEA开发的,Android Studio里的项目都是由Gradle构建的,Gradle集合了Ant和Maven的优点,又解决了他们的缺点, ...
随机推荐
- ISE和modelsim的配合
modelsim好强呀,我在ISE中在编写时clk不小心把input写成了inout,ISE也没有给我报错:在modelsim中仿真时提示出这个错误了!
- vue------反响代理
//测试项目 https://i.cnblogs.com/Files.aspx
- C#程序员装机必备软件及软件地址
装机必备 Visio2010 下载 http://gd.ddooo.com/visio2010_12530.rar Office 安装包 http://xz.cncrk.com:8080/soft/k ...
- 深入浅出系列第一篇(设计模式之单一职责原则)——从纯小白到Java开发的坎坷经历
各位看官大大们,晚上好.好久不见,我想死你们了... 先说说写这个系列文章的背景: 工作了这么久了,每天都忙着写业务,好久没有好好静下心来好好总结总结了.正好这段时间公司组织设计模式的分享分,所以我才 ...
- [转载]Android SDK 离线文档 (api 20)(升级至api 23)
原文地址:SDK 离线文档 (api 20)(升级至api 23)">Android SDK 离线文档 (api 20)(升级至api 23)作者:leechenhwa Android ...
- socket网络
Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页.QQ ...
- C#winform将dll封装到exe当中
我们在在winform程序时经常会用到外部dll,正常情况下,我的exe运行文件旁就需要这些dll文件相伴,总感觉不爽~~特别是要把软件给别人的时候,如果DLL比较多或者没有放在同一个地方,那麻烦大了 ...
- Java bean常见映射工具分析和比较
1. 概述 日常Java开发项目中,我们经常需要将对象转换成其他形式的对象,因此我们需要编写映射代码将对象中的属性值从一种类型转换成另一种类型. 进行这种转换除了手动编写大量的get/set代码,还可 ...
- python学习笔记1 -- 函数式编程之高阶函数 使用函数作为返回值
使用函数作为返回值,看起来就很高端有木有,前面了解过函数名本身就是一个变量,就比如abs()函数,abs只是变量名,而abs()才是函数调用,那么我们如果把ads这个变量作为返回值返回会怎么样呢,这就 ...
- HTML <html> manifest 属性
实例 带有缓存 manifest 的 HTML 文档(用于离线浏览): <!DOCTYPE HTML><html manifest="demo.appcache" ...