zoukankan      html  css  js  c++  java
  • 005 python接口 session

    
    

    /*
    时间:2018/09/22
    功能:session
    目录: 
      一: session
              1 概念
              2 禅道登录 : 用户名 + 密码
              3 session原理
              4 博客园登录 : cookie
        二: token 
              1 概念
              2 博客园登录 : cookie 
    */  

    一: session

      1 概念

    /*
    Cookie: 是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。
    服务端session: 服务端保存的一个数据结构, 用来跟踪用户的状态,这个数据可以保存在文件、数据库。 python session: 无界面, 微型浏览器。 */

      2 禅道登录 : 用户名 + 密码

    # coding:utf-8
    import requests
    
    # 禅道登录
    s = requests.session()    # python微型浏览器
    
    strUrlZentao = "http://127.0.0.1/zentao/user-login.htm"
    body = {
        "account": "admin",
        "password": "123456",
        "keepLogin[]": "on",
        "referer": "/zentao/my.html"
    }
    r = s.post(strUrlZentao, data = body)
    print(r.status_code)
    
    a = r.content.decode("utf-8")
    print(a)
    
    # 访问请求 - 登录之后
    strUrlMy = "http://127.0.0.1/zentao/my/"    # url - 我的地盘
    r = s.get(strUrlMy)
    print(r.content.decode("utf-8"))

    1 : 使用session发送请求。

    1 : 登录后的操作,不要需要输入cookie,session自己设置cookie。

      3 session原理

    1 : 访问禅道,登录前没有cookie信息。

     1 : 登录后有cookie信息。

    # coding:utf-8
    import requests
    
    # 禅道登录
    strUrlZentao = "http://127.0.0.1/zentao/user-login.htm"
    body = {
        "account": "admin",
        "password": "123456",
        "keepLogin[]": "on",
        "referer": "/zentao/my.html"
    }
    s = requests.session() # python微型浏览器
    print(s.cookies)
    
    r = s.post(strUrlZentao, data = body)
    print(s.cookies)

     1 : 查看登录前后cookie。

     1 : 显示出,session登录前cookie后登录后的cookiee。


      4 博客园登录 : cookie

    1 : 登录博客园,登录时勾选(下次自动登录/保存登录/自动登录)之类的,延长cookie时长。 

    2 : 访问: https://i.cnblogs.com/EditPosts.aspx?opt=1

    1 : 使用fiddler,查看cookie。

    # coding:utf-8
    import requests
    import urllib3
    urllib3.disable_warnings() # 忽略警告
    
    s = requests.session()    # python微型浏览器
    print(s.cookies)
    
    # 添加cookies
    c = requests.cookies.RequestsCookieJar()    # cookie的jar包
    c.set(".CNBlogsCookie" , "29B48ADA5898E1E0E8667C6071799BA17BA3463918C53E51B4248340C6D14C35FEE26B58F48E76D08E5B8D62135D2B0A2FF3AAA6B84698FBAFD6CFA7FEEF31B4CCC192DB11E1D430055BDB3E4BBFE3B7651CB2D77")
    c.set(".Cnblogs.AspNetCore.Cookies" , "CfDJ8J0rgDI0eRtJkfTEZKR_e83xU6tHXuCcOrnTqapnuA_jH39U-KHnyGYe5ZDMHIGFEtcARkK8YgvNMo5Kp0YJ-i6F9P1nFS0HMvcgHwc3NEpRoa3HtmdFUbJpb-w8i-4OoSmIJpSB8cqE6tvfPkiiTYKjRwW6QXrqmpzsgue-kl1yR9S3iyQF0gl9MAj_fG3PJiLVLeyrpsDVU_sXWlusfFuOV2TexDtJG5IvddTjo3YTR_r2b8ukD91obe5aqd_jyl49ptLDJsqfDZMC4QPVYZpYDuLWnPPGzru24Dpw9T5jKnt8u9j1K8fJ5bRc-iJTGw; __gads=ID=b62d6c61956e6a5d:T=1537551446:S=ALNI_MYVo1OG7TaaRZDeGmjAjyifjPg6VA; _ga=GA1.2.1683585037.1537551473; _gid=GA1.2.1823315871.1537551473; SERVERID=04ead23841720026ba009cb4f597ec8c|1537551610|1537551568")
    
    # 更新cookies
    s.cookies.update(c)
    print(s.cookies)
    
    # session请求
    url = "https://i.cnblogs.com/EditPosts.aspx?opt=1"  # 博客园后台 - 新随笔
    r = s.get(url, verify = False)
    print(r.text)

    1 : 使用cookie,访问刚才网址。

    1 : 验证 - 可以使用cookie访问成功。

    2 : 其他方法 - 使用selenium打开浏览器,读取缓存,访问该网址的cookies。


    二: token 
      1 概念

    /*
    概念: 
        1 app多用于token用校验,网站多用于cookies。            
        2 get请求登录前后无区别,post请求会带上token。
        
    判断请求带cookie还是token
        1 请求完全没有cookies信息。
        2 服务器返回数据中带有token信息。
        
    token位置: 返回数据url、head、body、cookies
    */


      2 博客园登录 : cookie

    1 : 访问url: https://passport.lagou.com/login/login.html

    2 : 观察请求数据,红框内。

    1 : 再访问url: https://passport.lagou.com/login/login.html

    2 : 观察请求数据,红框内。

    3 : 多次实验结论,请求登录拉勾网,除了用户名和密码之外,还要提交两个随机值(X_Anti_Forge_Token和X_Anti_Forge_Code)。

    1 : 找到第一次出现两个随机值的地方,是在登录页面。

    # coding:utf-8
    import requests
    import urllib3
    urllib3.disable_warnings() # 忽略警告
    
    # python微型浏览器
    s = requests.session()
    
    # 登录拉勾网
    
    url = "https://passport.lagou.com/login/login.html"
    
    head = {
        "Host" : "passport.lagou.com",
        "User-Agent" : "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36"
    }
    r = s.get(url, headers = head, verify = False)
    print(r.text)
        正则表达式
        BeautifulSoup https://www.cnblogs.com/yoyoketang/p/9098096.html
  • 相关阅读:
    各种算法七
    各种算法六
    使用URLConnection调用axis1.4开发的webservice
    JDBC结果集rs.next()注意事项
    URLConnection调用接口
    axis1.4开发webservice客户端(快速入门)-基于jdk1.4
    axis1.4开发webservice服务端(快速入门)-基于jdk1.4
    FMDB数据库的简单实用
    Xcode5 取消项目ARC,或者单个类ARC切换
    用CornerStone配置SVN,HTTP及svn简单使用说明
  • 原文地址:https://www.cnblogs.com/huafan/p/9668131.html
Copyright © 2011-2022 走看看