在Python中模拟HTTP发布请求

| 我正在尝试在PHP页面中发送HTTP发布请求。我尝试了Java和Python(这是我第一次使用Python),我可以说它们对我来说都差不多。实际上,它们仅对我的测试PHP页面有效。由于某些原因,它们都不适合我的目标PHP页面。 我认为,可能导致邮寄请求失败的两个原因可能是: 可能会发生某种重定向 服务器需要一个适当的cookie 接下来,您将找到目标页面的HTML代码和应该运行的Python代码。 HTML:
<form id=\"m713a0moduleform_2\" method=\"post\" action=\"http://www.X.Y/index.php?page=login\" class=\"cms_form\">
<input type=\"hidden\" name=\"mact\" value=\"FrontEndUsers,m713a0,do_login,1\" />
<input type=\"hidden\" name=\"m713a0returnid\" value=\"794\" />
<input type=\"hidden\" name=\"page\" value=\"794\" />
<input type=\"hidden\" name=\"m713a0form\" value=\"login\" />
<input type=\"text\" class=\"cms_textfield\" name=\"m713a0feu_input_username\" id=\"m713a0feu_input_username\" value=\"\" size=\"10\" maxlength=\"40\" />
<input type=\"password\" class=\"cms_password\" name=\"m713a0feu_input_password\" value=\"\" size=\"10\" maxlength=\"10\" />
<input class=\"cms_submit\" name=\"m713a0feu_btn_login\" id=\"m713a0feu_btn_login\" value=\"Sign in\" type=\"submit\" class=\"signin_button\" />
</form>
蟒蛇:
import urllib
params = urllib.urlencode({\"mact\":\"FrontEndUsers,m713a0,do_login,1\",\"m713a0returnid\":\"18\",\"page\":\"18\",\"m713a0form\":\"login\",\"m713a0feu_input_username\":\"Z\",\"m713a0feu_input_password\":\"W\",\"m713a0feu_btn_login\":\"Sign in\"})
f = urllib.urlopen(\"http://www.X.Y/index.php?page=login\", params)
print f.read()
我收到以下错误。有任何想法吗? 追溯(最近一次通话):   文件\“ / X / Y / Z / NewPythonProject2 / src / newpythonproject2.py \”,第34行,在     从paste.proxy导入TransparentProxy ImportError:没有名为粘贴的模块     
已邀请:
我使用paste.proxy.TransparentProxy和webob.Request ... 您需要安装库
easy_install webob webtest paste
要么
pip install webob webtest paste
然后在脚本中...
from paste.proxy import TransparentProxy
from webob import Request
proxy_app = TransparentProxy()    
request = Request.blank(\"http://pathto/your_file.php\", POST=dict(field_a=value_a,field_b=value_b))

response = request.get_response(proxy_app)
如果您需要做一些更奇特的事情,例如在请求之间维护cookie(例如将cookie传回),则可以使用WebTest,而只需进行一些更改
from paste.proxy import TransparentProxy
from webtest import TestApp
app = TestApp(TransparentProxy())    
app.post(\"http://pathto/your_file.php\", dict(field_a=value_a,field_b=value_b))
    

要回复问题请先登录注册