获取Chrome浏览器多用户信息

1 kc 1年前 509次点击

代码实现:

import os
import json
import platform

def get_default_user_data_dir():
"""
根据操作系统自动获取 Chrome 默认用户数据目录。
返回值:默认用户数据目录路径(字符串),如果不支持的系统则返回 None。
"""
system = platform.system()
home_dir = os.path.expanduser("~") # 获取用户主目录

if system == "Windows":
return os.path.join(home_dir, "AppData", "Local", "Google", "Chrome", "User Data")
elif system == "Darwin": # macOS
return os.path.join(home_dir, "Library", "Application Support", "Google", "Chrome")
elif system == "Linux":
snap_path = os.path.join(home_dir, "snap", "chrome", "common", "chrome")
config_path = os.path.join(home_dir, ".config", "google-chrome")
return snap_path if os.path.exists(snap_path) else config_path
return None

def get_user_info(user_data_dir=None, reverse_order=True):
"""
从 Chrome 用户数据目录中提取所有配置文件的昵称,返回字典。
参数:
user_data_dir (str, optional):用户指定的 Chrome 用户数据目录路径。
如果未提供,则自动获取默认路径。
reverse_order (bool, optional):控制返回字典的键值顺序。
True(默认):{nickname: profile_name};
False:{profile_name: nickname}。
返回值:
dict:根据 reverse_order 参数返回 {nickname: profile_name} 或 {profile_name: nickname} 格式。
如果获取失败则返回空字典 {}。
"""
# 如果未指定目录,自动获取默认路径
if user_data_dir is "" or None:
user_data_dir = get_default_user_data_dir()
if user_data_dir is None:
return {}

# 检查目录是否存在
if not os.path.exists(user_data_dir):
return {}

# 初始化结果字典
profile_nicknames = {}

# 提取昵称从 Local State 文件
local_state_path = os.path.join(user_data_dir, "Local State")
try:
with open(local_state_path, "r", encoding="utf-8") as f:
local_state = json.load(f)
# 获取 profile.info_cache 中的所有配置文件信息
info_cache = local_state.get("profile", {}).get("info_cache", {})
for profile_name, profile_info in info_cache.items():
nickname = profile_info.get("name")
if nickname: # 确保昵称存在
# 根据 reverse_order 参数决定键值顺序
if reverse_order:
profile_nicknames[nickname] = profile_name
else:
profile_nicknames[profile_name] = nickname
except (FileNotFoundError, json.JSONDecodeError, KeyError):
pass # 如果失败,返回空字典或部分结果

return profile_nicknames

# 示例使用
if __name__ == "__main__":
# 情况 1:未指定目录,默认 reverse_order=True,返回 {nickname: profile_name}
info = get_user_info()
print("Default directory, reverse_order=True:", info)

# 情况 2:指定目录,reverse_order=False,返回 {profile_name: nickname}
custom_dir = "/path/to/custom/user/data"
info = get_user_info(custom_dir, reverse_order=False)
print("Custom directory, reverse_order=False:", info)

# 情况 3:指定目录,默认 reverse_order=True,返回 {nickname: profile_name}
info = get_user_info(custom_dir)
print("Custom directory, reverse_order=True:", info)

自定义指令分享码:

9287568986cad3f1507156107b2dfc2dccb5e3ebf58a5df8b8043bd220f82170104cd438b6b56959bb9594ba07c585977fe3d4e0c5aaec343092cbf53087a2317ad1abee7b89894bb596a73785e013b5f956d7e46156afec6177d10c24ee555c23e22b973da0e38d5449c41887f575a32cec53e1997fce0358f693986b4457d380294690c3d90afe4ff9b6320f4cc5a07f7275ea4ba84d25a46ddbfb82ceac063a327a229861fa048c96b621c703ffaf6ae53065dbd9ca327e63b04f35482e9c499884f22035d8693f9c9a8bb7e1431d128512d49d5ce38460a92cfd6388631719d5e27a2cad5e9ec1b7e5be81a954f1c18cba66a251ecb26c05e1b366af6ddcadbb4f6d1f54246e5390bb07df6e53953adc30e3001be95bb042576b203bf636457e298731c1d6c065f0e2347389c77c2572ea2cb2bd7541c71a76aec32f5c82440ab8e6552caa5296d75c037d3bf6bca463b8e5a60360534265908547029ee7d6f0588519c85da2d8102562e4a57eefb48a9554adc827d1c2742e3d5e1f405fddfb2c007fc52f49683894c39cbddd543acfdd414bed4ec3d34af10cceec4fd9f06e37f4a84ed04664ee06f9eea50fc4871de093b2a2e4b2c22adfacd73940c684cd91ce6e90e756f4e715f98045b55f1578a89e4abf1dd73193e789c3d1b654b7104cd48c229586030fe72da936a91a8e29f746f477dae6deabcd135a2d90f5c2f270b5002ff73f86c221c88a0b42d452c1f19be25f835b9f2b6811f660c297c05b11495518458dcfa0e289afb20ada017814d5512aeccb6eabaf8997252fc8527985e04e402ee37af2aeeea7c177fd98cb5fefd8fd695a75aa580afcdf3c5e240e09118e6b8977bc518b5810d52cefdbcf78de4ea7cd8f082876843cc3341720ce8c78cc965e8f5cdd51ce542175da726e985182e025b2f385b4afdaee3c64f715ea4c64ae2ec03b07132db09d6bed554f97f6779ccd47f9fed6e87f8b3a443853067aca5cc11bca7b43fd2101444e53a5c9d32dfbb369d4d676d0042bbe3b676d39098ac0a93db40614363ed69236a97bbb3d7b61dc9d79ea7ead0ac7e1ee82390879e0c8b6980ba29b69b14125fc41e11e9da7a9e0f5da1b9c5f31547d833fd01e760749254705aa9426c3969630c73e0844fe819f94c1c3fe7f7722cc660ec4e7ebb06bf25991afe3feb3f266832d1347f5243787ea815a9e52a5d05166f44f79bf0791fa92e4106a74882e557b62025898528174bf819cf4dabe01148d1dd5e6ed2378c256297a53f584f86f85c8501488cbadf93970d8169cf3b27e247a0aee0a2a405d0cda8fb780b9e3e0e7e2a5083ec5e94afe2229607d5931b11aa289321169c3f836911931f4b3fd7f51ccd9739a9ab57d211c27cfc8913fb06d1bc1cfeec7943526f4abdc5ed6b4204991241b1f170454ff632b22d73157bc580779fb2bceb2652f364d35493872d1c4aef294ef9eb049ec6a22be30515f1a15e3b0c678c2e8746ef36f6b3a7db07decd358fd193adbb71cf345cb43a64bae1d7ee0fc508e0be442632837e8d33fa129987d300187681bdea05ccd3e4ab56156eaa0dc757bfffa77d208d45f03322c8b0015c0b26b1419abecfeb7cd2e9c72357665718e2de54131847eab7cb49c7e0ca4412a0e5d9f75f70e9b4c08004e93c8249cb41c9e17d83e622123221c93f5527ab11cadfd9d72c57d6b00d56c00de6ab58fd686bed0ba314450e9abb3b5c9fa705884cdeb5f72608d066c5ddc76a7d5fbf25de954431ff49995ebcc6423b97d6dc0aaa93c9526a056468c75e203787ba9047a506943d8bf754ea660b3f79638fe7f0e6e2666afc52e1953b8c4dc6842d9d59c59e8778731175bef9581aec12173e80bd8756ba6b73a0be694fce7a7f382a8e9aa06e1c5e711d9316119ba2f1e42fec262b0a5a96c4962806d9b51b120657ae57b271981a7e76611cf19930d6d9e177f7f1bdebe6055c5f1990645268d35d43472faa07db998491a4c04c00be45870ebd72bd97c71bb5e7224e3b377e7f78a8696427171e4b6e0935ed44484ace57892781acc3d81e191769f777615b4aa0cd6aad2a7b4ff3cb31ea2f60848d4198e3f2632d259b6f2e710e1716a8028fd1654a54212bd71f57b621ab95adf73c04ba1cd0a30476c863f5d01ab5512b18542fd366c0cf26e7318463852720a3cbda7d7a68d1a9849432e4c4be72b57fd2071599d9141422af909374920b4777725fb5b4bb743af76f76d16a5527b78feb265e5fd49545111b65def22d66586c068057a22b3b0d1a99f351b7c5732801321a59e4d619fba40d54176e778f1323c88a20093e5b42e8abd2cf18b6a31456b50d3a8ed4ca9d417f2eb5577ee9aa78e2a610a8b91308b720e1ded67a4e9ba41522f6f4155507ca069a89fbe36da5e9e52cf043b8c507ceaae4840f3d1de93c689bf1ef2ecdb85a8c275f23a10b612139c64c8876f07264996a644830016bcde66634e979c081b7ad845c091bbe8da096f61e6edef86c1cf2d91927999fd6945fcb8dfc0f7406a621a49d08f7a52c77c0a57a12018a336a4a4ec522ccd71772fb527e514d38c9896e78b1db8614afbe4e3b69f4c3a8d8a51ec6ca4e87ba2b17d939c2ba03001c7441d5197ab7d4c4e40d20a21c1ca4c3a58d8fe1465ccef4101f0b0424f60c65aa6a52905ba4f4be203f45cb1d3241a08a4cf0ecc0551f186d5039a7e640e5846fd536d89558348d37088bcb6c8d8ef24ee7e8b12a63baf8cf4d5963d1d26090a4cea4f2dd859f07ac90cdf2aaec8851cb8f9485d34740b4c769c65f0327f0f41398188019713d9176bf459d9553a79b8b0c27ed3b2fd495c8fed20a8a74800ffe17266b7fa75f084544d4acb0bc90989824424d7e64c53ad8ae03435c229b7f39ed0f8a7ef4f9fb9b9306d2c18231196d9363904e263334e94a1f3817bdbbd2ae569291e139fd538af7da1204d029a2fb9ad22b14869fb26a1bd8d9122670c742c194e2074db9c763221007dd55b70fd4158ad72a875b5e6bc68ba3cf653a87886198f9c0700d0874d05f8b71cee8d409d329d0ecdfb99e8a521183142d8a35cb6a5762be779cb6fd1c9dc7042ddf632a2948fc693b978f07681e870b4ca2dc5c1beb21d6a107c77cd57e9259fa38a2cc414da9d331f99f3055103e103a7d56de5f38d26c198b9c86940713c6962e83c43ca66fd2f9214dd1b021d367b38f24427023bb9fd07686049e547d7415eb66038bd6b27370e68835aa15337e740901e3e8d429f0b76f7f560eb07bbb6b856fa4bddbcb63601d998ac625faf81629d2312a93876866fddc6dfb43f723029b3c4a74d3f0ce3262bc03a6fd3e0b20c7818679c7e1969b7e112688d2e7d55eb2e6a6631d9b28696261cf801771265aff2954216fb551619e42ccf695f413e5b5cb7605b3ca56778ecb5346019c90b771b3df627adfd270c66bb6fd70aa586aa180ff426fe6c28df076cc7d313b4f46b9c3df962bb7b8709e3e32149148d13a0cdd1d0871f689dae53eb7cd9a0a651eb71bcff78dfd0f2616cb697b691129a58bfebbf8f309e24b24414b6db448d0098e3813d778b0e41d1da5822718e2b94577d6a88eec2baaf3ce7d9acc77f106e12b8121aa6c081f09e68b6a6c0ce84198538f1728c6cb6d46ce2a4421e9a399a74d5eb1a5db0235489bf9ab26704f0808ec727ff17f1e235f27aab5bfaa3e79b8d85d57559504b1b312b6b154aca220315f21942d9eed787cb730e7a44aba56757f24b2586f5d871935c8fd8e557583387af0620ecd9a69f0c978d3f0711169b3f07803e956efe01df3609a2795f3a4b699e8fda9db2a6bd26094262093bad72622917ea337ee26e9ff57f3c25357920c1f885c8917757843df366a61797a4f0e1b7d28e1e99c994e56e2ef7a7aeba4c09413b60dcdd34b9c74ba03a887a99c71acbdac14882e9fb614f89f713c161d2aad9ce7d3626c79d0e9bbaf3484c81a35f21f25be04089d8d418f935906891f0a6243a676af48f471a9781800264190175ed485f0e5797d5f8b52460d3d21787d3e923e51a7f46e1ad6ab38227caa7d205f02fa545103600576c004c39ba28ebb77e3c7a41aaafda8e0dfced7b2d125d033b0f95ddef7e6509b61e3f8054d7c8a0fd5ed769a9933d9746c3fbdb42d43a4cae8327055445571871599bf6ea8e4abb6f1fe11ef8912796d362798c6852e407c6f64a823cfc93a7e8bd560bd501e1ab1d176fd460df20da5d46d5dea143ea0fdd8215e073e726829fc24a8c7747634d9023ee6bc0fb130629d2bfcd0e604a501c9573acb9af5a2c0cfd975686bccd0c2b781d0852d4fc8c8bf1032b2bb78db8ed4ddf6c947758aa7cafa11c1a73b2e597f4000d8307f1a76a82e3883d9b80db556fa3818a95628763045a7f1af4426acaab916f266084d24f2693f6f6041528d0f406a48187cc1897da0d05a4986400d87d7deedc4a3dc8e35d9ab48026da26887f5130a85606d118bb954e3ba02b4fe58d8dc9f784ada475e10ba38d8865b54c7565866f78a313bb24c4a26faed56d36a2c2308493ccee104e8c743e70c9454980718e9cef879245623e655df58b770a6b38f68bc83ecc27e670174f9779b3aca08b6c7e0794b40978c52d4b7fc01f236697ab30af8b171634ce9201d00ecd72ca9062fa259ebd9c29c20f87b9ba33bdf4871dfbb08246a0856f340e1784bdd71d4353f1fad750d1067f860adeedb1132aa13b7eebc5502a1e5c12bebe6addeaf95bc3a0972e477e6b4a6140d98b1c56fdad97e2620562ce5972b18fb413424b8e36beea8c9454a9ffe61611d57edbafb684f162b0ce99322a375e7fcc4e607aa514dd64a0537f4a49e6ba61b9687697ae2cb5bf15560c86c7a2d3f7774ea6d63586120eb1f06cc8d58ea747abee10a98d65dcf8a0fbf36bb17f69b0906812739f9390bd0a331e8662e2b8e5385155e58d528d93b27d7ee99c57334690d9f6e46b080d89745e27f75208b033c7d710dc2775b48b2337346584c35812b479830f5ebf62522739fd6c8c4b54d9885a641445b9dbef40f9666bd73dedca1aa9eb3374ababf0e89d53e66e1a533f1471cc0785a74346a6d2f15823


目前还没有评论
添加一条新评论

登录后可以发表评论 去登录

作者
kc

积分:1

这家伙很懒,什么都没有留下
作者其它话题