Python:urllib2的multipart/form-data和代理

2 投票
1 回答
2063 浏览
提问于 2025-04-15 16:26

目标:写一个脚本,循环遍历一个代理列表,向我服务器上的一个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)

撰写回答