我想使用Python 3.1发布这样的帖子(我只是在firefox上使用“copy as cURL”):
curl 'http://some.example.test/formulario.php?current_date=31%2F08%2F2015&Button_Insert=Include&ccsForm=apropriacao' -H 'Host: some.example.test' -H 'User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:39.0) Gecko/20100101 Firefox/39.0' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' -H 'Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3' -H 'Accept-Encoding: gzip, deflate' -H 'DNT: 1' -H 'Referer: http://some.example.test/formulario.php?current_date=31%2F08%2F2015&Button_Insert=Confirm&Button_Insert=Include' -H 'Cookie: PHPSESSID=ctbsuli3i6f6mivof2dv9mb036; SERVERID=X' -H 'Connection: keep-alive' -H 'Content-Type: application/x-www-form-urlencoded' --data 'TextBox3=OK&idservice=14&idactivity=16&idsistem=1&TextBox1=&idproject=9&TextBox2=100&Button_Insert=Include¤t_date=31%2F08%2F2015'
我在stackoverflow上进行了很多搜索,并且我制作了这段代码(只显示了必要的部分):
dataPostJson = {'TextBox3': 'OK', 'idservice': '14' etc}
params = json.dumps(dataPostJson).encode('utf8')
req = urllib.request.Request(url, data=params)
req.add_header('Host', 'some.example.test')
req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 5.1; rv:39.0) Gecko/20100101 Firefox/39.0')
...
req.add_header('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8')
response = urllib.request.urlopen(req)
即使使用response.getcode()== 200,POST也不会更改主机上的值。如果我尝试执行此cURL命令,则POST正常,因此问题不是主机。问题在于我的代码。
有人能给我一些线索吗?
编辑:
我想做的是: 1)使用我的凭据登录服务器 2)返回PHPSESSID和SERVERID 3)使用HTTP POST
将数据添加到服务器需要考虑的事项:当我登录login.php时,服务器已经给了我一个PHPSESSID和SERVERID。当我发布我的凭据{'登录':'...','密码':'...','sendButton':'buttonValue'}时,我不知道如何检查用户/密码是否正确发送
我可以看到,如果我通过浏览器登录,请使用PHPSESSID和SERVERID,并将它们替换为cURL命令,我可以将数据发送到服务器。但是,使用python,我没有得到同样的成功。
答案 0 :(得分:1)
我不确定我是否正确翻译了#34;从cUrl
请求到python requests
的所有内容,但请尝试关注(安装requests
包后)并让我知道结果:
import requests
url = 'http://some.example.test /formulario.php?current_date=31%2F08%2F2015&Button_Insert=Include&ccsForm=apropriacao'
headers = {
'Host':'some.example.test',
'User-Agent': 'Mozilla/5.0 (Windows NT 5.1; rv:39.0) Gecko/20100101 Firefox/39.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3',
'Accept-Encoding': 'gzip, deflate',
'DNT': '1',
'Referer': 'http://some.example.test/formulario.php?current_date=31%2F08%2F2015&Button_Insert=Confirm&Button_Insert=Include',
'Cookie': 'PHPSESSID=ctbsuli3i6f6mivof2dv9mb036; SERVERID=X',
'Connection': 'keep-alive',
'Content-Type': 'application/x-www-form-urlencoded',
}
payload = {
'TextBox3': 'OK',
'idservice': '14',
'idactivity': '16',
'idsistem': '1',
'TextBox1': '',
'idproject': '9',
'TextBox2': '100',
'Button_Insert': 'Include',
'current_date': '31%2F08%2F2015'
}
r = requests.post(url, data=payload, headers=headers)