python接口自动化(十六)--参数关联接口后传(详解)


Posted in Python onApril 16, 2019

简介

大家对前边的自动化新建任务之后,接着对这个新建任务操作了解之后,希望带小伙伴进一步巩固胜利的果实,夯实基础。因此再在沙场实例演练一下博客园的相关接口。我们用自动化发随笔之后,要想接着对这篇随笔操作,不用说就需

要用参数关联了,发随笔之后会有一个随笔的 id,获取到这个 id,继续操作传这个随笔 id 就可以了(博客园的登录机制已经变了,不能用账号和密码登录了,这里用 cookie 登录)

大致流程步骤:web界面操作登录抓包查看cookie—>代码模拟cookie登录—>web界面操作新建随笔和保存随笔—>抓包查看新建随笔和保存随笔的url和参数等—>代码模拟新建随笔并保存编辑内容—>web界面操作删除随笔—>抓取删除操作请求—>提取参数—>传参—>代码实现。

一、删除随笔

1、我们前面讲过登录后新建随笔和保存随笔后,不记得可以点击传送门那可以继续接着操作:删除刚才新建的随笔

python接口自动化(十六)--参数关联接口后传(详解)

2、用fiddler抓包,抓到删除新建随笔的请求,从抓包结果可以看出,传的json参数是postId

python接口自动化(十六)--参数关联接口后传(详解)

3.这个postId哪里来的呢?可以看上个请求的url地址

python接口自动化(十六)--参数关联接口后传(详解)

4、也就是说保存草稿箱成功之后,重定向一个 url 地址,里面带有 postId 这个参数。那我们想办法将这个参数提取出来就可以了

二、提取参数

1、我们需要的参数 postId 是在保存成功后 url 地址,这时候从 url 地址提出对应的参数值就行了,先获取保存成功后 url

2、通过正则表达式从保存的url提取需要的字符串,这个参数值前面(postid=)和后面(&)字符串都是固定的

3、这里正则提出来的是 list 类型,取第一个值就可以是字符串了(注意:每次保存需要修改内容,不能重复)

python接口自动化(十六)--参数关联接口后传(详解)

三、传参

1、删除草稿箱的 json 参数传上面取到的参数:{"postId": postid[0]}

2、json 数据类型 post 里面填 json 就行,会自动转 json

3、接着前面的保存随笔的操作,就可以删除成功了

注意:同理和jenkins一样,如果想看清楚,可以在删除新建随笔出打断点,看到新建的随笔后,再次执行下边的代码 看看是不是可以删掉新建随笔

python接口自动化(十六)--参数关联接口后传(详解)

四、参考代码

# coding:utf-8
import requests
# 先打开登录首页,获取部分cookie
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"
      } # get方法其它加个ser-Agent就可以了
s = requests.session()
r = s.get(url, headers=headers,verify=False)
print (s.cookies)
# 添加登录需要的两个cookie
c = requests.cookies.RequestsCookieJar()
c.set('.CNBlogsCookie', 'XXX') # 填上面抓包内容
c.set('.Cnblogs.AspNetCore.Cookies','XXX') # 填上面抓包内容
c.set('AlwaysCreateItemsAsActive',"True")
c.set('AdminCookieAlwaysExpandAdvanced',"True")
s.cookies.update(c)
print (s.cookies)
# 登录成功后保存编辑内容
url2= "https://i.cnblogs.com/EditPosts.aspx?opt=1"
body = {"__VIEWSTATE": "",
    "__VIEWSTATEGENERATOR":"FE27D343",
    "Editor$Edit$txbTitle":"这是绕过登录的标题:北京-宏哥",
    "Editor$Edit$EditorBody":"<p>这里是中文内容:http://www.cnblogs.com/duhong/</p>",
    "Editor$Edit$Advanced$ckbPublished":"on",
    "Editor$Edit$Advanced$chkDisplayHomePage":"on",
    "Editor$Edit$Advanced$chkComments":"on",
    "Editor$Edit$Advanced$chkMainSyndication":"on",
    "Editor$Edit$lkbDraft":"存为草稿",
     }
r2 = s.post(url2, data=body, verify=False)
#print (r.content.decode('utf-8'))

# 第三步:正则提取需要的参数值
import re
postid = re.findall(r"postid=(.+?)&", r2.url)
print(type(postid))
print (postid) # 这里是 list
# 提取为字符串
print (postid[0])
# 第四步:删除草稿箱
url3 = "https://i.cnblogs.com/post/delete"
json3 = {"postId": postid[0]}
r3 = s.post(url3, json=json3, verify=False)
print (r3.json())

五、小结

1、好了,参数关联接口就是这么简单,相信各位小伙伴下回遇到此种类似的问题,不会慌了,应该是十拿九稳的把它KO掉。

2、有兴趣的自己可以向上一篇一样,自己练习一下打断点,自己可以体验一下其中的乐趣和神奇。

以上所述是小编给大家介绍的python接口自动化参数关联接口详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python线程、进程和协程详解
Jul 19 Python
轻松掌握python设计模式之访问者模式
Nov 18 Python
Python编程修改MP3文件名称的方法
Apr 19 Python
Python获取当前路径实现代码
May 08 Python
Python中easy_install 和 pip 的安装及使用
Jun 05 Python
利用python操作SQLite数据库及文件操作详解
Sep 22 Python
Python实现的朴素贝叶斯分类器示例
Jan 06 Python
pandas.DataFrame选取/排除特定行的方法
Jul 03 Python
使用TensorFlow实现SVM
Sep 06 Python
python 实现一次性在文件中写入多行的方法
Jan 28 Python
python+openCV利用摄像头实现人员活动检测
Jun 22 Python
Pytorch之contiguous的用法
Dec 31 Python
Python实现连接MySql数据库及增删改查操作详解
Apr 16 #Python
Python3.6实现带有简单界面的有道翻译小程序
Apr 16 #Python
python实现扫描局域网指定网段ip的方法
Apr 16 #Python
python实现扫描ip地址的小程序
Apr 16 #Python
使用Python制作简单的小程序IP查看器功能
Apr 16 #Python
Python使用POP3和SMTP协议收发邮件的示例代码
Apr 16 #Python
Python这样操作能存储100多万行的xlsx文件
Apr 16 #Python
You might like
PHP编程最快明白(第一讲 软件环境和准备工作)
2010/10/25 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
2019/02/08 PHP
论坛特效代码收集(落伍转发-不错)
2006/12/02 Javascript
javascript笔试题目附答案@20081025_jb51.net
2008/10/26 Javascript
EasyUI的treegrid组件动态加载数据问题的解决办法
2011/12/11 Javascript
用jQuery实现一些导航条切换,显示隐藏的实例代码
2013/06/08 Javascript
基于jQuery实现Div窗口震动特效代码-代码简单
2015/08/28 Javascript
Bootstrap 组件之按钮(二)
2016/05/11 Javascript
Angular2 环境配置详细介绍
2016/09/21 Javascript
JavaScript实现简单的日历效果
2016/09/25 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
2016/12/14 Javascript
Javascript中Promise的四种常用方法总结
2017/07/14 Javascript
通过cordova将vue项目打包为webapp的方法
2019/02/02 Javascript
vue实现搜索过滤效果
2019/05/28 Javascript
Angular中innerHTML标签的样式不起作用的原因解析
2019/06/18 Javascript
React 父子组件通信的实现方法
2019/12/05 Javascript
Python 命令行非阻塞输入的小例子
2013/09/27 Python
Python编码类型转换方法详解
2016/07/01 Python
windows 10下安装搭建django1.10.3和Apache2.4的方法
2017/04/05 Python
Python MySQL数据库连接池组件pymysqlpool详解
2017/07/07 Python
flask-socketio实现WebSocket的方法
2018/07/31 Python
解决python 无法加载downsample模型的问题
2018/10/25 Python
Python脚本完成post接口测试的实例
2018/12/17 Python
Python完成毫秒级抢淘宝大单功能
2019/06/06 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
2020/01/20 Python
keras 特征图可视化实例(中间层)
2020/01/24 Python
Selenium使用Chrome模拟手机浏览器方法解析
2020/04/10 Python
python:解析requests返回的response(json格式)说明
2020/04/30 Python
纯CSS实现颜色渐变效果(包含环形渐变、线性渐变、彩虹效果等)
2014/05/07 HTML / CSS
Otiumberg官网:英国半精致珠宝品牌
2021/01/16 全球购物
JSF的标签库有哪些
2012/04/27 面试题
采购人员的个人自我评价
2014/01/16 职场文书
2014年保洁工作总结
2014/11/24 职场文书
工厂采购员岗位职责
2015/04/07 职场文书
2019求职信:应届生求职信范文
2019/04/24 职场文书
晶体管来复再生式二管收音机
2021/04/22 无线电