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--模拟轮盘抽奖游戏)
- linux下python安装pip(在Docker中的ubuntu中安装Python3和Pip的问题)
- python画折线图(python使用Plotly绘图工具绘制水平条形图)
- 用python简单实现登录功能(使用python的pexpect模块,实现远程免密登录的示例)
- opencv人脸识别实战(Python opencv实现人眼/人脸识别以及实时打码处理)
- 如何使用github中的python库(使用GitHub和Python实现持续部署的方法)
- python好看图案(python实现趣味图片字符化)
- python中创建类的方法(Python中如何导入类示例详解)
- python学生管理系统与数据库(python学生管理系统学习笔记)
- python简单代码实例(Python实现 版本号对比功能的实例代码)
- python中怎样使用列表的sort方法(详解python中sort排序使用)
- python字符串的拼接与分割(Python字符串通过'+'和join函数拼接新字符串的性能测试比较)
- python飞机大战游戏背景(python实现飞机大战游戏)
- python微信消息模拟请求(python实现微信机器人: 登录微信、消息接收、自动回复功能)
- python获取json结果保存文本(Python JSON格式数据的提取和保存的实现)
- python判断对象是否是某一类型(Python判断对象是否相等及eq函数的讲解)
- ()
- 张勇 阿里新任掌门人(阿里新任掌门人)
- 毛戈平全国第一柜花落银泰 高端国货迎来 高光 时刻(毛戈平全国第一柜花落银泰)
- 14岁丧父 20岁丧母,从苦难走向辉煌的银泰创始人沈国军(14岁丧父20岁丧母从苦难走向辉煌的银泰创始人沈国军)
- 银泰集团董事长沈国军获评 北京影响力 十大企业家(银泰集团董事长沈国军获评)
- 15帅气男士发型,清爽时尚很有型,喜欢就试试(清爽时尚很有型)
热门推荐
- 用javascript设计五子棋(JavaScript实现网页版五子棋游戏)
- openssl 默认私钥类型(Windows安装Openssl并使用Openss生成公钥私钥)
- css布局图解(浅谈CSS三栏布局的N种实现)
- sqlserver查询表结构(sql server递归子节点、父节点sql查询表结构的实例)
- html5基本代码文字颜色(html5默认气泡修改的代码详解)
- nodejs八种命令(详细谈谈NodeJS进程是如何退出的)
- 如何选择自己的网站服务器(网站应该选择哪种服务器比较好?)
- ftp服务器包括哪些(FTP服务器和Web服务器知多少)
- 少用iframe的原因
- 阿里云免备案云虚拟主机(阿里云西部数码虚拟主机怎么屏蔽恶意点击ip?)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9