Python中模拟http请求时使用代理

  在某些情况下我们有必要设置我们请求时的代理服务器,在哪些情况下自己决定,那么如何设置http请求时的代理呢?

  与Python自动处理cookie一样,使用urllib2.build_opener来进行构建。

 1 import urllib2
 2
 3 enable_proxy = True
 4 proxy_handler = urllib2.ProxyHandler({"http" : ‘http://192.168.1.235:8080‘})
 5 null_proxy_handler = urllib2.ProxyHandler({})
 6
 7 if enable_proxy:
 8     opener = urllib2.build_opener(proxy_handler)
 9 else:
10     opener = urllib2.build_opener(null_proxy_handler)
11
12 urllib2.install_opener(opener)

  使用 urllib2.install_opener() 会设置 urllib2 的全局 opener,后面使用起来非常方便

1 req=urllib2.Request(url,encode_post_data(post_data))
2 opener.open(req)
时间: 2024-11-08 19:54:54

Python中模拟http请求时使用代理的相关文章

C# .Net FrameWork3.5中异步HTTP请求时,由于安全协议的问题System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)方法抛出“基础连接已经关闭: 发送时发生错误”的解决办法

现象描述: C# .Net FrameWork3.5中异步HTTP请求时,由于安全协议的问题System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)方法抛出“基础连接已经关闭: 发送时发生错误”. 原因分析: 大多数情况下是由于客户端所设置的HTTP访问请求的安全协议不符合服务器端的安全协议要求.比如,NASA提供瓦片服务的http://worldwind25.arc.nasa.gov/wms?service=WMS&v

Python socket模拟HTTP请求

0x00 起 最近在做一个对时间要求比较高的扫描器,需要封装一下SOCKET模拟HTTP发包的一些常用函数.简单的说,就是重写一下requests中的get.post方法. 今天在写的时候,遇到一枚很奇怪的问题,对同一个URL,POST请求能正常返回信息,而一旦切到GET,socket time out. 伪代码如下: get_str = 'GET %s HTTP/1.1\r\nHost: %s\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64)

Python 中实现装饰器时使用 @functools.wraps 的理由

Python 中使用装饰器对在运行期对函数进行一些外部功能的扩展.但是在使用过程中,由于装饰器的加入导致解释器认为函数本身发生了改变,在某些情况下--比如测试时--会导致一些问题.Python 通过 functool.wraps 为我们解决了这个问题:在编写装饰器时,在实现前加入 @functools.wraps(func) 可以保证装饰器不会对被装饰函数造成影响.比如,在 Flask 中,我们要自己重写 login_required 装饰器,但不想影响被装饰器装饰的方法,则 login_req

Python中读取文件输出时在头部输出\ufeff

问题出现: 在我测试python中的文本文件的读取与写入时,用到了字典对象来存储读出的数据. 1 std_data = dict() 2 with open(sys.argv[1], encoding='UTF-8') as fp: 3 alldata = fp.readlines() 4 for item in alldata: 5 no, name = item.rstrip('\n').split('.') 6 std_data[no] = name 7 print(std_data) 在

Python中执行sql脚本时GO语句出错问题

sql脚本: --创建链接服务器 (其中db2server是DB2的ip地址或服务器名)exec sp_addlinkedserver 'srv_lnk', '', 'SQLOLEDB','10.138.60.94'exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','123456' Go--数据导入(表B存在) --Insert into srv_lnk.sys.Estamp.EstampConfig(field1,field2)INSE

python中模拟进度条

文件的write方法并不是直接将文件写入硬盘,而是先写入缓存,等缓存写满等条件满足时再写入磁盘. 有时为了保证数据安全性,需要调用flush来强制数据落盘.同理在标准输出sys.stdout中也有flsuh方法,例如使用sys.stdout来模拟进度条: import sys,time for i in range(20): sys.stdout.write("#") sys.stdout.flush() time.sleep(0.5)

python中模拟C#对应Linq的一些操作

也可以说是.net的Linq操作.python版本如果低于3.0不支持lambda,只能单独写函数传参,比较麻烦 先看看函数作为参数有没有问题: def TestFunc(): print "!!!" def Foo(func): func() def main(): Foo(TestFunc) #print !!! 经过测试打印出了"!!!",看来还是支持的 模拟一下linq的FirstOrDefault: def FirstOrDefault(collectio

C#模拟Http请求时出现 基础连接已经关闭 未能为 SSLTLS 安全通道建立信任关系

//解决方法: //引入命名空间: using System.Security.Cryptography.X509Certificates; using System.Net.Security; //定义方法: private static bool RemoteCertificateValidate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error) { //为了通过证书验证,总是返回true

Python中print函数输出时的左右对齐问题

为了将print函数输出的内容对齐,笔者在http://www.jb51.net/article/55768.htm中找到了左右对齐的方法.整理如下: 一.数值类型(int.float) #  %d.%f是占位符>>> a = 3.1415926>>> print("%d"%a)    #%d只能输出整数,int类 3>>> print("%f"%a) #%f输出浮点数 3.141593>>>