python3实现读取chrome浏览器cookie
好几年前我在做一些自动化的脚本时,脑子里也闪过这样的想法:能不能直接把浏览器的cookies取出来用呢?
直到昨天看到代码《python模拟发送动弹》,想起来当年我也曾经有类似的想法没能完成,那就优先拿这个练手,之后的代码也会用这个功能。
直接从浏览器中取出cookies,有以下好处和用途:
1、不需要配置用户密码,直接读出浏览器中cookies就得到一样的身份,用来完成各种自动化操作。
2、部分网站登录会更新Session,会导致之前成功登录的Session失效,与浏览器使用相同的Session,不用进行登录操作,不会互相挤下线。
3、全是废话,我不想写了,行吗?
使用到软件的sqlite3的图形管理工具有:
SQLiteDatabaseBrowserPortablehttps://www.nhooo.com/database/251740.html
sqlitespyhttps://www.nhooo.com/database/18390.html
使用到的python库有:
sqlite3python标准库,不需要下载安装
pywin32pywin32windows的API库,让python可以调用各种各样的windowsAPI,代码中用到的win32crypt就是属于pywin32库的一部分。建议手动下载对应版本pywin32安装https://www.nhooo.com/softs/416136.htmlhttps://www.nhooo.com/softs/416131.html
requestsrequests是一个相对比较简单易用的http库,用来代替urllib23之类的标准库,使用命令安装pipinstallrequests
看代码:
importos importsqlite3 importrequests fromwin32.win32cryptimportCryptUnprotectData defgetcookiefromchrome(host='.oschina.net'): cookiepath=os.environ['LOCALAPPDATA']+r"\Google\Chrome\UserData\Default\Cookies" sql="selecthost_key,name,encrypted_valuefromcookieswherehost_key='%s'"%host withsqlite3.connect(cookiepath)asconn: cu=conn.cursor() cookies={name:CryptUnprotectData(encrypted_value)[1].decode()forhost_key,name,encrypted_valueincu.execute(sql).fetchall()} print(cookies) returncookies #运行环境windows2012serverpython3.4x64chrome50 #以下是测试代码 #getcookiefromchrome() #getcookiefromchrome('.baidu.com') url='http://my.oschina.net/' httphead={'User-Agent':'Safari/537.36',} #设置allow_redirects为真,访问http://my.oschina.net/可以跟随跳转到个人空间 r=requests.get(url,headers=httphead,cookies=getcookiefromchrome('.oschina.net'),allow_redirects=1) print(r.text)