常见浏览器获取本地cookie的方法

您所在的位置:网站首页 获取cookie名称的方法 常见浏览器获取本地cookie的方法

常见浏览器获取本地cookie的方法

2024-06-06 04:49| 来源: 网络整理| 查看: 265

部分网站无法自动生成或者使用selenium获取cookie(某宝模拟登录会被检测出来,需要ua参数),这时可以尝试在网站中手动登录后,获取浏览器保留在本地中的cookie;

Chrome import os import json import base64 import sqlite3 from win32crypt import CryptUnprotectData from cryptography.hazmat.primitives.ciphers.aead import AESGCM # 获取encrypted_key def get_string(s_local_state): with open(s_local_state, 'r', encoding='utf-8') as f: s_encrtpted_key = json.load(f)['os_crypt']['encrypted_key'] return s_encrtpted_key def pull_the_key(base64_encrypted_key): c_encrypted_key_with_header = base64.b64decode(base64_encrypted_key) c_encrypted_key = c_encrypted_key_with_header[5:] c_key = CryptUnprotectData(c_encrypted_key, None, None, None, 0)[1] return c_key # v10版本解密 def decrypt_string(c_key, c_data): c_nonce, c_cipherbytes = c_data[3:15], c_data[15:] aesgcm = AESGCM(c_key) c_plainbytes = aesgcm.decrypt(c_nonce, c_cipherbytes, None) s_plaintext = c_plainbytes.decode('utf-8') return s_plaintext # 获取 Chrome 或 Edge 登录本地cookies def get_cookie_from_chrome(s_browser_name, s_host): """ s_browser_name: 浏览器名称(Google Chrome, Microsoft Edge) s_host: 域名 例如: '.umeng.com' """ # 获取相关浏览器本地cookie路径 if s_browser_name == 'Google Chrome': s_path = r'\Google\Chrome\User Data\Local State' s_cookie = r'\Google\Chrome\User Data\Default\Cookies' else: s_path = r'\Microsoft\Edge\User Data\Local State' s_cookie = r'\Microsoft\Edge\User Data\Default\Cookies' print('{}浏览器cookies本地路径:{}'.format(s_browser_name, s_cookie)) s_local_state = os.environ['LOCALAPPDATA'] + s_path s_cookie_path = os.environ['LOCALAPPDATA'] + s_cookie sql = "select host_key,name,encrypted_value from cookies where host_key='%s'" % s_host # 获取d_cookie with sqlite3.connect(s_cookie_path) as conn: p_cursor = conn.cursor() p_res = p_cursor.execute(sql).fetchall() p_cursor.close() key = pull_the_key(get_string(s_local_state)) d_cookie = dict() for s_host_key, s_name, c_encrypted_value in p_res: if c_encrypted_value[0:3] == b'v10': d_cookie[s_name] = decrypt_string(key, c_encrypted_value) else: d_cookie[s_name] = CryptUnprotectData(c_encrypted_value)[1].decode() return d_cookie Firefox import os import sqlite3 # 获取火狐浏览器cookies本都存储位置 def get_firfox_cookie_path(): # 火狐浏览器文件路径 s_cookiepath_common = os.environ['APPDATA'] + r"\Mozilla\Firefox\Profiles" # 获取所有文件 l_folds_arr = os.listdir(s_cookiepath_common) # 获取所有文件后缀名 l_folds_end = [os.path.splitext(s_file)[-1][1:] for s_file in l_folds_arr] # 判断是否存在后缀为default-release if 'default-release' in l_folds_end: cookie_fold_index = l_folds_end.index('default-release') else: cookie_fold_index = l_folds_end.index('default') # 获取cookies文件所在,目录 cookie_fold = l_folds_arr[cookie_fold_index] cookie_path = os.path.join(s_cookiepath_common, cookie_fold) return os.path.join(cookie_path, 'cookies.sqlite') # 获取 狐火浏览器 登录本地cookies def get_cookie_from_firefox(s_host): # 获取cookies所在目录 cookie_path = get_firfox_cookie_path() print('FireFox浏览器cookies本地路径:{}'.format(cookie_path)) # 获取所需网站的cookies sql = "select host,name,value from moz_cookies where host='%s'" % s_host # 读取cookies文件内容 with sqlite3.connect(cookie_path) as conn: cur = conn.cursor() d_cookie = dict() res = cur.execute(sql).fetchall() for host_key, name, value in res: if name == 'miniDialog': continue d_cookie[name] = value if d_cookie: return d_cookie Microsoft Edge

Edge 获取本地cookie的方法和Chrome一致



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3