专栏首页北京宏哥python接口自动化(十一)--发送post【data】(详解)

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

简介 

  前面登录博客园的是传 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'<b>(.+?)</b>', 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 代码模拟登陆到这里就结束,实际工作中的登录接口也就是这些,记住万变不离其宗,举一反三。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 9

    事务是确保数据库一致的机制,是一个或一系列的查询,作为一个单元的一组有序的数据库操作。如果组中的所有SQL语句都操作成功,则认为事务成功,那么事务被提交,其修改...

    ITXDL
  • scrapy中的强大媒体管道(二)

    上文用了scrapy爬取了百度的美女图片,今天写写scrapy中的Image Pipeline

    用户6029108
  • scrapy 入门(一)

    Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘...

    用户6029108
  • 爬虫篇| 爬虫中的urllib库使用(三)

    我们首先了解一下 Urllib 库,它是 Python 内置的 HTTP 请求库,也就是说我们不需要额外安装即可使用,它包含四个模块:

    用户6029108
  • 爬虫篇| pyspider 爬取链家网(八)

    如果使用ubuntu,请先运行sudo apt update 再运行sudo apt upgrade 更新

    用户6029108
  • 爬虫篇|爬虫实战(十)

    要点进去继续爬取,这是爬虫最常见的方式,也是必须会的爬虫,对于这种方法,一般用框架使用的多

    用户6029108
  • 爬虫篇| Requests库详细的用法(四)

    对了解一些爬虫的基本理念,掌握爬虫爬取的流程有所帮助。入门之后,我们就需要学习一些更加高级的内容和工具来方便我们的爬取。那么简单介绍一下 requests 库的...

    用户6029108
  • 「网络安全」Web防火墙和下一代防火墙的区别

    客户经常询问“当我已经拥有下一代防火墙(NGFW)时,为什么需要Web应用程序防火墙(WAF)?”。本博文的目的是解释两种解决方案之间的区别,重点关注Web应用...

    首席架构师智库
  • 缺照片不,去百度图片上爬一些

    做机器学习的数据集其实是一个关键,只有具备充足的可靠数据集算是做到了成功的第一步。所以去哪里找数据集呢?答案就在网上,比如你想做一个猫的图像识别程序,先去网上下...

    HuangWeiAI
  • 一文解决easy的flask

    Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于...

    用户6029108

扫码关注云+社区

领取腾讯云代金券