post 问题求教

2017-12-17 22:59:25 +08:00
 olaloong
用 Fiddler 抓的 post 包中有如下数据,这种数据该怎么用 post 提交?也就是 urllib.request.Request(url, data,header)的 data 该怎么构造?求大佬解答~

************从以下开始*********
-----------------------------7e11614f10de
Content-Disposition: form-data; name="token"

f91aa2948c4ab9bf80b17f9c6a3984ef
-----------------------------7e11614f10de
Content-Disposition: form-data; name="cbi.submit"

1
-----------------------------7e11614f10de
Content-Disposition: form-data; name="tab.network.TEST"

advanced
-----------------------------7e11614f10de
Content-Disposition: form-data; name="cbid.network.TEST._fwzone"

-
-----------------------------7e11614f10de
Content-Disposition: form-data; name="cbid.network.TEST._fwzone.newzone"


-----------------------------7e11614f10de
Content-Disposition: form-data; name="cbi.cbe.network.TEST.type"

1
-----------------------------7e11614f10de
Content-Disposition: form-data; name="cbi.cbe.network.TEST.ifname_single"

1
-----------------------------7e11614f10de
Content-Disposition: form-data; name="cbid.network.TEST.ifname_single"

eth0.3
-----------------------------7e11614f10de
Content-Disposition: form-data; name="cbid.network.TEST.proto"

dhcp
*****************结束 省略部分数据,格式一样******
3018 次点击
所在节点    Python
11 条回复
slixurd
2017-12-17 23:46:11 +08:00
就是 multipart 而已,最简单的方式就是照抄.....
记得标记一下 7e11614f10de 这个字符串是 multipart 分隔符
Nioty
2017-12-18 00:27:59 +08:00
直接用 request_toolkit 这个库 好像是这个名字 你去搜搜
Kilerd
2017-12-18 00:36:24 +08:00
说了多少次。
找资料用 google
python 爬虫起码用 requests,不要用 urllib 了

简直要命啊,你们
swordspoet
2017-12-18 00:41:28 +08:00
@Kilerd 啊?我今天还用的 urllib,踩了好多个坑,难道跟库有关系?
just1
2017-12-18 02:35:55 +08:00
同#3,完全不懂的新手还是老老实实用 requests 吧,用 urllib 真的要命
jtsai
2017-12-18 06:59:57 +08:00
上传文件,就自动转这种
goofool
2017-12-18 08:43:10 +08:00
用 postman,可以自动给你转成 python 源码
chen2016
2017-12-18 09:07:59 +08:00
用 requests
xlui
2017-12-18 09:52:03 +08:00
为什么不先自己试试再来发帖呢?
vicvinc
2017-12-18 12:03:45 +08:00
form data append 前端这么做的,python 应该也有 form data 的生成库吧
olaloong
2017-12-18 12:56:10 +08:00
感谢各位大佬的指点,问题解决了,附上我的代码:

def modTEST():
url = 'http://192.168.1.1/cgi-bin/luci/admin/network/network/TEST'
data = {'token':(None,getToken()),
'cbi.submit':(None,'1'),
'tab.network.TEST':(None,'advanced'),
'cbid.network.TEST._fwzone':(None,'-'),
'cbid.network.TEST._fwzone.newzone':(None,''),
'cbi.cbe.network.TEST.type':(None,'1'),
'cbi.cbe.network.TEST.ifname_single':(None,'1'),
'cbid.network.TEST.ifname_single':(None,'eth0.3'),
'cbid.network.TEST.proto':(None,'dhcp'),
'cbid.network.TEST.hostname':(None,''),
'cbi.cbe.network.TEST.auto':(None,'1'),
'cbi.cbe.network.TEST.delegate':(None,'1'),
'cbid.network.TEST.delegate':(None,'1'),
'cbi.cbe.network.TEST.broadcast':(None,'1'),
'cbi.cbe.network.TEST.defaultroute':(None,'1'),
'cbid.network.TEST.defaultroute':(None,'1'),
'cbi.cbe.network.TEST.peerdns':(None,'1'),
'cbid.network.TEST.peerdns':(None,'1'),
'cbid.network.TEST.metric':(None,''),
'cbid.network.TEST.clientid':(None,''),
'cbid.network.TEST.vendorid':(None,''),
'cbid.network.TEST.macaddr':(None,'00:e0:4c:36:11:a1'),
'cbid.network.TEST.mtu':(None,''),
'cbi.apply':(None,'保存&应用')}
print(data)
res = requests.post(url, files=data, cookies={'sysauth': cookiesValue})
print(res.request.body)
print(res.request.headers)
res.encoding = 'utf8'
print(res.text)
restartFireWall()
return

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/415540

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX