python接口自动化2-发送post请求

前言

发送post的请求参考例子很简单,实际遇到的情况却是很复杂的,首先第一个post请求肯定是登录了,但登录是最难处理的。登录问题解决了,后面都简单了。

一、查看官方文档

1.学习一个新的模块,其实不用去百度什么的,直接用help函数就能查看相关注释和案例内容。

>>import requests

>>help(requests)

2.查看python发送get和post请求的案例

>>> import requests
       >>> r = requests.get('https://www.python.org')
       >>> r.status_code
       200
       >>> 'Python is a programming language' in r.content
       True
    
    ... or POST:
    
       >>> payload = dict(key1='value1', key2='value2')
       >>> r = requests.post('http://httpbin.org/post', data=payload)
       >>> print(r.text)
       {
         ...
         "form": {
           "key2": "value2",
           "key1": "value1"
         },
         ...
       }

二、发送post请求

1.用上面给的案例,做个简单修改,发个post请求

2.payload参数是字典类型,传到如下图的form里

三、json

1.post的body是json类型,也可以用json参数传入。

2.先导入json模块,用dumps方法转化成json格式。

3.返回结果,传到data里

四、headers

1.以博客园为例,模拟登陆,实际的情况要比上面讲的几个基本内容要复杂很多,一般登陆涉及安全性方面,登陆会比较复杂

2.这里需添加请求头headers,可以用fiddler抓包

3.讲请求头写成字典格式

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0",
            "Accept": "application/json, text/javascript, */*; q=0.01",
            "Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
            "Accept-Encoding": "gzip, deflate, br",
            "Content-Type": "application/json; charset=utf-8",
            "X-Requested-With": "XMLHttpRequest",
            "Cookie": "xxx.............",    # 此处cookie省略了
            "Connection": "keep-alive"
            }

五、登陆博客园

1.由于这里是https请求,直接发送请求会报错误:SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)

2.可以加个参数:verify=False,表示忽略对 SSL 证书的验证

3.这里请求参数payload是json格式的,用json参数传

4.红色注释那两行可以不用写

5.最后结果是json格式,可以直接用r.json返回json数据:{u'success': True}

六、参考代码

# coding:utf-8
import requests
url = "https://passport.cnblogs.com/user/signin"

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0",
            "Accept": "application/json, text/javascript, */*; q=0.01",
            "Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
            "Accept-Encoding": "gzip, deflate, br",
            "Content-Type": "application/json; charset=utf-8",
            # "VerificationToken": "",
            "X-Requested-With": "XMLHttpRequest",
            # "Referer": "",  
            "Content-Length": "385",
            "Cookie": "xxx...",  # 此处省略
            "Connection": "keep-alive"
            }

payload = {"input1":"xxx",
                 "input2":"xxx",
                 "remember":True}

r = requests.post(url, json=payload, headers=headers,verify=False)
print r.json()

对python接口自动化有兴趣的,可以加python接口自动化QQ群:226296743

也可以关注下我的个人公众号:

(0)

相关推荐

  • Python3爬虫之模拟post登陆及get登陆

    一.模拟登陆需要账号,密码的网址 一些不需要登陆的网址操作已经试过了,这次来用Python尝试需要登陆的网址,来利用cookie模拟登陆 由于我们教务系统有验证码偏困难一点,故挑了个软柿子捏,赛氪,h ...

  • python接口自动化1-发送get请求

    前言 requests模块,也就是老污龟,为啥叫它老污龟呢,因为这个官网上的logo就是这只污龟,接下来后面的自动化都离不开它. 一.环境安装 1.用pip安装requests模块 >>p ...

  • python接口自动化26-发xml格式post请求

    前言 post请求相对于get请求多一个body部分,body部分常见的数据类型有以下四种(注意是常见的,并不是只有4种) application/x-www-form-urlencoded appl ...

  • python接口自动化42 - 生成随机请求头部UserAgent(fake_useragent)

    前言 如果网站对请求头部有限制,短时间内频繁访问会被锁定,可以使用随机请求头部伪装不同浏览器 使用 python 第三方模块 fake_useragent 随机生成请求头部 UserAgent fak ...

  • python接口自动化9-https请求(SSL)

    前言 本来最新的requests库V2.13.0是支持https请求的,但是一般写脚本时候,我们会用抓包工具fiddler,这时候会 报:requests.exceptions.SSLError: [ ...

  • python接口自动化37-模拟ajax异步请求(X-Requested-With:XMLHttpRequest)

    前言 有些接口请求头部带上X-Requested-With:XMLHttpRequest ,返回数据是 json .如果头部不加这个参数,返回数据是普通 html 文本. 这种头部带上X-Reques ...

  • python接口自动化3-自动发帖(session)

    前言 上一篇模拟登录博客园,但这只是第一步,一般登录后,还会有其它的操作,如发帖,评论等,这时候如何保持会话呢? 一.session简介 1.查看帮助文档,贴了一部分,后面省略了 >>im ...

  • python接口自动化4-绕过验证码登录(cookie)

    前言 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接). 获取不到也没关系,可以通过添加cookie的方式绕过验证码. 一.抓登录coo ...

  • python接口自动化5-Json数据处理

    前言 有些post的请求参数是json格式的,这个前面第二篇post请求里面提到过,需要导入json模块处理. 一般常见的接口返回数据也是json格式的,我们在做判断时候,往往只需要提取其中几个关键的 ...

  • python接口自动化6-重定向(Location)

    前言 某屌丝男A鼓起勇气向女神B打电话表白,女神B是个心机婊觉得屌丝男A是好人,不想直接拒绝于是设置呼叫转移给闺蜜C了,最终屌丝男A和女神闺蜜C表白成功了,这种场景其实就是重定向了. 一.重定向 1. ...