qpython3 讀取安卓lastpass Cookies
之前我的博客寫了python讀取windows chrome Cookies怎憋,沿著同樣的思路,這次本來想嘗試讀取安卓chrome Cookies辆雾,
但是可能是chrome的sqlite3版本比較高失敗了,so改成讀取lastpass 的Cookies。
背景介紹:
qpython3 是一個(gè)基于sl4a實(shí)現(xiàn)的能讓python3跑在安卓手機(jī)上集成環(huán)境。
lastpass 是一個(gè)密碼管理器屎篱,安卓版lastpass 內(nèi)置了一個(gè)web瀏覽器项乒。經(jīng)分析lastpass的Cookies的表名啰劲,字段名與chrome一樣,且value明文存儲(chǔ)不加密檀何。
requests 是一個(gè)python 第三方http庫(kù)呈枉,qpython3中集成了。
sqlite3 是一個(gè)嵌入式數(shù)據(jù)庫(kù)埃碱,很多軟件和APP用到了sqlite猖辫。比如chrome lastpass瀏覽器用來存儲(chǔ)cookies和訪問記錄之類的信息。
由于找不到好的方法讓python代碼以root權(quán)限讀取其它APP數(shù)據(jù)的方法砚殿,
于是采用調(diào)用命令su -c cp 的方法直接把文件拷貝到SD卡再讀取啃憎。
以下代碼是qpython3下讀出lastpass cookies并成功用于發(fā)送博客園閃存的例子:
運(yùn)行環(huán)境 qpython3 安卓4.4 必須root 手機(jī)索尼L39H 安卓版lastpass,運(yùn)行前需要在lastpass中登錄一次博客園似炎。
#-*-coding:utf8;-*-
#qpy:3
#qpy:console
import sqlite3
import os
import requests
from random import random
#path='/data/data/com.android.chrome/app_chrome/Default/Cookies'
path='/data/user/0/com.lastpass.lpandroid/app_webview/Cookies'
sd="/sdcard"
def sucp(source,dest):
os.system("su -c cp -f %s %s" % ( source , dest ) )
def getcookies(host):
sql="select host_key,name,value from Cookies where host_key= '%s'" % host
cu=sqlite3.connect('/sdcard/Cookies').cursor()
result=cu.execute(sql).fetchall()
cookies={name:value for host_key,name,value in result}
cu.close()
print(cookies)
return cookies
sucp(path,sd)#用root權(quán)限拷貝文件到sd卡目錄下
#以下代碼用來發(fā)送博客園閃存
url="http://ing.cnblogs.com/ajax/Ing/MobileIngSubmit"
httphead={'User-Agegnt':'Safari/537.36',}
data={"content":"來自qpython3 發(fā)送的閃存 %s" % random(),"publicFlag":1}
res=requests.post(url,headers=httphead,data=data,cookies=getcookies('.cnblogs.com')).text
print(res)
另一個(gè)反向思路的應(yīng)用是可以實(shí)現(xiàn)程序用帳號(hào)密碼登錄成功后辛萍,把Cookies信息寫到用戶瀏覽器的Cookies文件里悯姊,這樣可以不需要手動(dòng)輸入帳號(hào)密碼。
或者也可以實(shí)現(xiàn)一個(gè)瀏覽器的cookies導(dǎo)入到另一個(gè)瀏覽器里贩毕∶跣恚→_→或者同步?
2016年6月1日 14:04:10 codegay