1 session与cookie
首先要理解session和cookie的区别,这是理解模拟登录和网站交互的基础。
cookie是浏览器支持的本地存储方式,是以dict键值对的方式存储的,在浏览器文件中是文本的形式,浏览器会对这个文本进行解析。
Http本身是一种无状态协议,服务器在接收到浏览器的请求之后,直接返回内容给浏览器,不管浏览器是谁请求的。比如浏览新闻的网站,不在乎是谁发起的浏览请求。但是对于像淘宝这种需要记住请求是由哪个对象发起的时候,无状态协议就不能做到了。
有状态请求如下:
cookie的作用就是在浏览器A访问服务器的时候,就给这个A一个id,浏览器会将这个id保存到本地,cookie中,后来的请求都会带着这个id,浏览器就会知道是哪个对象。浏览器为了安全性,cookie存储是有很多要求的,比如服务器A传过来的cookie是放在服务器A的域之下的,是不能跨域访问的,这是一种安全机制。
-
当你使用浏览器访问一个网站的时候,可能就会返回cookie内容,如果将cookie清空,再次访问,还是有信息传回来,所以说,cookie是服务器传给浏览器的,并且保存在本地
-
即使清空,刷新后还是会生成
比如用处就是,当一个用户用登录名密码登陆后,服务器将这些信息作为cookie返回了,下一次登录的时候就可以从本地自动获取信息进行登录,不需要再输用户名和密码了。但是,同时也就出现了安全隐患,只要有人拿着电脑,就能从本地cookie中查看信息浏览记录等。
有状态请求中,第一次请求后发现没有id,服务器就会分配一个id,这个id可以是userid,也可以是任意一段随机的字符串,可以叫做sessionid。每个框架生成session的机制是不一样的,
为了解决cookie的泄露隐患,就产生了session,比如说用户注册登录之后,根据它的用户名和密码名生成sessionid,并且将这个id发给用户,浏览器将这个sessionid存在cookie中,然后再次请求服务器的时候,服务器就知道是谁在请求,取出这个用户对应的信息。
2 cookie与session的主要区别
- cookie是第一次打开浏览器返回信息,关闭了浏览器下一次再打开浏览器时可以携带从本地cookie中获取的信息,从而知道是同一个浏览器。而session是在一次打开浏览器之后的连续操作中,通过服务器给了指定的会话id,必须每次访问网址时都携带这个sessionid,服务器才知道这个上一个操作是同一个人在完成。
- cookie是需要去本地获取,session是会话过程中自动携带的。
- cookie是存放在客户端的,session是存在服务器端的。
服务器识别同一个操作对象的原理
服务器中可能有一张session表来记录访问的对象,有session_id,session_data,以及过期时间,如果当前没有浏览器正在访问这个网站,那么session表就为空。如果有账号登录成功,这个表中就会有一条记录,有服务器给用户返回的id,有用户的加密后的数据等。这个sessionid会返回给浏览器,保存在cookie当中,后面浏览器在对这个网站的页面进行访问的时候都会带着sessionid,然后服务器就不需要知道你的用户名和密码,就知道是哪个用户了。尽管sessionid放在cookie中虽然有过期时间,但是也不安全的,坏人获取了sessionid就能浏览你的信息了,可是相对于cookie中的账号名密码这种而言,还是安全的多,至少需要用sessionid模拟登录又或者必须会盗用sessionid。所以,浏览网站最后需要退出登录,就会清空sessionid信息了。
ssesion技术
本身有两部分
知道浏览器两次访问是同一个人,这是用cookie 保存sessionid实现的
在服务端的session对象的内容,可以访问到,这些变量信息时存在服务器的中的。
3 selenium模拟知乎登录
-
常见HTTPcode
-
安装requests库
pip3 install requests
网友评论