首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

python–爬虫–模拟登录全面介绍和简例–以抓取雅卓app为例(2)

python–爬虫–模拟登录全面介绍和简例–以抓取雅卓app为例(2)

了解session

刚才提到了cookie不安全,所以有了session机制。简单来说(每个框架都不一样,这只是举一个通用的实现策略)

session的机制,很简单,就是根据用户名和密码,生成了一段随机的字符串,这段字符串是有过期时间的。

session是服务器生成的,存储在服务器的数据库或者文件中,然后把sessionID发送给用户,用户存储在本地cookie中。每次请求时,把这个session ID带给服务器,服务器根据session ID到数据库中去查询,找到是哪个用户,就可以对用户进行标记了。

与原生的cookie机制对比区别在于
原生cookie方案是记录了用户名帐号和密码的
session则只记录一个对应的id,服务端再根据id去数据库中查询用户信息。

session机制的整过过程是这样:
服务器根据用户名和密码,生成一个session ID,存储到服务器的数据库中。
用户登录访问时,服务器会将对应的session ID发送给用户(本地浏览器)。
浏览器会将这个session ID存储到cookie中,作为一个键值项。
以后,浏览器每次请求,就会将含有session ID的cookie信息,一起发送给服务器。
服务器收到请求之后,通过cookie中的session ID,到数据库中去查询,解析出对应的用户
Django服务端中的session实现机制–加深对session的理解

第一步:对用户登录信息进行加密,生成一个sessionID,存储到数据库中。

    Session_key:服务器给用户返回的ID
    Session_data:一段加密的文字。用户名,密码,一些其他的用户信息。把这些信息生成一段字符串,是加密的
    expire_date:django后台会设置过期时间。 主要是担心session被黑客截取,那就一直可以用,盗用数据。



第二步,当用户登录时,服务器会给本地浏览器返回一些cookie信息,包括session ID。

第三步:以后浏览器每次访问时,浏览器都会把 session ID带过来,这样服务器不需要知道你的用户名,就知道是哪个用户的访问了。
服务器是如何把sessionID转换成用户名的?

如上图所示,在Django中,需要对session进行配置。这个INSTALLED_APPS 是会对每次request和response进行拦截,拦截到浏览器发送过来的request时,找到其中的session信息,然后到数据库中进行查询,找到session_data,再做解密,就知道所有的用户信息了,取出user信息。新建完Django项目之后,这个sessions信息就配置好了。如果注释掉这一个session配置,自动登录机制就会失效,无法使用。
返回列表