(高版本)浏览器获取cookie信息-升级版

缘由

自从上次发布过一篇关于python获取谷歌浏览器cookie的博客,就很久没有去看了,昨天临时看了一眼,发现出了问题,那个python代码仅能获取Chrome版本80的 cookie 信息,高版本的却获取不到
《(高版本)浏览器获取cookie信息-升级版》

嘿! 神奇! 咋办? 改呗…

心急的小伙伴直接去看plan B吧 , 如果你想自己开发或又懂点python , 去看plan A 也行
《(高版本)浏览器获取cookie信息-升级版》

修改python代码

一运行,各种报错,(傻了),为啥会出错,这不得去问一趟度娘:

chrome80以前的版本的加解密是直接通过DPAPI来进行加解密

估计应该是谷歌浏览器厂商把加密方式改了吧!!!
《(高版本)浏览器获取cookie信息-升级版》

突然想起来,之前谷歌存储cookie的文件,然后去找了一圈,好家伙,文件直接是空的,今天又更新了,cookie文件直接没有了

《(高版本)浏览器获取cookie信息-升级版》
看来,厂商确实把存储方式改掉了
《(高版本)浏览器获取cookie信息-升级版》
去修改代码吧,还得去查资料,再改也是没有办法,干脆就重新写一个吧!!!

plan A

因为加密方式也懒的研究了(声明不是懒,是因为有了更好的办法),并且最近刚学会selenium,何不尝试用一下这个,并且也不受chrome版本限制,唯一的坏处就是得会python,(因为爬虫的多样性,我也不知道你想获取哪个页面的cookie信息,并且还需要登录,因为selenium是一个模拟人操作浏览器网页,可以实现自动化,测试等,所以就算获取cookie也还要去登录,这样获取的cookie才能使用)
《(高版本)浏览器获取cookie信息-升级版》

代码先摆上了,需要的可以复制,就是得自己去改,下面仅提供了百度示例(带注释)

另外使用此代码,别忘了配置环境变量,还有对应chrome版本的驱动,驱动要和当前浏览器版本尽量保持一致(所以用起来麻烦点)

chrome驱动链接

import time

from selenium import webdriver
from selenium.webdriver.chrome.service import Service


class getCookie:

    def __init__(self):
        options = webdriver.ChromeOptions()
        options.add_experimental_option('excludeSwitches',
                                        ['enable-automation'])
        s = Service(f'.\chromedriver.exe')
        self.driver = webdriver.Chrome(options=options, service=s)
        self.driver.maximize_window()
        # 设置页面超时时间
        self.driver.set_page_load_timeout(10)

    def run(self):
        print('开始')
        # 捕获浏览器超时异常,停止加载
        try:
            # 放入域名, 百度测试
            self.driver.get("https://baidu.com")
            print('等待5秒')
            time.sleep(5)
            # 如需登录的话   可以参考这篇  selenium 文档   https://www.w3cschool.cn/selenium2/selenium2-c93i3gdu.html



        except Exception:
            # 停止页面加载
            self.driver.execute_script('window.stop()')

        print('获取Cookie')
        cookie_list=self.driver.get_cookies()

        for cookie in cookie_list:
            print(cookie)
            print('获取的name='+cookie['name'])
            print('获取的value='+cookie['value'])

        with open('cookie.txt', 'w') as f:
            # 转换字符串   此处未修改  懂代码的可以在上述循环中自定义需要的格式
            f.write(repr(cookie_list))
        print('写入文件完成')
        # 关闭页面
        self.driver.quit()

# 程序启动处
if __name__ == '__main__':
    getCookie().run()

写到这里,感觉这样获取还是挺麻烦的,又要自己改代码,又要改配置的,还得测试(是我的话估计直接跳过去了)
《(高版本)浏览器获取cookie信息-升级版》

然后就有了另一个计划:从谷歌本身出发

plan B

不到几个小时,就写出了一款谷歌插件,完全对应了懒癌晚期(先高兴一会,哈哈)
《(高版本)浏览器获取cookie信息-升级版》
技术的话也不难,然后就有了个想法,可以把这个东西一直维护下去,毕竟可用性还是挺高的,也方便

虽然是短时间写出来的吧,但是毕竟只是刚生产出来,后期可以慢慢的去维护,在里面加东西,加服务

使用的话就看下面吧(维护下去的话,会跟进使用文档去进行说明)

首先就是安装,目前也是刚刚出来,只有一个简单的功能,所以还没有上架谷歌商店(,如果上线会进行通知),所以安装的话,就先去资源处下载 点我去资源处下载呦 ,名字暂定为 terminal data

安装步骤:

  1. 下载此资源包至本地<无需解压>
  2. 打开谷歌扩展程序 chrome://extensions/
  3. 打开开发者模式
  4. 将资源包拉载进来

使用方法:

cue:如果是刚安装此插件 , 必须刷新页面才可使用 , 否则获取不到cookie

在需要获取cookie的页面,鼠标右键,然后进行复制或者下载此页面的cookie页面的信息

安装后,使用步骤如下:
《(高版本)浏览器获取cookie信息-升级版》

下面放上结果图(正常的话是一大长串cookie,下面是为了方便展示,手动换行了)
《(高版本)浏览器获取cookie信息-升级版》
为了方便区分,我就用不同的颜色标记了起来
《(高版本)浏览器获取cookie信息-升级版》

此处应有小结:
此插件后续会更偏向于开发测试,(咱也都是遵纪守法的良好公民)

目前插件已经上架
想看更多可以点击 terminal data插件

    原文作者:GG_com
    原文地址: https://blog.csdn.net/GG_com/article/details/124122305
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞