热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python接口自动化(十一)发送post【data】(详解)(转载)

转载自:https:www.cnblogs.comdu-hongp10600452.html简介前面登录博客园的是传json参数,由于其登录机制的改变没办法演示,然而在工作中有些登

转载自:https://www.cnblogs.com/du-hong/p/10600452.html

简介 

  前面登录博客园的是传 json 参数,由于其登录机制的改变没办法演示,然而在工作中有些登录不是传 json 的,如 jenkins 的登录,这里小编就以jenkins 登录为案例,传 data 参数,给各位童鞋详细演练一下。

一、登录jenkins抓包

1、浏览器上登录jenkins,输入账号和密码,点击登录

技术分享图片

 

2、fiddler抓包工具抓取jenkins登录的过程

技术分享图片

3、可以清楚地看到这个body参数并不是json格式,是key=value格式,也就是前面介绍post请求四种数据类型里面的第一种

技术分享图片

 

二、请求头部

1.上面抓包已经知道body的数据类型了,那么头部里面Content-Type类型也需要填写对应的参数类型

技术分享图片

三、实现登录

1、登录实例代码如下:

注意:此处的登录URL是fiddler抓包抓到的,而并非是浏览器的URL地址,如果你复制的是浏览器的地址,就会报错了


技术分享图片

1 # coding:utf-8
2 import requests
3 # 先打开登录首页,获取部分session
4 url = "http://localhost:8080/jenkins/j_acegi_security_check"
5 headers = {
6 "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"
7 } # get方法其它加个ser-Agent就可以了
8 d = {"j_username": "admin",
9 "j_password": "111111",
10 "from": "",
11 "Submit": u"登录",
12 "remember_me": "on"
13 }
14 s = requests.session()
15 r = s.post(url, headers=headers, data=d)
16 print (r.content.decode(‘utf-8‘)

)

技术分享图片

2、运行后的结果如下:

技术分享图片

3、为了更好地查看你可以将其拷贝到记事本,保存,然后将文件后缀名修改成.html或者.htm,用浏览器打开查看

技术分享图片

 

四、判断登录是否成功

1.首先这个登录接口有重定向,看左边会话框302,那登录成功的结果看最后一个200就行

技术分享图片

2.返回的结果并不是跟博客园一样的json格式,返回的是一个html页面 

五、判断登录成功

1.判断登录成功,可以抓取页面上的关键元素,比如:账号名称admin,注销按钮

技术分享图片

 

2.通过正则表达式提出这2个关键字

技术分享图片

 六、参考代码



技术分享图片

1 # coding:utf-8
2 import requests
3 # 先打开登录首页,获取部分session
4 url = "http://localhost:8080/jenkins/j_acegi_security_check"
5 headers = {
6 "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"
7 } # get方法其它加个ser-Agent就可以了
8 d = {"j_username": "admin",
9 "j_password": "111111",
10 "from": "",
11 "Submit": u"登录",
12 "remember_me": "on"
13 }
14 s = requests.session()
15 r = s.post(url, headers=headers, data=d)
16 #print (r.content.decode(‘utf-8‘))
17 # 正则表达式提取账号和登录按钮
18 import re
19 t = re.findall(r‘(.+?)‘, r.content.decode(‘utf-8‘)) # 用python3的这里r.content需要解码
20 print (t[0])
21 print (t[1])

技术分享图片


七、遇到问题可解决方法


注意这里边遇到的问题python3遇到的问题,或许python2没有这些问题,笔者没有实践,有兴趣的自己可以试一下

1、如果打印content,没有加后边的.decode(‘utf-8‘),会出现乱码,解决方法加上即可。

技术分享图片

2、如果正则提取没有加.decode(‘utf-8‘),会报如下错误,解决方案也是加上即可

技术分享图片

八、小结

  jenkins 代码模拟登陆到这里就结束,实际工作中的登录接口也就是这些,记住万变不离其宗,举一反三。


推荐阅读
  • 为何Compose与Swarm之后仍有Kubernetes的诞生?
    探讨在已有Compose和Swarm的情况下,Kubernetes是如何以其独特的设计理念和技术优势脱颖而出,成为容器编排领域的领航者。 ... [详细]
  • 3DSMAX制作超现实的体育馆模型
    这篇教程是向脚本之家的朋友介绍3DSMAX制作超现实的体育馆模型方法,教程制作出来的体育馆模型非常地不错,不过教程有点难度,需要有一定基础的朋友学习,推荐到脚本之家,喜欢的朋友可 ... [详细]
  • 本文介绍了如何在AngularJS应用中使用ng-repeat指令创建可单独点击选中的列表项,并详细描述了实现这一功能的具体步骤和代码示例。 ... [详细]
  • 在项目冲刺的最后一天,团队专注于软件用户界面的细节优化,包括调整控件布局和字体设置,以确保界面的简洁性和用户友好性。 ... [详细]
  • JavaScript 页面卸载事件详解 (onunload)
    当用户从页面离开时(如关闭页面或刷新页面),会触发 onunload 事件,此时可以执行预设的脚本。需要注意的是,不同的浏览器对 onunload 事件的支持程度可能有所不同。 ... [详细]
  • 默认情况下,Git 使用 Nano 编辑器进行提交信息的编辑,但如果您更喜欢使用 Vim,可以通过简单的配置更改来实现这一变化。本文将指导您如何通过修改全局配置文件来设置 Vim 作为默认的 Git 提交编辑器。 ... [详细]
  • 探索Java 11中的ZGC垃圾收集器
    Java 11引入了一种新的垃圾收集器——ZGC,由Oracle公司研发,旨在支持TB级别的内存容量,并保证极低的暂停时间。本文将探讨ZGC的开发背景、技术特点及其潜在的应用前景。 ... [详细]
  • 本文探讨了使用普通生成函数和指数生成函数解决组合与排列问题的方法,特别是在处理特定路径计数问题时的应用。文章通过详细分析和代码实现,展示了如何高效地计算在给定条件下不相邻相同元素的排列数量。 ... [详细]
  • 在Notepad++中配置Markdown语法高亮及实时预览功能
    本文详细介绍了如何在Notepad++中配置Markdown语法高亮和实时预览功能,包括必要的插件安装和设置步骤。 ... [详细]
  • 探讨如何在映射文件中处理重复的属性字段,以避免数据操作时出现错误。 ... [详细]
  • 网络流24题——试题库问题
    题目描述:假设一个试题库中有n道试题。每道试题都标明了所属类别。同一道题可能有多个类别属性。现要从题库中抽取m道题组成试卷。并要求试卷包含指定类型的试题。试设计一个满足要求的组卷算 ... [详细]
  • 利用无代码平台实现高效业务应用开发
    随着市场环境的变化加速,全球企业都在探索更为敏捷的应用开发模式,以便快速响应新兴的商业机遇。然而,传统的软件开发方式不仅成本高昂,而且耗时较长,这往往导致IT与业务部门之间的合作障碍,进而影响项目的成功。本文将探讨如何通过无代码开发平台解决这些问题。 ... [详细]
  • 本文介绍了如何通过安装 sqlacodegen 和 pymysql 来根据现有的 MySQL 数据库自动生成 ORM 的模型文件(model.py)。此方法适用于需要快速搭建项目模型层的情况。 ... [详细]
  • 本文探讨了程序员这一职业的本质,认为他们是专注于问题解决的专业人士。文章深入分析了他们的日常工作状态、个人品质以及面对挑战时的态度,强调了编程不仅是一项技术活动,更是个人成长和精神修炼的过程。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
author-avatar
棂魂買弄l
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有