http协议本身的原始方法不支持multipart/form-data请求,这个请求由原始方法演变而来的。

multipart/form-data的基础方法是post,也就是说是由post方法来组合实现的,与post方法的不同之处:请求头,请求体。

multipart/form-data的请求头必须包含一个特殊的头信息:Content-Type,且其值也必须规定为multipart/form-data,同时还需要规定一个内容分割符用于分割请求体中的多个post的内容,如文件内容和文本内容自然需要分割开来,不然接收方就无法正常解析和还原这个文件了。

具体的头信息如下:

Content-Type: multipart/form-data; boundary=${bound}

实例:

import os, random, sys, requests

from requests_toolbelt.multipart.encoder import MultipartEncoder

url = 'http://127.0.0.1/sendmsg'

argvstr = sys.argv[1:]

argv_dict = {}

for argv in argvstr :

argv = str(argv).replace("\r\n" , "")

DICT = eval(argv)

argv_dict.update(DICT)

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0',

'Referer': url

}

multipart_encoder = MultipartEncoder(

fields={

'username': argv_dict['username'],

'pwd': argv_dict['pwd'],

'type': 'txt',

'friendfield': argv_dict['friendfield'],

'friend': argv_dict['friend'],

'content': argv_dict['content'],

'file': (os.path.basename(argv_dict['file']) , open(argv_dict['file'], 'rb'), 'application/octet-stream')

#file为路径

},

boundary='-----------------------------' + str(random.randint(1e28, 1e29 - 1))

)

headers['Content-Type'] = multipart_encoder.content_type

#请求头必须包含一个特殊的头信息,类似于Content-Type: multipart/form-data; boundary=${bound}

r = requests.post(url, data=multipart_encoder, headers=headers)

print(r.text)

#注意,不要设置cookies等其他参数,否则会报错

# 例子/usr/local/python36/bin/python3 /opt/lykchat/test_upload.py "{'username':'lykchat','pwd':'123456','type':'img','friendfield':'1','friend':'xxxx','content':'恭喜发财','file':'/root/b.jpg'}"

#等同于curl -F "file=@/root/a" 'http://127.0.0.1/sendmsg?username=lykchat&pwd=123456&type=img&friendfield=1&friend=xxxx&content=恭喜发财'

以上这篇Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

python模拟浏览器上传文件_Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)...相关推荐

  1. python怎么登录微博并发微博_Python模拟登陆万能法-微博|知乎

    Python模拟登陆让不少人伤透脑筋,今天奉上一种万能登陆方法.你无须精通HTML,甚至也无须精通Python,但却能让你成功的进行模拟登陆.本文讲的是登陆所有网站的一种方法,并不局限于微博与知乎,仅 ...

  2. mongodb python 存文件_Python保存MongoDB上的文件到本地的方法介绍

    本文实例讲述了Python保存MongoDB上的文件到本地的方法.分享给大家供大家参考,具体如下: MongoDB上的文档通过GridFS来操作,Python也可以通过pymongo连接MongoDB ...

  3. python判断网页密码加密方式_Python模拟网页中javascript加密与验证的相关处理

    在做网络爬虫的过程中你是否一些在这方面做的很好的网站,你向知道他是通过哪些相关的操作做出这么好的网站,以下就是文章的相关内容的具体介绍,希望你浏览完下面的内容会有所收获.Python模拟网页的java ...

  4. python编写请求参数带文件_python requests 库请求带有文件参数的接口实例

    有些接口参数是一个文件格式,比如fiddler 抓包参数如下显示 这个接口的 form-data fiddler 显示的和不带文件参数的接口有明显区别,显示的不是简单的键值对,所以我们也不能只通过 d ...

  5. python高级教程html文件_Python之html转docx文件高级用法

    说到word文档转html的,网上一搜一大把,各种在线word转html页面,使用起来也方便.但是在实际项目中要使用的话,需要自己开发,这里就提供一个简单的方法. 后缀 .doc 和 .docx 都是 ...

  6. python怎么调用文件_python 中如何引用头文件

    python 引入 导入 自定义模块, python 引入 导入 外部文件 python 引入 导入 自定义模块, python 引入  导入 外部文件 项目中想使用以前的代码,或者什么样的需求致使你 ...

  7. python pandas 处理相同标题的csv文件_Python使用pandas处理CSV文件的实例讲解

    Python中有许多方便的库可以用来进行数据处理,尤其是Numpy和Pandas,再搭配matplot画图专用模块,功能十分强大. CSV(Comma-Separated Values)格式的文件是指 ...

  8. python读取excel内容和写入_Python读取和写入Excel文件

    制作Excel表 常用方法说明 Workbook类 Workbook类创建一个XlswWrite的Workbook对象,相当于创建一个excel表 And_worksheet()用来创建工作表,默认为 ...

  9. python通过路径找文件_Python寻找路径和查找文件路径的示例

    怎么python系统的查找路径要是爱你爱的少些,话就可以说的多些了.简?奥斯汀 ⒈单击开始,在搜索框输入cmd,然后回车,就会出现命令行界面框后,在里面输入命令python后回车,安装成功的话就可以看 ...

最新文章

  1. 数据库中日期大小的判断
  2. 设置Flex toolTip的样式
  3. 如何设计一门语言(一)——什么是坑(a)
  4. Delphi 中自定义异常及异常处理的一般方法
  5. 不认识java代码_程序员进阶:优雅的代码对于一个架构师的重要性
  6. Linux 文件的复制
  7. [多校联考-西南大学附中]切面包(线段树/概率与期望)+ Slow Path Finding Algorithm(拓扑排序/DP)+ 分数转化(数论)
  8. java 整数相乘_Java中两个int相乘的结果是怎么算的?
  9. 一些临时邮箱服务网站
  10. Refinement Network新框架
  11. Apache Flink如何处理背压
  12. Python小工具:批量给视频加水印
  13. 服务器系统崩溃真是惊险刺激,guanjunjc
  14. MapReduce解决乘用车辆和商用车辆的销售数据分析
  15. LeetCode算法题-镜面反射(Mirror Reflection)
  16. 什么是模块化?模块化的好处?
  17. 重庆微企获5000万元风投-平板电脑和手机菜单系统-家庭智能信息终端
  18. 葫芦灸,拥抱葫芦灸走过的日子,不负韶华。
  19. 在WIN2003安装TD8,问题汇总
  20. 硬件知识:电机驱动芯片——DRV8833、TB6612、A4950、L298N的详解与比较

热门文章

  1. Unity 之 UGUI Dropdown组件使用简析
  2. LeetCode137.只出现一次的数字
  3. mysql查询,插入的相关注意
  4. 关于126、163 网易邮箱发送邮件示例
  5. iOS常用框架推荐(超好用)
  6. 为什么e的x次方的导数等于它自身
  7. yolov5直接调用zed相机实现三维测距(python)
  8. 用pandas进行数据分析:结合JData ”用户购买时间预测“数据分析实例(三)
  9. 【重磅来袭:系列一】史上最全运营商部署NB-IoT的系列问题清单和联盟答案
  10. java计算两条线夹角_Android获取两条线之间的夹角度数