背景

尝试用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 请求相关推荐

  1. requests(一): 发送一个json格式的post请求

    今天给一位同学解决post发送数据格式为json格式的请求,顺便确认一下问题归属. 背景: 用postman工具发送一个数据格式为json的请求,得到了服务器的响应. 用python的requests ...

  2. python通过requests库发送请求

    文章目录 一.requests库 二.发送请求 1.发送get请求 2.传递url参数 (1)直接通过url传递 (2)通过字符串传递 (3)通过字典传递 3.发送post请求 (1)提交form表单 ...

  3. python的requests库发送携带上传文件的接口_python requests 库请求带有文件参数的接口实例...

    python requests 库请求带有文件参数的接口实例 有些接口参数是一个文件格式,比如fiddler 抓包参数如下显示 这个接口的 form-data fiddler 显示的和不带文件参数的接 ...

  4. Python接口自动化-python使用requests库发送Get请求

    python -Requests的用法官方文档: https://requests.readthedocs.io/zh_CN/latest/ Requests发送Get请求 import reques ...

  5. 【python接口自动化-requests库】【三】优化重构requests方法

    一.重构post请求方法 上一张讲了如何使用requests库发送post请求,但是有时候,我们写脚本,不可能这么简单,代码完全不可复用,重复工作,那我们是不是可以想象,把我们的get,post请求, ...

  6. Python 的 requests 库的用法

    Python爬虫利器一之Requests库的用法:http://cuiqingcai.com/2556.html Python利用Requests库写爬虫(一):http://www.jianshu. ...

  7. 接口测试 — 使用Requests库发送POST请求

    POST请求用于向服务器提交数据,比如提交一个表单新建一个用户.或修改一个用户信息等操作. 对于POST请求,我们可以通过浏览器开发者工具或者其他外部工具来进行抓包,得到请求的URL.请求头(requ ...

  8. 【python】python爬虫requests库详解

    1.安装:pip install requests 简介:Requests是一个优雅而简单的Python HTTP库,与之前的urllibPython的标准库相比,Requests的使用方式非常的简单 ...

  9. python爬虫requests库_python爬虫使用Requests库 - pytorch中文网

    在入门教程中我们介绍了urllib库和urllib2的用法,同时我们了解一些爬虫的基础以及对爬虫有了基本的了解.其实在我们生产环境中,使用Request库更加方便与实用,同时我们这需要短短的几行代码就 ...

  10. python requests_一起看看Python之Requests库

    1 / 写在前面的话 /  今天资源君带大家来看看Python的Requests库,这个库是基于urllib3所建立的,而且被人们称为人性化的库,因为它的代码量相比于urllib中的request少了 ...

最新文章

  1. 使用Python,OpenCV进行卡类型及16位卡号数字的OCR
  2. rust8G内存够不够用_Rust是如何做到内存安全的
  3. 实用代码---取得当前的年月日,当前的时分秒获得,周几和星期几获得
  4. Container Injection
  5. java为什么用工厂模式_为什么用简单工厂模式,而不是直接实例化对象
  6. Oracle SQL FAQ
  7. 2台电脑共享一套键盘鼠标
  8. Linux ping命令
  9. java long 区别_java中long和int的区别
  10. 洛克耶是如何发现氦元素的?
  11. 清北学堂模拟赛d3t6 c
  12. 快手双核心时代宣告结束,互联网“退休潮”还在继续?
  13. SPAN交换端口分析器
  14. Linux-mkfs.xfs
  15. 跨域(什么样的请求方式才叫跨域请求?)
  16. Photoshop——APP设计规范
  17. Android EditText 格式化手机号 xxx xxxx xxxx
  18. 广告拦截之Adblock Plus 安装
  19. 视频录制不清楚、模糊解决办法
  20. DataGrip初体验

热门文章

  1. RecyclerView实现广告轮播图(一)
  2. 《南方周末》今日发文揭开了这场抢票插件阻击战的内幕
  3. 友情链接模块phpcms
  4. 什么是前端开发工程师?
  5. 支付行业架构流程梳理
  6. Hoo Smart Chain 万物生长计划火热报名中,可视化公链迸发勃勃生机
  7. SDUT OJ温度转换
  8. 如何把自己打造成为一名金领架构师-前言
  9. robots协议文件的写法及语法属性解释
  10. 列车停站方案_基于节点分级的高速铁路列车停站方案设计策略