Python:urllib2的multipart/form-data和代理
目标:写一个脚本,循环遍历一个代理列表,向我服务器上的一个PHP页面发送一个包含文件的POST请求,这个页面会计算送达时间。这个脚本其实没什么用,但我用它来学习urllib2。
问题:到目前为止,我已经能用Poster正确发送multipart/form-data格式的数据了,但我还不能通过代理发送,更别提使用一个循环的代理列表了。我尝试过用一个OpenerDirector和urllib2.ProxyHandler
,但我觉得Poster
自己定义了一个打开器来完成它的功能。
下面是用Poster发送multipart/form-data请求的代码。
import urllib2
from poster.encode import multipart_encode
from poster.streaminghttp import register_openers
fields = {"type": "image",
"fileup": open("/home/chaz/pictures/test.jpg", "rb")
}
register_openers() #I believe this is the key
datagen, headers = multipart_encode(fields)
request = urllib2.Request("http://foo.net", datagen, headers)
lastResponse = urllib2.urlopen(request).read()
如果能得到任何帮助,我将非常感激,因为我现在卡住了。
1 个回答
5
你可以在请求页面之前,像这样添加一个代理安装程序。
from urllib2 import ProxyHandler,build_opener,install_opener
PROXY="http://USERNAME:PASSWD@ADDRESS:PORT"
opener = build_opener(ProxyHandler({"http" : PROXY}))
install_opener(opener)