![pYYBAGP4XeeAEXihAACf-mJuNDI078.png](https://file.elecfans.com/web2/M00/94/28/pYYBAGP4XeeAEXihAACf-mJuNDI078.png)
一.项目背景
由于http协议是无状态的协议,简单理解为如果客户端向服务器发送两次请求,这
两次请求是独立的,,也就是说服务器根本不知道是同一个客户端发送过来的请求。所
以为了维护客户端的请求状态,Cookie技术应用而生。
Cookie是通过客户端保持状态的解决方案,它是由服务器发送给客户端的特殊信息,
而这些特殊信息以文本形式存储放在客户端,然后客户端每次向服务器发送请求时会携
带上大量这些特殊信息。
Session是通过服务器来保持状态的,客户端第一次访问时,服务器为这个客户端
创建唯一特征码,也就是SessionID,客户端再次请求时,服务器根据SessionID在服
务器数据库中查询,若有这个SessionID,则会做相应响应。
![pYYBAGP4Xf6ASv-UAABvDi2TSSs653.png](https://file.elecfans.com/web2/M00/94/29/pYYBAGP4Xf6ASv-UAABvDi2TSSs653.png)
Cookie属性
》》name=value,键和值,具体的Cookie名称和内容
》》expires=xxxxx,过期时间,Cookie有效期
》》path=/,根路径,Cookie作用的具体路径位置
》》httpOnly,此Cookie只能服务器操作,JS无法操作
二.实现过程
本次项目我们爬取的目标网址为闪职网,一个专门为爬虫工程师进行练习的网址,也
在此非常感谢网站后台维护人员辛勤付出,网址为:http://shanzhi.spbeen.com/,从
中可以看出Cookies有csrftoken和shanzhi_kmer以及它们各自对应的值
![poYBAGP4Xh6AKgHIAACeEj0S0n0378.png](https://file.elecfans.com/web2/M00/93/A7/poYBAGP4Xh6AKgHIAACeEj0S0n0378.png)
from selenium import webdriver
import time
import json
#用户名,此处我们注册四个用户,如果无效读者后期可自行注册
users=[
{'username':'test123456','password':'test123456'},
{'username':'wfq123','password':'123'},
{'username':'cauwfq','password':'cauwfq'},
{'username':'cauwfq1234','password':'cauwfq1234'}
]
#登录网址
def login(username,password):
#初始化url
url='http://shanzhi.spbeen.com/login/'
#初始化webdriver
driver=webdriver.Chrome()
#最大化窗口
driver.maximize_window()
#请求url
driver.get(url)
#用户名输入框
username_input=driver.find_element_by_xpath('//*[@id="username"]')
#发送用户名
username_input.send_keys(username)
#休眠1s
time.sleep(1)
#密码输入框
password_input=driver.find_element_by_xpath('//*[@id="MemberPassword"]')
#发送密码
password_input.send_keys(password)
#休眠1s
time.sleep(1)
#点击登录按钮
driver.find_element_by_xpath('/html/body/div/div/div[2]/button').click()
#休眠3s
time.sleep(3)
#获取cookies
cookie_lists=driver.get_cookies()
#获取cookie值
cookie_dict={cookie['name']:cookie['value'] for cookie in cookie_lists}
#写入文件
with open('./cookies.txt','a+',encoding='utf8') as f:
#写入文件
f.write(json.dumps(cookie_dict))
#写入换行
f.write('n')
#退出浏览器
driver.quit()
if __name__ == '__main__':
#遍历每个用户
for user in users:
#登录网站
login(user['username'],user['password'])
![pYYBAGP4Xk-AHI2bAABsEelmJsU078.png](https://file.elecfans.com/web2/M00/94/29/pYYBAGP4Xk-AHI2bAABsEelmJsU078.png)
![poYBAGP4XlyAcphiAADcL-UP6Kw742.png](https://file.elecfans.com/web2/M00/93/A7/poYBAGP4XlyAcphiAADcL-UP6Kw742.png)
#测试Cookie有效性
import requests
import json
import re
#读取cookies数据
with open('cookies.txt','r',encoding='utf8') as f:
#读取存储为列表
cookies_list=f.readlines()
#存储结果
result=''
#遍历每个Cookie
for cookie_str in cookies_list:
#加载Cookie
cookie_dict=json.loads(cookie_str)
#构建会话
session=requests.session()
#加入到会话中
session.cookies=requests.utils.cookiejar_from_dict(cookie_dict)
#请求网址
response=session.get('http://shanzhi.spbeen.com/login/')
#输出响应内容
#print(response,response.text)
#存储结果
result+=response.text
#输出登录结果,发现欢迎结果为4个,四个用户登录成功
print(re.findall('欢迎',result))
![poYBAGP4XnaAXeZlAABZQo1oAWI827.png](https://file.elecfans.com/web2/M00/93/A7/poYBAGP4XnaAXeZlAABZQo1oAWI827.png)
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
服务器
+关注
关注
12文章
9342浏览量
86208 -
HTTP
+关注
关注
0文章
511浏览量
31619 -
Cookie
+关注
关注
0文章
30浏览量
10435
发布评论请先 登录
相关推荐
php中Cookie及其使用
呢?还是让我们看了下面的内容,再做回答吧。 (1)Cookie技术简介 在WEB技术发展史上,Cookie技术的出现是一个重大的变革。最先是Netscape在它的Netscape
发表于 01-11 09:25
Cookie是怎样工作的?
上面的Cookie在浏览器上只保存到1999年3月1日1秒。当然,如果浏览器上Cookie 太多,超过了系统所允许的范围,浏览器将自动对它进行删除。至于属性Path,用来指定
发表于 01-11 09:32
cookie是什么意思
到1999年3月1日1秒。当然,如果浏览器上Cookie 太多,超过了系统所允许的范围,浏览器将自动对它进行删除。至于属性Path,用来指定Cookie将被发送到服务器的哪一个目录路径
发表于 01-11 21:26
cookie和session的不同作用
,Cookie和Session还有以下区别:1. 存取方式的不同Cookie中只能保管ASCII字符串,假如需求存取Unicode字符或者二进制数据,需求先进行编码。Cookie中也不
发表于 01-09 17:39
Cookie和Session的区别总结
,Cookie和Session还有以下区别:1. 存取方式的不同Cookie中只能保管ASCII字符串,假如需求存取Unicode字符或者二进制数据,需求先进行编码。Cookie中也不
发表于 01-10 15:11
构建一个Cookie JAR激情时钟
描述Cookie JAR激情时钟我想重现几年前我最古老的项目之一,当时我建造了一个类似的时钟。只是这一次,我想应用不同的技术并提出更好的设计。这个时钟将滚动浏览一系列浪漫消息,并且每小时显示一条
发表于 08-01 06:44
什么是Cookie?
什么是Cookie?
按照Netscape官方文档中的定义,Cookie是在HTTP协议下,服务器或脚本可以维护客户工作站上信息的一种方式。Cooki
发表于 01-11 09:27
•2316次阅读
Cookie数据是如何移动的?
Cookie数据是如何移动的?
Cookie数据只是网站存储在您的硬盘上的一个名称/值对。所有Cookie数据都是这样。网站存储此数据,并在以后接收此数据。一个网站只能接收其
发表于 08-04 08:33
•932次阅读
网站是如何使用Cookie的?
网站是如何使用Cookie的?
Cookie由于为使用网站的人解决了一个大问题而逐渐发展起来。从广义上说,Cookie允许网站在计算机上存储状态信息,这些信息可让网站记住浏
发表于 08-04 08:33
•1678次阅读
cookie的作用
cookie也可以叫做浏览器缓存,主要就是为了辨别用户的资料,有两种类型分别是会话cookie和持久cookie。本文主要详细阐述cookie的作用以及
cookie和session区别
本视频主要详细阐述了cookie和session区别,cookie数据存放在客户的浏览器上,session数据放在服务器上。cookie不是很安全,别人可以分析存放在本地的COOKIE
评论