003 python接口 cookies

 

 

 

/*
时间:2018/09/17
功能:cookie
目录: 
  一: 概念
        1 保存
        2 存储
        3 时间 
        4 目的
  二: 结构
  三: 查看
  四: 获取
        1 url
        2 header
        3 body
  五: 禅道登录 - cookie */

 

一: 概念

  1 保存

    保存客户端,一般由浏览器存储。
  2 存储

    一般加密存储,因保存客户端,很难保证数据不被非法访问,所有cookies不宜保存敏感数据。
  3 时间

    cookie保存多长时间,有服务器决定的。
  4 目的

    下次访问网站直接使用cookie。

 

二: 结构

    cookie ={   u'domain': u'.cnblogs.com',  # 来源域名 
                u'name': u'.CNBlogsCookie',  # cookie的名称 - 具有唯一
                u'value': u'xxxx',            # cookie的值
                u'expiry': 1554959887,        # 有效终止日期
                u'path': u'/',                #  
                u'httpOnly': True,            # 
                u'secure': False}             #

 

三: 查看

1 : 访问网站: https://www.baidu.com/

2 : 在Headers查看Cookies。 

 

1 : 直接在Cookies里,直接查看Cookies。 

 

1 :  在Raw里查看Cookies。


四: 获取
  1 url

1 : 访问网站: http://zzk-s.cnblogs.com/s/blogpost。

2 : url变为: http://zzk-s.cnblogs.com/s/blogpost?AspxAutoDetectCookieSupport=1。?后面是cookie。

 

# coding:utf-8
import requests

# 请求首页
url = "http://zzk-s.cnblogs.com/s/blogpost"
r1 = requests.get(url)

# 获取cookie
strUrl = r1.url                 # 获取url
cookie = strUrl.split("?")[1]   # 切片获取

# 请求搜索
param = {
    "Keywords" : "001 python接口 get请求"
}

header = {
    "Cookie" : cookie  # 格式: name = value; name2 = value
}
r2 = requests.get(url, params = param, headers = header)
print(r2.text)

1 : 方法一  cookies放入headers头部传入。

2 : headers内cookie格式是,name = value; name2 = value。

 

# coding:utf-8
import requests
from urllib.parse import parse_qsl

# 请求首页
url = "http://zzk-s.cnblogs.com/s/blogpost"
r1 = requests.get(url)

# 获取cookie
strUrl = r1.url                         # 获取url
cookieList = strUrl.split("?")[1]       # 切片获取
cookie = dict(parse_qsl(cookieList))    # 转为字典

# 请求搜索
param = {
    "Keywords" : "001 python接口 get请求"
}
r2 = requests.get(url, params = param, cookies = cookie)
print(r2.text)

1 : 方法二  cookies=字典格式或者jar格式。

 

1 : 查看返回结果,使用cookie可以搜索成功。


  2 header

1 : 访问网站: http://zzk-s.cnblogs.com/s/blogpost。

2 : 查看重定位之前的页面信息 - header部分,有Set-Cookie,包含cookie信息。

 

# coding:utf-8
import requests
from urllib.parse import parse_qsl

# 请求首页
url = "http://zzk-s.cnblogs.com/s/blogpost"
r1 = requests.get(url, allow_redirects = False)    # 禁止重定位

# 获取cookie
headerList = r1.headers
header = {
    "Cookie" : headerList["Set-Cookie"]
}

# 请求搜索
param = {
    "Keywords" : "001 python接口 get请求"
}
r2 = requests.get(url, params = param, headers = header)
print(r2.text)

1 : 使用python获取cookie,再发送搜索请求。

 

  3 body

 

1 : 访问网站: http://zzk-s.cnblogs.com/s/blogpost。

2 : 查看重定位之前的页面信息 - body部分,包含所需cookie信息。

 

# coding:utf-8
import requests
import re
from urllib.parse import parse_qsl

# 请求首页
url = "http://zzk-s.cnblogs.com/s/blogpost"
r1 = requests.get(url, allow_redirects = False)
print(r1.status_code)
print(r1.text)

# 正则提取
cookieList = re.findall("blogpost\?(.+?)\"", r1.text)
print(cookieList[0])
cook = dict(parse_qsl(cookieList[0]))    # 转为字典
print(cook)

# 请求搜索
param = {
    "Keywords" : "001 python接口 get请求"
}
r2 = requests.get(url, params = param, cookies = cook)
print(r2.text)

1 : 使用python获取cookie,再发送搜索请求。

 

1 : 查看请求结果,服务端返回数据正确。

 

五: 禅道登录 - cookie

# coding:utf-8
import requests
import re

# 禅道登录
url = "http://127.0.0.1/zentao/user-login.htm"

body = {
    "account": "admin",
    "password": "123456",
    "keepLogin[]": "on",
    "referer": "/zentao/my.html"
}
requests.get(url)
requests.post

r = requests.post(url, data = body)
print(r.status_code)
print(r.content.decode("utf-8"))    # 中文解码

# 获取cookies
cookiesJar = r.cookies          # Jar的格式
print(cookiesJar)
cookiesDict = dict(cookiesJar)  # 字典格式
print(cookiesDict)

# 访问请求 - 登录之后
url2 = "http://127.0.0.1/zentao/my/"
r2 = requests.get(url2, cookies = cookiesJar)
print(r2.content.decode("utf-8"))

1 :使用python获取cookie,再请求我的地盘url。

 

1 : 查看请求结果,客户端访问成功。

 

posted @ 2018-09-17 18:58  火焰马  阅读(386)  评论(0编辑  收藏  举报