通过python request模块模拟手机提交企业微信表单问题

手机版填写页面如下
图片说明

然后我通过fiddler抓包,抓到提交链接,想通过post直接提交,但无奈一直提交不成功,抓到的信息如下

POST https://doc.weixin.qq.com/form/share?f=json HTTP/1.1
Host: doc.weixin.qq.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary0nQoOej921mBaAuX
Origin: https://doc.weixin.qq.com
Accept-Encoding: br, gzip, deflate
Cookie: tdoc_sid=AMM3UAAibUsGPjBvAHMwcQAA; tdoc_skey=1688851793715907&b7c983fede0c309d329c96609308ad43CAESIEL1u9VJLkQlZC9omVnIxuJVQVCuBYTg-fSIMv9AalvU; tdoc_vid=1688851793715907; xm_data_ticket=CAESIEL1u9VJLkQlZC9omVnIxuJVQVCuBYTg-fSIMv9AalvU; wwapp.cst=859E6EA21BC7EAB3813E67EC6C12CE47DDDC930F08AE69E8662155724C8A9420F72500E7234C7F6490CA8022487D0CE8; wwapp.deviceid=DD8736FD-BD47-4ECC-B248-F48206FED5AA; wwapp.st=ED137002C8A85B417465AD60BBB415DEF815E26B8879257C3D6F117515042789D5381AB23350D847250617FEE7E6B75F1C2A98F2D8E3A93F1C2535F85811E41F702F3A1E5BCE1A26FB49F0876C753743B7EE75D2B1A6BDBC020A21EAA0F47BF90AE9359F22114DD179A7813DEDE8F8C45EF6342D4BC9E26ECD97731097F7DFE85C5C369A818293CEB854E7A2E49A78E5FDD83A5DEBB100F52D6D0071CCFF2310; wwapp.vid=1688851793715907; xm_lang=zh-cn
Connection: keep-alive
Accept: application/json, text/plain, */*
User-Agent: Mozilla/5.0 (iPad; CPU OS 12_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 wxwork/3.0.7 MicroMessenger/7.0.1 Language/zh
Referer: https://doc.weixin.qq.com/
Content-Length: 1159
Accept-Language: zh-cn

------WebKitFormBoundary0nQoOej921mBaAuX
Content-Disposition: form-data; name="key"


------WebKitFormBoundary0nQoOej921mBaAuX
Content-Disposition: form-data; name="type"

3
------WebKitFormBoundary0nQoOej921mBaAuX
Content-Disposition: form-data; name="form_id"

ADQAfwd7AAk_ADQAfwd7-AkAAcALwY_AHMYglWYoEARE1584633600
------WebKitFormBoundary0nQoOej921mBaAuX
Content-Disposition: form-data; name="form_reply"

{"items":[{"question_id":1,"text_reply":"佛山","option_reply":[]},{"question_id":2,"text_reply":"2018094343138","option_reply":[]},{"question_id":3,"text_reply":"","option_reply":[2]},{"question_id":4,"text_reply":"","option_reply":[2]},{"question_id":5,"text_reply":"","option_reply":[1]},{"question_id":6,"text_reply":"","option_reply":[]},{"question_id":7,"text_reply":"","option_reply":[]},{"question_id":8,"text_reply":"","option_reply":[2]},{"question_id":9,"text_reply":"","option_reply":[2]}]}
------WebKitFormBoundary0nQoOej921mBaAuX
Content-Disposition: form-data; name="f"

json
------WebKitFormBoundary0nQoOej921mBaAuX
Content-Disposition: form-data; name="source"


------WebKitFormBoundary0nQoOej921mBaAuX--

上面的form reply字段就是要填的信息
代码应该怎么写

我是这样请求的
图片说明

实在想不通 错在哪里

2个回答

WebKitFormBoundary的内容是base64编码过的,你这里照着模仿就可以,这个是固定的

倒是Cookie,你要从服务器得到set-cookie然后再发回去。这个是你要调试和检查的。

weixin_43335392
巴啦啦拉粑粑 刚刚又手机提交了几次 发现每次提交的cookie都不一样 这样应该怎么处理
2 个月之前 回复
weixin_43335392
巴啦啦拉粑粑 我直接用手机提交时的cookie不行吗 不是通过cookie识别是谁提交的吗
2 个月之前 回复

这是multipart/form-data格式。除了头部长度字段不配置,其它要原样配置上去,特别是cookie和referer,然后数据体在已有基础上修改后(格式一定要正确),直接提交

UFO_SERIESOFSOFT
UFO_SERIESOFSOFT 回复巴啦啦拉粑粑: 登录信息获取有不同实现方案。要自动化的话,可以结合静默浏览器开发。这个细节不方便说明。另外一种是代理拦截。具体看你选择。特别是这类扫码验证的开发,有很多东西需要解决。你暂时先拦截后,使用一段时间,看有效期多长
2 个月之前 回复
weixin_43335392
巴啦啦拉粑粑 回复UFO_SERIESOFSOFT: 通过抓包 发现每次提交的cookie都不一样 跟时间长短没关系
2 个月之前 回复
weixin_43335392
巴啦啦拉粑粑 回复UFO_SERIESOFSOFT: 对于cookie 有什么好的思路解决吗?提交过程是这样的:首先要登录企业微信 然后点开一个里面自带的应用 填写好再点提交
2 个月之前 回复
weixin_43335392
巴啦啦拉粑粑 回复UFO_SERIESOFSOFT: 十分感谢 发现是r和rb的问题 最后就剩解决cookie问题
2 个月之前 回复
UFO_SERIESOFSOFT
UFO_SERIESOFSOFT 回复巴啦啦拉粑粑: https://www.iot2ai.top/cdn/test/test.py
2 个月之前 回复
weixin_43335392
巴啦啦拉粑粑 回复UFO_SERIESOFSOFT: 能否贴出具体python代码
2 个月之前 回复
UFO_SERIESOFSOFT
UFO_SERIESOFSOFT 回复巴啦啦拉粑粑: post请求不要使用files。files本身就是multipart/form-data,使用data,然后数据是body.txt内容
2 个月之前 回复
weixin_43335392
巴啦啦拉粑粑 回复UFO_SERIESOFSOFT: 我本身这段代码请求是没问题的吗 先不说cookie过期。我post之后不能得到你发的压缩包里面output的内容
2 个月之前 回复
UFO_SERIESOFSOFT
UFO_SERIESOFSOFT 回复巴啦啦拉粑粑: body.txt是数据,header.txt是头部,output是请求输出。 从返回数据可以知道,提交是成功了,但是cookie认证过期。更新头部cookie就可以继续请求
2 个月之前 回复
UFO_SERIESOFSOFT
UFO_SERIESOFSOFT 回复巴啦啦拉粑粑: https://www.iot2ai.top/cdn/test/test.zip
2 个月之前 回复
weixin_43335392
巴啦啦拉粑粑 回复UFO_SERIESOFSOFT: print了几次response.request.body 数据和我fiddler里面获取的格式一模一样 还是请求不成功
2 个月之前 回复
weixin_43335392
巴啦啦拉粑粑 回复UFO_SERIESOFSOFT: 我参考了网上的资料,用multipart格式重写了一遍数据,代码在上面。然后重新post,发现还是无法得到正确数据,麻烦看一下是代码问题,还是一楼说的那样cookie问题
2 个月之前 回复
UFO_SERIESOFSOFT
UFO_SERIESOFSOFT 不能那样定义payload的。multipart是按照\r\n来分隔数据。你要把那些换行换成转义符。multipart你按照那个分隔格式添加数据就行。你出问题就是代码哪种写法会导致数据实际出去不一样。你把拦截数据导出到文件,然后采用文件方式发送,保证\r\n正确,或者代码里面用转义符
2 个月之前 回复
weixin_43335392
巴啦啦拉粑粑 cookie和referer我都按照fiddler里面的照搬 但是数据格式应该怎么写
2 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐