瀏覽器與服務器建立連接時,可以直接在請求頭或者響應報頭中讀取cookie,但瀏覽器關閉時,會把cookie保存在本地文件中,
存放的形式是以 sqlite3 數據庫形式存在,以后是獲取google本地文件cookie的方法;
import sqlite3
import win32crypt
import os
def parseGoogleCookiefile(cookiesFiles,host=''):
"""
:param cookiesFiles: cookies文件本地路徑
:param host: 服務器域名
:return: type:list
"""
cookies = []
if not os.path.exists(cookiesFiles): #判斷cookie文件是否存在
print("cookies files not exist!")
else:
con = sqlite3.connect(cookiesFiles)
conner = con.cursor()
if host=="":
sql="select host_key,name,encrypted_value,path from cookies" #由於cookie文件是sqlite類型,一個文件相當於一個表,sql
for host_key, name, encrypted_value, path in conner.execute(sql).fetchall(): #遍歷查詢的所有結果
parameter=[]
parameter.append("domain : %s"%host_key)
parameter.append("name : %s"%name)
parameter.append("values : %s"%win32crypt.CryptUnprotectData(encrypted_value)[1].decode()) #將byte類型轉譯
if len(conner.execute(sql).fetchall())<=1:
cookies=parameter
else:
cookies.append(parameter)
else:
sql = "select host_key,name,encrypted_value from cookies where host_key='%s'" % host
#cookies = {name: win32crypt.CryptUnprotectData(encrypted_value)[1].decode() for host_key, name, encrypted_value in conner.execute(sql).fetchall()}
for host_key, name, encrypted_value in conner.execute(sql).fetchall():
parameter=[]
parameter.append("domain : %s" % host_key)
parameter.append("name : %s" % name)
parameter.append("values : %s" % win32crypt.CryptUnprotectData(encrypted_value)[1].decode())
if len(conner.execute(sql).fetchall())<=1:
cookies=parameter
else:
cookies.append(parameter)
print(cookies)
return cookies
if __name__=="__main__":
#parseGoogleCookiefile(r"C:\\Users\liuwq\AppData\Local\Google\Chrome\User Data\Default\Cookies",'www.baidu.com')
parseGoogleCookiefile(r"C:\\Users\liuwq\AppData\Local\Google\Chrome\User Data\Default\Cookies")