本文目录导读:

我来为您介绍如何编写Cookie导出导入脚本,这里提供几种常见方法的实现:
使用Python的requests库
导出Cookie
import requests
import json
import pickle
# 导出Cookie到文件(两种格式)
# 方法1:保存为JSON格式
def export_cookies_jsons(session, filename='cookies.json'):
cookies = session.cookies.get_dict()
with open(filename, 'w') as f:
json.dump(cookies, f)
print(f"Cookies已导出到 {filename}")
# 方法2:使用pickle保存完整的CookieJar
def export_cookies_pickle(session, filename='cookies.pkl'):
with open(filename, 'wb') as f:
pickle.dump(session.cookies, f)
print(f"Cookies已导出到 {filename}")
# 使用示例
session = requests.Session()
# ... 进行登录操作 ...
session.post('https://example.com/login', data={'username': 'user', 'password': 'pass'})
# 导出Cookie
export_cookies_json(session)
export_cookies_pickle(session)
导入Cookie
# 从JSON文件导入Cookie
def import_cookies_from_json(session, filename='cookies.json'):
with open(filename, 'r') as f:
cookies = json.load(f)
# 将Cookie设置到session中
for name, value in cookies.items():
session.cookies.set(name, value)
print(f"从 {filename} 导入Cookies成功")
# 从pickle文件导入Cookie
def import_cookies_from_pickle(session, filename='cookies.pkl'):
with open(filename, 'rb') as f:
cookies = pickle.load(f)
session.cookies.update(cookies)
print(f"从 {filename} 导入Cookies成功")
# 使用示例
new_session = requests.Session()
import_cookies_from_json(new_session)
# 或
import_cookies_from_pickle(new_session)
使用浏览器扩展开发(Chrome)
导出脚本
// 导出所有Cookie
function exportCookies() {
const cookies = [];
chrome.cookies.getAll({}, function(allCookies) {
allCookies.forEach(cookie => {
cookies.push({
name: cookie.name,
value: cookie.value,
domain: cookie.domain,
path: cookie.path,
secure: cookie.secure,
httpOnly: cookie.httpOnly,
sameSite: cookie.sameSite
});
});
// 创建下载
const blob = new Blob([JSON.stringify(cookies, null, 2)], {type: 'application/json'});
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = `cookies_${new Date().getTime()}.json`;
a.click();
URL.revokeObjectURL(url);
});
}
导入脚本
// 导入Cookie文件
function importCookies(file) {
const reader = new FileReader();
reader.onload = function(e) {
const cookies = JSON.parse(e.target.result);
cookies.forEach(cookie => {
chrome.cookies.set({
url: `https://${cookie.domain}${cookie.path}`,
name: cookie.name,
value: cookie.value,
domain: cookie.domain,
path: cookie.path,
secure: cookie.secure,
httpOnly: cookie.httpOnly,
sameSite: cookie.sameSite
});
});
console.log(`成功导入 ${cookies.length} 个Cookie`);
};
reader.readAsText(file);
}
使用Node.js
const axios = require('axios');
const fs = require('fs').promises;
const { CookieJar } = require('tough-cookie');
// 导出Cookie
async function exportCookies(jar, filename = 'cookies.json') {
const cookies = await jar.getCookies('https://example.com');
const cookieData = cookies.map(cookie => ({
key: cookie.key,
value: cookie.value,
domain: cookie.domain,
path: cookie.path,
secure: cookie.secure,
httpOnly: cookie.httpOnly
}));
await fs.writeFile(filename, JSON.stringify(cookieData, null, 2));
console.log(`Cookies已导出到 ${filename}`);
}
// 导入Cookie
async function importCookies(jar, filename = 'cookies.json') {
const data = await fs.readFile(filename, 'utf8');
const cookieData = JSON.parse(data);
for (const cookie of cookieData) {
await jar.setCookie(
`${cookie.key}=${cookie.value}`,
`https://${cookie.domain}${cookie.path}`
);
}
console.log(`从 ${filename} 导入Cookies成功`);
}
// 使用示例
const jar = new CookieJar();
// 导出
await exportCookies(jar);
// 导入
await importCookies(jar);
使用Selenium(浏览器自动化)
from selenium import webdriver
import json
import pickle
# 导出Cookie
def export_cookies_selenium(driver, filename='cookies.json'):
cookies = driver.get_cookies()
with open(filename, 'w') as f:
json.dump(cookies, f)
print(f"Cookies已导出到 {filename}")
# 导入Cookie
def import_cookies_selenium(driver, filename='cookies.json'):
with open(filename, 'r') as f:
cookies = json.load(f)
for cookie in cookies:
# 有些Cookie属性导入时可能需要调整
if 'expiry' in cookie:
cookie['expiry'] = int(cookie['expiry'])
driver.add_cookie(cookie)
print(f"从 {filename} 导入Cookies成功")
# 使用示例
driver = webdriver.Chrome()
driver.get('https://example.com')
# 导出
export_cookies_selenium(driver)
# 导入(需要先访问目标域名)
driver.get('https://example.com')
import_cookies_selenium(driver)
driver.refresh() # 刷新页面以应用Cookie
命令行工具(Python)
#!/usr/bin/env python3
import argparse
import requests
import json
def main():
parser = argparse.ArgumentParser(description='Cookie导入导出工具')
parser.add_argument('action', choices=['export', 'import'], help='操作类型')
parser.add_argument('--file', '-f', default='cookies.json', help='Cookie文件路径')
parser.add_argument('--domain', '-d', help='Cookie域(导入时使用)')
args = parser.parse_args()
if args.action == 'export':
# 这里需要根据实际情况从session获取Cookie
# 示例只是展示结构
session = requests.Session()
cookies = session.cookies.get_dict()
with open(args.file, 'w') as f:
json.dump(cookies, f)
print(f"Cookies已导出到 {args.file}")
elif args.action == 'import':
with open(args.file, 'r') as f:
cookies = json.load(f)
session = requests.Session()
for name, value in cookies.items():
session.cookies.set(name, value, domain=args.domain)
print(f"从 {args.file} 导入Cookies成功")
if __name__ == '__main__':
main()
使用建议
-
安全考虑:
- 不要在公共场合存储含有敏感信息的Cookie文件
- 导出后加密存储
- 及时删除不需要的Cookie文件
-
兼容性:
- 不同格式的Cookie数据可能不完全兼容
- 某些Cookie可能有有效期限制
-
实际应用:
- 自动化测试中保持会话状态
- 爬虫程序中避免重复登录
- 多设备间同步登录状态
选择哪种方式取决于您的具体需求和使用场景。