python接口自动化接口依赖(python接口自动化十六--参数关联接口后传详解)
python接口自动化接口依赖
python接口自动化十六--参数关联接口后传详解简介
大家对前边的自动化新建任务之后,接着对这个新建任务操作了解之后,希望带小伙伴进一步巩固胜利的果实,夯实基础。因此再在沙场实例演练一下博客园的相关接口。我们用自动化发随笔之后,要想接着对这篇随笔操作,不用说就需
要用参数关联了,发随笔之后会有一个随笔的 id,获取到这个 id,继续操作传这个随笔 id 就可以了(博客园的登录机制已经变了,不能用账号和密码登录了,这里用 cookie 登录)
大致流程步骤:web界面操作登录抓包查看cookie—>代码模拟cookie登录—>web界面操作新建随笔和保存随笔—>抓包查看新建随笔和保存随笔的url和参数等—>代码模拟新建随笔并保存编辑内容—>web界面操作删除随笔—>抓取删除操作请求—>提取参数—>传参—>代码实现。
一、删除随笔
1、我们前面讲过登录后新建随笔和保存随笔后,不记得可以点击传送门那可以继续接着操作:删除刚才新建的随笔
2、用fiddler抓包,抓到删除新建随笔的请求,从抓包结果可以看出,传的json参数是postid
3.这个postid哪里来的呢?可以看上个请求的url地址
4、也就是说保存草稿箱成功之后,重定向一个 url 地址,里面带有 postid 这个参数。那我们想办法将这个参数提取出来就可以了
二、提取参数
1、我们需要的参数 postid 是在保存成功后 url 地址,这时候从 url 地址提出对应的参数值就行了,先获取保存成功后 url
2、通过正则表达式从保存的url提取需要的字符串,这个参数值前面(postid=)和后面(&)字符串都是固定的
3、这里正则提出来的是 list 类型,取第一个值就可以是字符串了(注意:每次保存需要修改内容,不能重复)
三、传参
1、删除草稿箱的 json 参数传上面取到的参数:{"postid": postid[0]}
2、json 数据类型 post 里面填 json 就行,会自动转 json
3、接着前面的保存随笔的操作,就可以删除成功了
注意:同理和jenkins一样,如果想看清楚,可以在删除新建随笔出打断点,看到新建的随笔后,再次执行下边的代码 看看是不是可以删掉新建随笔
四、参考代码
|
# 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接口自动化参数关联接口详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开心学习网网站的支持!
原文链接:https://www.cnblogs.com/du-hong/p/10715555.html
- python多线程并发使用场景(对python多线程SSH登录并发脚本详解)
- python装饰器怎么编写(Python函数装饰器常见使用方法实例详解)
- python常用列表函数和方法(Python enumerate函数功能与用法示例)
- python3.8基本操作(Python3.5文件修改操作实例分析)
- python设置微信(利用python实现在微信群刷屏的方法)
- python线程池如何实现同步(Python mutiprocessing多线程池pool操作示例)
- 如何用python画函数图(使用python绘制二元函数图像的实例)
- python使用门算法加密文件(python实现可逆简单的加密算法)
- pythonflask系列教程(Python安装Flask环境及简单应用示例)
- 聊天室python小程序(用Python写一个模拟qq聊天小程序的代码实例)
- python3和python2 兼容(Python2和Python3的共存和切换使用)
- python中startswith使用教程(Python os.access用法实例)
- python中对象方法和顶级方法(Python3.5面向对象程序设计之类的继承和多态详解)
- python怎么导入beautifulsoup元素(python使用BeautifulSoup与正则表达式爬取时光网不同地区top100电影并对比)
- python的遍历循环(对python For 循环的三种遍历方式解析)
- 用python查看运行进程(在Python运行时动态查看进程内部信息的方法)
- 太鸡贼了,这老小区轻松搞定了停车问题(这老小区轻松搞定了停车问题)
- 节日我在岗|警景相融 平安相伴(节日我在岗警景相融)
- 战 疫 时刻 致敬每一位石化大学的 守护者(战疫时刻)
- 老弄堂里的市井味道(老弄堂里的市井味道)
- 小米音乐可绑定QQ音乐, QQ音乐 真的会消失在小米的设备上吗(小米音乐可绑定QQ音乐)
- 小米Watch S1评测 或许能成为小米冲击高端可穿戴设备的里程碑(小米WatchS1评测或许能成为小米冲击高端可穿戴设备的里程碑)
热门推荐
- php数组取值方法(php给数组赋值的实例方法)
- laravel怎么设置自定义(laravel实现于语言包的完美切换方法)
- 在php中与数据库连接的技术(PHP7.0连接DB操作实例分析基于mysqli)
- js时间日期处理
- dedecms提示怎么去除(DEDECMS系统后台会员功能漏洞解决方法)
- apache配置403错误提示(apache documentroot指向htcdoc之外提示403错误的解决方法)
- 织梦列表页调用文章简介不显示(织梦文章系统修改专题文章列表的模板的方法)
- html判断canvas已经绘制过了(html2canvas截图空白问题的解决)
- mysqljoin默认是什么(mysql-joins具体用法说明)
- laravel模型个数(laravel withCount 统计关联数量的方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9