• python接口自动化11-post传data参数案例【转载】


    前言:

    前面登录博客园的是传json参数,有些登录不是传json的,如jenkins的登录,本篇以jenkins登录为案例,传data参数。

    一、登录jenkins抓包

    1.登录jenkins,输入账号和密码

    2.fiddler抓包

    3.这个body参数并不是json格式,是key=value格式,也就是前面介绍post请求四种数据类型里面的第二种

    二、请求头部

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

    三、实现登录

    1、登录代码如下:

    # coding:utf-8
    import requests

    # 先打开登录首页,获取部分cookie
    url = "http://localhost:8080/jenkins/j_acegi_security_check"
    headers = {
                "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"
               }  # get方法其它加个ser-Agent就可以了
    d = {"from": "",
         "j_password": "f7bcd85ebab14e2fbb6d76cc99bc5c6a",
         "j_username": "admin",
         "Jenkins-Crumb": "e677c237181756818cbbccd4296d44f1",
         "json": {"j_username": "admin",
                  "j_password": "f7bcd85ebab14e2fbb6d76cc99bc5c6a",
                  "remember_me": True,
                  "from": "",
                  "Jenkins-Crumb": "e677c237181756818cbbccd4296d44f1"},
         "remember_me": "on",
         "Submit": u"登录"
         }
    s = requests.session()
    r = s.post(url, headers=headers, data=d)
    print r.content

    2.打印结果

    四、判断登录是否成功

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

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

    五、判断登录成功

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

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

    六、参考代码

    # coding:utf-8
    import requests

    # 先打开登录首页,获取部分cookie
    url = "http://localhost:8080/jenkins/j_acegi_security_check"
    headers = {
                "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"
               }  # get方法其它加个ser-Agent就可以了
    d = {"from": "",
         "j_password": "f7bcd85ebab14e2fbb6d76cc99bc5c6a",
         "j_username": "admin",
         "Jenkins-Crumb": "e677c237181756818cbbccd4296d44f1",
         "json": {"j_username": "admin",
                  "j_password": "f7bcd85ebab14e2fbb6d76cc99bc5c6a",
                  "remember_me": True,
                  "from": "",
                  "Jenkins-Crumb": "e677c237181756818cbbccd4296d44f1"},
         "remember_me": "on",
         "Submit": u"登录"
         }
    s = requests.session()
    r = s.post(url, headers=headers, data=d)

    # 正则表达式提取账号和登录按钮
    import re
    t = re.findall(r'<b>(.+?)</b>', r.content)
    print t[0]
    print t[1]

  • 相关阅读:
    [原创] 扩展jquery-treegrid插件, 实现勾选功能和全删按钮.
    [原创]多版本Java环境变量的配置
    [转]Redmine 配置163邮箱
    [转] --- Error: “A field or property with the name was not found on the selected data source” get only on server
    服务器控件中使用<%#...>, JS和html控件中使用<%=...>
    【字源大挪移—读书笔记】 第三部分:字尾
    【字源大挪移—读书笔记】 第二部分:字根
    使用WebClient 或者 HttpWebRequest均报:"The Remote name can't be solved"
    【字源大挪移—读书笔记】 第一部分:字首
    【英语魔法俱乐部——读书笔记】 3 高级句型-简化从句&倒装句(Reduced Clauses、Inverted Sentences) 【完结】
  • 原文地址:https://www.cnblogs.com/caoj/p/7815785.html
Copyright © 2020-2023  润新知