缘由
自从上次发布过一篇关于python获取谷歌浏览器cookie的博客,就很久没有去看了,昨天临时看了一眼,发现出了问题,那个python代码仅能获取Chrome版本80的 cookie 信息,高版本的却获取不到
嘿! 神奇! 咋办? 改呗…
心急的小伙伴直接去看plan B吧 , 如果你想自己开发或又懂点python , 去看plan A 也行
修改python代码
一运行,各种报错,(傻了),为啥会出错,这不得去问一趟度娘:
chrome80以前的版本的加解密是直接通过DPAPI来进行加解密
估计应该是谷歌浏览器厂商把加密方式改了吧!!!
突然想起来,之前谷歌存储cookie的文件,然后去找了一圈,好家伙,文件直接是空的,今天又更新了,cookie文件直接没有了
看来,厂商确实把存储方式改掉了
去修改代码吧,还得去查资料,再改也是没有办法,干脆就重新写一个吧!!!
plan A
因为加密方式也懒的研究了(声明不是懒,是因为有了更好的办法),并且最近刚学会selenium,何不尝试用一下这个,并且也不受chrome版本限制,唯一的坏处就是得会python,(因为爬虫的多样性,我也不知道你想获取哪个页面的cookie信息,并且还需要登录,因为selenium是一个模拟人操作浏览器网页,可以实现自动化,测试等,所以就算获取cookie也还要去登录,这样获取的cookie才能使用)
代码先摆上了,需要的可以复制,就是得自己去改,下面仅提供了百度示例(带注释)
另外使用此代码,别忘了配置环境变量,还有对应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()
写到这里,感觉这样获取还是挺麻烦的,又要自己改代码,又要改配置的,还得测试(是我的话估计直接跳过去了)
然后就有了另一个计划:从谷歌本身出发
plan B
不到几个小时,就写出了一款谷歌插件,完全对应了懒癌晚期(先高兴一会,哈哈)
技术的话也不难,然后就有了个想法,可以把这个东西一直维护下去,毕竟可用性还是挺高的,也方便
虽然是短时间写出来的吧,但是毕竟只是刚生产出来,后期可以慢慢的去维护,在里面加东西,加服务
使用的话就看下面吧(维护下去的话,会跟进使用文档去进行说明)
首先就是安装,目前也是刚刚出来,只有一个简单的功能,所以还没有上架谷歌商店(,如果上线会进行通知),所以安装的话,就先去资源处下载 点我去资源处下载呦 ,名字暂定为 terminal data 吧
安装步骤:
- 下载此资源包至本地<无需解压>
- 打开谷歌扩展程序 chrome://extensions/
- 打开开发者模式
- 将资源包拉载进来
使用方法:
cue:如果是刚安装此插件 , 必须刷新页面才可使用 , 否则获取不到cookie
在需要获取cookie的页面,鼠标右键,然后进行复制或者下载此页面的cookie页面的信息
安装后,使用步骤如下:
下面放上结果图(正常的话是一大长串cookie,下面是为了方便展示,手动换行了)
为了方便区分,我就用不同的颜色标记了起来
此处应有小结:
此插件后续会更偏向于开发测试,(咱也都是遵纪守法的良好公民)
目前插件已经上架
想看更多可以点击 terminal data插件