005 python接口 session

Wesley13
• 阅读 599

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发送请求。

005 python接口 session

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

3 session原理

005 python接口 session

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

005 python接口 session

 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。

005 python接口 session

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

4 博客园登录 : cookie

005 python接口 session

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

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

005 python接口 session

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,访问刚才网址。

005 python接口 session

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

005 python接口 session

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

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

005 python接口 session

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

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

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

005 python接口 session

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
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Wesley13 Wesley13
2年前
4cast
4castpackageloadcsv.KumarAwanish发布:2020122117:43:04.501348作者:KumarAwanish作者邮箱:awanish00@gmail.com首页:
Stella981 Stella981
2年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这