zoukankan      html  css  js  c++  java
  • Python之requests模块-cookie

    cookie并不陌生,与session一样,能够让http请求前后保持状态。与session不同之处,在于cookie数据仅保存于客户端。requests也提供了相应到方法去处理cookie。

    python之requests模块-session中,我们知道了requests中的session对象能够在请求之间保持cookie,它极大地方便了我们去使用cookie。当我们想设置方法级别中的请求时,可以如下面示例一样操作。

    import requests
    
    s = requests.session()
    # 第一步:发送一个请求,用于设置请求中的cookies
    cookies = dict(cookies_are='cookie1')
    # tips: http://httpbin.org能够用于测试http请求和响应
    r1 = s.get(url='http://httpbin.org/cookies', cookies=cookies)
    print(r1.text)
    # 第二步:发送一个请求,用于再次设置请求中的cookies
    cookies = dict(cookies_are='cookie2')
    r2 = s.get(url='http://httpbin.org/cookies', cookies=cookies)
    print(r2.text)

    运行结果

    # r1.text
    {
      "cookies": {
        "cookies_are": "cookie1"
      }
    }
    # t2.text
    {
      "cookies": {
        "cookies_are": "cookie2"
      }
    }

    从结果中可以看出,该方法让cookie只作用了单个请求,因为方法级别的参数不会被跨请求保持,这是requests中session对象的机制,这里不再赘述。那么,如果我们想跨请求保持cookie呢?这里依旧可以应用session对象的跨请求机制,方法如下: 

    import requests
    
    s = requests.session()
    s.cookies.update({'cookies_are': 'cookie'})
    r = s.get(url='http://httpbin.org/cookies')
    print(r.text)

    值得一提的是,除了直接用字典去赋值cookie之外,requests还提供了RequestsCookieJar对象供我们使用,它的行为类似字典,但接口更为完整,适合跨域名跨路径使用。来看一个官方文档中的示例。

    import requests
    
    jar = requests.cookies.RequestsCookieJar()
    jar.set('tasty_cookie', 'yum', domain='httpbin.org', path='/cookies')
    jar.set('gross_cookie', 'blech', domain='httpbin.org', path='/elsewhere')
    url = 'http://httpbin.org/cookies'
    r = requests.get(url, cookies=jar)
    print(r.text)

    运行结果

    {
      "cookies": {
        "tasty_cookie": "yum"
      }
    }

    从结果中,可以看出我们利用RequestsCookieJar对象,达到了根据不同请求路径,发送不同cookie的效果,进一步增加了操作cookie的灵活性。

    参考文档


    作者:酌三巡

    感谢阅读,如需转载请注明出处!

  • 相关阅读:
    iOS 自带系统语音识别
    对iOS10新增Api的详细探究
    iOS 技术前瞻
    iOS 之 byte NSString NSData类型转换
    iOS 文本属性
    基本力
    xamarin mac 基础知识 之 界面
    xamarin mac 之 基础知识
    xamarin mac 之 资料
    I方法 thinkphp
  • 原文地址:https://www.cnblogs.com/zhuosanxun/p/12684894.html
Copyright © 2011-2022 走看看