requests 提交form-data

一个网站的数据是form-data形式提交的


image.png

直接post会失败,实现

def get_after_data(before_data):
    headers = {
        'Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundaryuILbHAxyzWMIAXn2'
    }
    params = OrderedDict([
        ("type", (None, 'jyzs')),
        ("val[]", (None, 1111111)),
        ("val[]", (None, None)),
    ])
    res = requests.post('http://ajuntools.hz.taeapp.com/mainIndex/getdata.html', files=params).json()

请求成功,返回结果为:

{"data":["30187443"],"code":"200","type":"jyzs"}

第二种方式,使用urllib3的encode_multipart_formdata方法

from collections import OrderedDict
from urllib3 import encode_multipart_formdata

params = OrderedDict([("username", (None, '130533193203240022', 'multipart/form-data')),
                      ("password", (None, 'qwerqwer', 'multipart/form-data')),
                      ('captchaId', (None, 'img_captcha_7d96b3cd-f873-4c36-8986-584952e38f20', 'multipart/form-data')),
                      ('captchaWord', (None, 'rdh5', 'multipart/form-data')),
                      ('_csrf', (None, '200ea95d-90e9-4789-9e0b-435a6dd8b57b', 'multipart/form-data'))])
m = encode_multipart_formdata(params, boundary='----WebKitFormBoundaryKPjN0GYtWEjAni5F')

print(m[0])

输出结果:

b'------WebKitFormBoundaryKPjN0GYtWEjAni5F\r\nContent-Disposition: form-data; name="username"\r\nContent-Type: multipart/form-data\r\n\r\n130533193203240022\r\n------WebKitFormBoundaryKPjN0GYtWEjAni5F\r\nContent-Disposition: form-data; name="password"\r\nContent-Type: multipart/form-data\r\n\r\nqwerqwer\r\n------WebKitFormBoundaryKPjN0GYtWEjAni5F\r\nContent-Disposition: form-data; name="captchaId"\r\nContent-Type: multipart/form-data\r\n\r\nimg_captcha_7d96b3cd-f873-4c36-8986-584952e38f20\r\n------WebKitFormBoundaryKPjN0GYtWEjAni5F\r\nContent-Disposition: form-data; name="captchaWord"\r\nContent-Type: multipart/form-data\r\n\r\nrdh5\r\n------WebKitFormBoundaryKPjN0GYtWEjAni5F\r\nContent-Disposition: form-data; name="_csrf"\r\nContent-Type: multipart/form-data\r\n\r\n200ea95d-90e9-4789-9e0b-435a6dd8b57b\r\n------WebKitFormBoundaryKPjN0GYtWEjAni5F--\r\n'

第二种方法较为完善,可以自由添加分隔符

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,709评论 1 45
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,589评论 1 32
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 7,265评论 0 17
  • AJAX 原生js操作ajax 1.创建XMLHttpRequest对象 var xhr = new XMLHtt...
    碧玉含香阅读 3,523评论 0 7
  • 01 早高峰的马路上。 人行道旁,红灯转绿灯还有5秒。 一个小伙儿早已迈开步子,今天的会议很重要,千万不能迟到。 ...
    火炉鲁鲁阅读 964评论 0 4

友情链接更多精彩内容