免责声明
本文技术内容仅供学习研究之用,转载请说明出处,如有侵权联系删除。作者不保证信息完全准确,不对因使用本文导致的任何损失负责。读者应自行承担使用风险,并遵守相关法律法规。
写作背景
因为我不喜欢在电脑下载多余的软件,会污染我的系统环境,例如,以前下载的一个cad
但是卸载的时候发现无法完全删除,有很多残留数据,这对于有强迫症的我简直了,于是我能用网页的用网页,不能的话就装在虚拟机里面,又因为我经常在手机和浏览器之间传输文件,于是微信网页版就用的比较频繁,有一天,也不知道哪地方出现了问题,就无法正常传输文件,当然我还会有其他传输方案,但是强迫症的我看不惯网页版就这样不能用了,抱着修复的决心,我开始了我的探索。
恢复出厂设置
恢复出厂设置是我第一个想到的解决方案,但是很多问题接踵而至,例如我的收藏夹,密码,设置等还需要导出,然后再导入,很麻烦。
更重要的是我的浏览器devtool
里面保存了很多代码片段(snippets
),却无法导出,一个一个复制不是我想做的。
然后我问了AI
,ai说C:\Users\<用户名>\AppData\Local\Microsoft\Edge\User Data
里面保存了用户的所有数据,包括书签,设置等。但是当我打开文件夹的时候,看到如此多的数据我犯难了,我想要的数据在哪,代码snippets在哪。
建立浏览器分身
就在我一筹莫展的时候,我想起来了重要的事情,user data
文件夹保存了用户所有数据,能不能让其新建一个空的user data
替换原来的user data
,我又问了ai,ai说,可以用命令msedge --user-data-dir="path/to/your/user data"
启动edge,这样edge加载的用户数据就是自定义用户数据,接着,大胆的想法诞生了,我在C:\Users\<用户名>\AppData\Local\Microsoft\Edge\
下建立了一个空的user data1
文件夹,然后执行了上述命令,发现报错,原来没有添加环境变量,然后我右键edge浏览器,点击属性,找到了edge所在的文件夹,把这个文件夹添加到了环境变量,重新执行,发现真的能启动,并且浏览器就像新的,刚出厂的一样。
然后我重新打开文件传输助手,发现一切传输正常,于是我就把刚才打开新的浏览器的命令写到了一个bat
文件中,命名为Microsoft Edge1.bat
,放到桌面,下次直接点击就是这个分身浏览器了
代码snippets的导出
虽然已经建立了浏览器分身,可以不用导出代码片段了,但是我还是有好奇心的,于是又问了ai,ai说,在/user data/Default
下有一个名为Preferences
的文件,里面存储的是json数据,包括snippets,然后我打开了这个preferences文件,然后找到了我的snippets路径,devtools/preferences/script-snippets
下,它是一个被json化的字符串,然后写了代码将其导出:
import os
import json
data_path = "C:/Users/<user_name>/AppData/Local/Microsoft/Edge/User Data1/Default" # 路径需要改
os.chdir(data_path)
with open("Preferences", 'r', encoding='utf-8') as f:
content = json.loads(f.read())
snippets_list = json.loads(content['devtools']['preferences']['script-snippets']) # 需要注意,第二次loads
for snippet in snippets_list:
with open(f"D:/path/{snippet['name']}.js", 'w', encoding='utf-8') as f: # 路径需要改
f.write(snippet['content'])
print(f"Snippet {snippet['name']} saved to D:/path{snippet['name']}.js")
其他玩法
user data
文件存储用户的数据,而浏览器也可以以任何文件夹作为用户数据路径,所以可以又很多玩法,感兴趣的老铁可以自行探索。
总结
本文介绍了如何利用user data
文件夹建立浏览器分身,以及如何导出snippets代码。
本文仅用于学习交流,勿他用。
祝大家学习愉快 ☺️
python&爬虫逆向交流群:dzEzMDg3MDk4NTU5