在平时测试当中经常会遇到使用python脚本来模拟http请求的操作,在做一次接口【http请求,返回json】测试时,开发提供的http接口在请求时,会被filter拦截,验证请求者的session是否合法,由于我们是直接请求,没有附带任何的cookie与headers,那如何让我们合法的进行接口的请求,并继续测试呢?详见下面描述:

在使用系统之前,我们都会经过一个登录的操作,这个登录操作就会把我们的sessionId的状态属性设置为合法【不同的系统,细节不同,大体都类似】,我们要是想直接请求接口,并需带上一个合法的sessionId在我们的cookie中,如何去做呢?

有以下几种方法:

1、人工准备一条合法的sessionId,在请求时放入到cookie中。缺点:需要人工准备,而且sessionId还会过期。

2、模拟登录请求,在响应头部里set cookie中将sessionId扣出来,下次请求时带上。缺点:需要在响应头部中处理set cookie部分内容,若有大量的set cookie时,处理起来比较麻烦。

3、使用CookieJar,模拟登录请求,接着模拟接口请求。优点:简单方便。

第一种方法:这里不介绍,也不推荐。

第二种方法:可以参考http请求时添加请求头。

第三种方法:详见以下描述。

现有接口QueryVideoList:http://192.168.1.242:9000/QueryVideoList

QueryVideoList请求参数:{'catalogsID':'','catagoryCode':'','sortType':'desc','sortField':'Time','videoInfo':'','beginTime':'' ,'endTime':'' ,'pageSize':'20','pageIndex':'1'}

登陆时post的url:http://192.168.1.242:9000/

这个啥意思呢?你可以通过http请求监控工具,监控下登录的过程可以看到。推荐fiddler,登陆时会post用户名与密码,这个post的url就是登录的url,这个post操作主要就是将你的sessionId设为合法。

接下来我来直接上代码吧:

1 #coding:u8

2 importurllib3 importurllib24 importcookielib5

6 cookieJar=cookielib.CookieJar()7 opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar))8

9 login_post_url = "http://192.168.86.242:9000/"

10 query_video_list_post_url = "http://192.168.1.242:9000/QueryVideoList"

11

12 login_post_data = {'username':'feixu','password':'000000','SysType':'1'}13 query_video_list_post_data = {'catalogsID':'','catagoryCode':'','sortType':'desc','sortField':'Time','videoInfo':'','beginTime':'' ,'endTime':'' ,'pageSize':'20','pageIndex':'1'}14

15 #urlencode编码

16 defencode_post_data(post_data):17 returnurllib.urlencode(post_data)18

19 #post请求通用方法,使用全局变量opener,具体cookie收集功能

20 defpost_fun(url,post_data):21 globalopener22 req=urllib2.Request(url,encode_post_data(post_data))23 returnopener.open(req)24

25 #查询视频列表接口

26 defquery_video_list(url,post_data):27 returnpost_fun(url,post_data)28

29 #登录,使cookie中指定的session变为合法

30 deflogin(url,post_data):31 returnpost_fun(url,post_data)32

33 login(login_post_url,login_post_data)34 resp =query_video_list(query_video_list_post_url,query_video_list_post_data)35 print resp.read()

首先我们创建了一个cookieJar,然后使用这个cookieJar构建了一个opener,也就是说,后期使用opener来进行请求时,会自动将cookie存入到cookieJar容器中,再继续请求时,会附带上一次存入的cookie,因此我们只需要使用opener来进行请求就行了,cookie的事,由cookieJar自动帮我们处理。

你需要处理的就是请求的url、请求的数据,除了cookie之外的headers请求头

python cookie动态请求_Python请求自动处理cookie相关推荐

  1. python 为什么动态语言_Python动态语言

    python 说Python是动态语言,是由于Python可以在代码运行中可以做更改,但是像C.Java之类的需要编译的语言,由于做过编译就不可以做修改了,所以是静态语言.但是像Python.PHP. ...

  2. python是动态语言_Python是动态语言:动态添加或删除属性、方法

    Python是动态语言:动态编辑属性.动态编辑方法 1.运行过程中给对象绑定.删除属性 实例: class Person(): def __init__(self,name): self.name=n ...

  3. python简单动态图_python动态图的绘制和保存

    前言 这段时间要做一个涉及排队论的数学建模,需要动态绘图.建好了模,却没想到在原以为简单的绘图上耗费了我大量时间.原因在于用python作动态绘图的参考资料过于琐碎.因此在我费了九牛二虎之力终于实现动 ...

  4. python cookies是什么_Python中的Cookie模块有什么功能?

    Cookie 模块,顾名思义,就是用来操作Cookie的模块. Cookie这块小蛋糕,玩过Web的人都知道,它是Server与Client保持会话时用到的信息 切片. Http协议本身是无状态的,也 ...

  5. python ip动态代理_Python实现爬取可用代理IP

    Python实现爬取可用代理IP,在实现爬虫时,动态设置代理IP可以有效防止反爬虫,但对于普通爬虫初学者需要在代理网站上测试可用代理IP.由于手动测试过程相对比较繁琐,且重复无用过程故编写代码以实现动 ...

  6. python实现动态壁纸_python学习笔记 | macOS Big Sur动态壁纸食用指南

    目录 前言 北京时间23日凌晨1点,苹果WWDC2020大会开幕.在发布会上,苹果正式发布了新版macOS,并将其命名为"Big Sur". 相比于外界争议最大的UI界面,令我更为 ...

  7. python制作动态时钟_python+pygame制作一个可自定义的动态时钟和详解

    #第1步:导出模块 importsys, random, math, pygamefrom pygame.locals import * from datetime importdatetime, d ...

  8. python实现动态壁纸_Python编程从0到1(每天把Bing背景设置为桌面)

    Bing背景特别漂亮,用脚本自动下载图片,并设置为桌面. 把图片说明,用水印写在图片上. 1.爬取图片代码 #!/usr/bin/python3 # ubuntu设置动态bing壁纸 # 安装PIL库 ...

  9. python搞笑动态图_python小爬虫抓取搞笑图片

    大部分小程序都是基于py2.7的,我于是便想直接出一个py3.4最新版本的教程.大致看一下第一篇了解一下的一些概念性的东西以及bs4第三方库的使用.请参考文末. 我们的第一个小程序的相关要求: 目标: ...

最新文章

  1. 计算机技术综合应用,浅谈计算机技术综合应用能力培养.pdf
  2. 通用联手谷歌,应用程序和语音助手将整合到车辆中
  3. css行高line-height的一些深入理解及应用
  4. linux下出现ping:unknown host www.baidu.com问题时的解决办法——ubuntu下局域网络的配置
  5. 【Linux】一步一步学Linux——free命令(80)
  6. python_字符串常用方法
  7. VC如何设置默认的调试程序
  8. C调用系统命令ping崩溃日志
  9. Response.Redirect导致session丢失的解决办法
  10. window计算机截屏快捷键,电脑截图是ctrl加什么键win7快捷键截图方法详解
  11. 最简洁的富文本编辑器
  12. VUE + 微信分享
  13. java题库难_为什么平常写项目感觉java也不是那么难,一到面试刷题得时候感觉那么吃力呢。你们呢?...
  14. win10禁用笔记本自带键盘、触摸盘
  15. iPhone 各大机型设备号
  16. 论文笔记 | Learning Deep Features for Discriminative Localization
  17. 程序猿小白应该注意什么 1
  18. 气功:我国特有的一种健身术
  19. 保证良好睡眠,是糖友逆糖的关键
  20. 【OS】IO系统——设备管理

热门文章

  1. 8小时浓度均值即连续8个小时浓度的平均值
  2. 飞腾S2500平台PCIe SWITCH下热插拔验证
  3. 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——1.4 角色模型...
  4. 注入神器-----SqlMap的使用
  5. 拒不协助执行会有什么后果?
  6. python棋牌游戏开发之斗地主
  7. 简单易学:本身就很小且简单
  8. 习题6-5 巡逻机器人
  9. HCIP-DATACOM H12-831(161-180)
  10. jcr多久更新一次_JCR-2017更新 | 快来看看你的影响影子吧