Python自动化 requests 库:发送 form-data 格式的 http 请求
背景
尝试用python语言的requests库,编写脚本登陆公司的APP。
遇到的问题
问题1:
将手机号、密码数据传入后,始终登陆不成功,经过与开发沟通后知道需要签名才能登陆。
问题2:
签名算法写好后仍然无法登陆成功。
通过后台日志发现是传入数据格式不正确导致的,公司的post接口入参方式为form-data , 而我是用json串的方式入参的。
解决方案中涉及到的知识点
1、签名时需要的时间戳
import timet = time.time()print (t) #原始时间数据print (int(t)) #秒级时间戳print (int(round(t * 1000))) #毫秒级时间戳print (int(round(t * 1000000))) #微秒级时间戳# 取出来的时间戳想验证时间是否正确,可以百度(https://tool.lu/timestamp/)在线时间戳工具转换看看
2、签名时需要的MD5加密
import hashlib
data = “待加密数据”
m = hashlib.md5(data)
Tips:
如遇报错:Unicode-objects must be encoded before hashing
解决方法:此处必须为encode,但是python3此处默认为unicode,所以修改如下:
hashlib.md5(data.encode(encoding=‘UTF-8’)).hexdigest()
注:编码方式有很多种,此处用UTF-8编码举例,实际中可按照编码不同自己选择
3、发送http请求时,以form-data的格式作为requests的参数
使用requests的requests_toolbelt模块 ,需要自行安装。
from requests_toolbelt import MultipartEncoder
import requestsm = MultipartEncoder(fields={'field0': 'value','field1': 'value','field2': ('文件名称', open('文件地址/file.py', 'rb'), 'text/plain')})r = requests.post('http://httpbin.org/post',data=m,headers={'Content-Type': m.content_type})
requests官方网站地址:https://www.osgeo.cn/requests/user/quickstart.html#more-complicated-post-requests
requests_toolbelt官方网站地址:https://toolbelt.readthedocs.io/en/latest/user.html
最终处理代码
Python自动化 requests 库:发送 form-data 格式的 http 请求相关推荐
- requests(一): 发送一个json格式的post请求
今天给一位同学解决post发送数据格式为json格式的请求,顺便确认一下问题归属. 背景: 用postman工具发送一个数据格式为json的请求,得到了服务器的响应. 用python的requests ...
- python通过requests库发送请求
文章目录 一.requests库 二.发送请求 1.发送get请求 2.传递url参数 (1)直接通过url传递 (2)通过字符串传递 (3)通过字典传递 3.发送post请求 (1)提交form表单 ...
- python的requests库发送携带上传文件的接口_python requests 库请求带有文件参数的接口实例...
python requests 库请求带有文件参数的接口实例 有些接口参数是一个文件格式,比如fiddler 抓包参数如下显示 这个接口的 form-data fiddler 显示的和不带文件参数的接 ...
- Python接口自动化-python使用requests库发送Get请求
python -Requests的用法官方文档: https://requests.readthedocs.io/zh_CN/latest/ Requests发送Get请求 import reques ...
- 【python接口自动化-requests库】【三】优化重构requests方法
一.重构post请求方法 上一张讲了如何使用requests库发送post请求,但是有时候,我们写脚本,不可能这么简单,代码完全不可复用,重复工作,那我们是不是可以想象,把我们的get,post请求, ...
- Python 的 requests 库的用法
Python爬虫利器一之Requests库的用法:http://cuiqingcai.com/2556.html Python利用Requests库写爬虫(一):http://www.jianshu. ...
- 接口测试 — 使用Requests库发送POST请求
POST请求用于向服务器提交数据,比如提交一个表单新建一个用户.或修改一个用户信息等操作. 对于POST请求,我们可以通过浏览器开发者工具或者其他外部工具来进行抓包,得到请求的URL.请求头(requ ...
- 【python】python爬虫requests库详解
1.安装:pip install requests 简介:Requests是一个优雅而简单的Python HTTP库,与之前的urllibPython的标准库相比,Requests的使用方式非常的简单 ...
- python爬虫requests库_python爬虫使用Requests库 - pytorch中文网
在入门教程中我们介绍了urllib库和urllib2的用法,同时我们了解一些爬虫的基础以及对爬虫有了基本的了解.其实在我们生产环境中,使用Request库更加方便与实用,同时我们这需要短短的几行代码就 ...
- python requests_一起看看Python之Requests库
1 / 写在前面的话 / 今天资源君带大家来看看Python的Requests库,这个库是基于urllib3所建立的,而且被人们称为人性化的库,因为它的代码量相比于urllib中的request少了 ...
最新文章
- 使用Python,OpenCV进行卡类型及16位卡号数字的OCR
- rust8G内存够不够用_Rust是如何做到内存安全的
- 实用代码---取得当前的年月日,当前的时分秒获得,周几和星期几获得
- Container Injection
- java为什么用工厂模式_为什么用简单工厂模式,而不是直接实例化对象
- Oracle SQL FAQ
- 2台电脑共享一套键盘鼠标
- Linux ping命令
- java long 区别_java中long和int的区别
- 洛克耶是如何发现氦元素的?
- 清北学堂模拟赛d3t6 c
- 快手双核心时代宣告结束,互联网“退休潮”还在继续?
- SPAN交换端口分析器
- Linux-mkfs.xfs
- 跨域(什么样的请求方式才叫跨域请求?)
- Photoshop——APP设计规范
- Android EditText 格式化手机号 xxx xxxx xxxx
- 广告拦截之Adblock Plus 安装
- 视频录制不清楚、模糊解决办法
- DataGrip初体验