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正则表达式 re模块使用说明
May 19 Python
详解Python中的文本处理
Apr 11 Python
网易2016研发工程师编程题 奖学金(python)
Jun 19 Python
详解使用django-mama-cas快速搭建CAS服务的实现
Oct 30 Python
Pytorch实现的手写数字mnist识别功能完整示例
Dec 13 Python
Python实现计算长方形面积(带参数函数demo)
Jan 18 Python
使用Keras实现Tensor的相乘和相加代码
Jun 18 Python
Python第三方包PrettyTable安装及用法解析
Jul 08 Python
Python 如何调试程序崩溃错误
Aug 03 Python
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
Oct 09 Python
Selenium Webdriver元素定位的八种常用方式(小结)
Jan 13 Python
对Pytorch 中的contiguous理解说明
Mar 03 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
星际流派综述
2020/03/04 星际争霸
PHP程序开发范例学习之表单 获取文本框的值
2011/08/08 PHP
php 中文字符串首字母的获取函数分享
2013/11/04 PHP
php递归删除指定文件夹的方法小结
2015/04/20 PHP
php获取本机真实IP地址实例代码
2016/03/31 PHP
thinkPHP5.0框架URL访问方法详解
2017/03/18 PHP
CheckBox 如何实现全选?
2006/06/23 Javascript
JavaScript中的闭包原理分析
2010/03/08 Javascript
js压缩工具 yuicompressor 使用教程
2010/03/31 Javascript
优化innerHTML操作(提高代码执行效率)
2011/08/20 Javascript
jQuery获取当前对象标签名称的方法
2014/02/07 Javascript
jquery网页回到顶部效果(图标渐隐,自写)
2014/06/16 Javascript
jquery.ajax之beforeSend方法使用介绍
2014/12/08 Javascript
cocos2dx骨骼动画Armature源码剖析(一)
2015/09/08 Javascript
在javascript中随机数 math random如何生成指定范围数值的随机数
2015/10/21 Javascript
Angular2.js实现表单验证详解
2017/06/23 Javascript
vue-router的HTML5 History 模式设置
2018/09/08 Javascript
详解vue实现坐标拾取器功能示例
2020/11/18 Vue.js
Python编程实现从字典中提取子集的方法分析
2018/02/09 Python
python实现H2O中的随机森林算法介绍及其项目实战
2019/08/29 Python
python系统指定文件的查找只输出目录下所有文件及文件夹
2020/01/19 Python
python 控制台单行刷新,多行刷新实例
2020/02/19 Python
浅谈在JupyterNotebook下导入自己的模块的问题
2020/04/16 Python
Selenium元素定位的30种方式(史上最全)
2020/05/11 Python
Jupyter Notebook添加代码自动补全功能的实现
2021/01/07 Python
施华洛世奇天猫官方旗舰店:SWAROVSKI
2017/04/17 全球购物
SHEIN香港:价格实惠的女性时尚服装
2018/08/14 全球购物
本科生个人求职自荐信
2013/09/26 职场文书
《守株待兔》教学反思
2014/03/01 职场文书
2015年世界无烟日演讲稿
2015/03/18 职场文书
2016年国培心得体会及反思
2016/01/13 职场文书
2016年度先进班组事迹材料
2016/03/01 职场文书
2016年6.5世界环境日宣传活动总结
2016/04/01 职场文书
Java实现斗地主之洗牌发牌
2021/06/14 Java/Android
JavaScript高级程序设计之基本引用类型
2021/11/17 Javascript
MongoDB修改oplog大小的四种方法
2022/04/11 MongoDB