0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何构建Cookie池-1

汽车电子技术 来源:Python数据分析之旅 作者: cauwfq 2023-02-24 14:52 次阅读

pYYBAGP4XeeAEXihAACf-mJuNDI078.png

一.项目背景

   由于http协议是无状态的协议,简单理解为如果客户端向服务器发送两次请求,这
   两次请求是独立的,,也就是说服务器根本不知道是同一个客户端发送过来的请求。所
以为了维护客户端的请求状态,Cookie技术应用而生。
   Cookie是通过客户端保持状态的解决方案,它是由服务器发送给客户端的特殊信息,
而这些特殊信息以文本形式存储放在客户端,然后客户端每次向服务器发送请求时会携
带上大量这些特殊信息。
   Session是通过服务器来保持状态的,客户端第一次访问时,服务器为这个客户端
创建唯一特征码,也就是SessionID,客户端再次请求时,服务器根据SessionID在服
务器数据库中查询,若有这个SessionID,则会做相应响应。

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
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

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
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    8120

    浏览量

    82522
  • HTTP
    +关注

    关注

    0

    文章

    466

    浏览量

    30315
  • Cookie
    +关注

    关注

    0

    文章

    28

    浏览量

    10362
收藏 人收藏

    评论

    相关推荐

    php中Cookie及其使用

    呢?还是让我们看了下面的内容,再做回答吧。   (1Cookie技术简介    在WEB技术发展史上,Cookie技术的出现是一个重大的变革。最先是Netscape在它的Netscape
    发表于 01-11 09:25

    Cookie是怎样工作的?

    上面的Cookie在浏览器上只保存到1999年3月11秒。当然,如果浏览器上Cookie 太多,超过了系统所允许的范围,浏览器将自动对它进行删除。至于属性Path,用来指定
    发表于 01-11 09:32

    cookie是什么意思

    到1999年3月11秒。当然,如果浏览器上Cookie 太多,超过了系统所允许的范围,浏览器将自动对它进行删除。至于属性Path,用来指定Cookie将被发送到服务器的哪一个目录路径
    发表于 01-11 21:26

    COOKIE和SESSION会话机制

    COOKIE机制1.什么是COOKIE?当我们在访问一个网站的时候,网站会偷偷的往你身上做个记号,这个东西你可能并不知道,当你下一次,再次访问该网站的时候,网站会先从你身上来找这个记号,判断你是不是
    发表于 07-03 09:13

    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 2121次阅读

    网络Cookie工作原理

    网络Cookie工作原理 引言 虽然大多数网络Cookie使用起来相当简单,但是它们也有自己独特的原理。
    发表于 08-04 08:32 4025次阅读

    Cookie数据是如何移动的?

    Cookie数据是如何移动的? Cookie数据只是网站存储在您的硬盘上的一个名称/值对。所有Cookie数据都是这样。网站存储此数据,并在以后接收此数据。一个网站只能接收其
    发表于 08-04 08:33 833次阅读

    网站是如何使用Cookie的?

    网站是如何使用Cookie的? Cookie由于为使用网站的人解决了一个大问题而逐渐发展起来。从广义上说,Cookie允许网站在计算机上存储状态信息,这些信息可让网站记住浏
    发表于 08-04 08:33 1537次阅读

    什么是Cookie

    什么是Cookie    英文缩写: Cookie 中文译名: 小甜饼 分  类: IP与多
    发表于 02-22 17:18 614次阅读

    cookie的作用

    cookie也可以叫做浏览器缓存,主要就是为了辨别用户的资料,有两种类型分别是会话cookie和持久cookie。本文主要详细阐述cookie的作用以及
    的头像 发表于 12-10 16:12 1.4w次阅读

    cookie和session区别

    本视频主要详细阐述了cookie和session区别,cookie数据存放在客户的浏览器上,session数据放在服务器上。cookie不是很安全,别人可以分析存放在本地的COOKIE
    的头像 发表于 12-12 15:48 10.3w次阅读

    如何构建Cookie池-2

    在之前文章构建Cookie池(一)我们介绍了如何全自动化利用Selenium构建Cookie池。但是在实际开发中,我们经常会遇到反爬措施,成功登录网页的情况也不常见,比如会遇到图形验证
    的头像 发表于 02-24 14:54 373次阅读
    如何<b class='flag-5'>构建</b><b class='flag-5'>Cookie</b>池-2