12

据我所知,个人数据始终保存在配置文件路径中,该路径可以在 chrome://version 中找到。

我在我的 Chrome 开发工具中添加了许多片段,并想备份它们。

但我找不到在此路径下保存的数据片段的文件。

有人知道吗?请告诉我 。非常感谢!

4

5 回答 5

13

从 Chrome 47(或更高版本)开始,片段不再可通过 localStorage 获得。此外,natchiketa 的答案取决于 localStorage 并且不再起作用。

下面是目前的技术:

获取片段

InspectorFrontendHost.getPreferences(_ => console.log(JSON.parse(_.scriptSnippets)))

设置片段

InspectorFrontendHost.setPreference("scriptSnippets", JSON.stringify(yourSnippets))

该技术是从讨论此更改的github 线程中提取的。

于 2016-01-25T21:13:05.787 回答
7

最新铬(90.0)的工作解决方案:

在我的ubuntu18,chromium片段保存在: ~/.config/chromium/Default/Preferences 作为单行 json 文件。

以上和Bookmarks是我平时备份的文件。

如果您解析该 Preferences json 文件,您会在以下 json 路径中找到片段:

ROOT.devtools.preferences.scriptSnippets

该属性的值需要再次解析为 json。然后您将获得所有片段的 {name,content} 数组。

注意:我正在使用jq-1.6以下命令

要将所有片段备份到一个 json 文件中:

jq .devtools.preferences.scriptSnippets ~/.config/chromium/Default/Preferences \
| jq '. | fromjson' > /tmp/backup.json

所有片段备份单独的 .js 文件中

# Tested with jq-1.6
# The script converts json entries into lines of format 
# `filename[TAB]content-in-base64` and then 
# for each line creates the corresponding file 
# with the content decoded.

# Better be in a safe directory!!
mkdir /tmp/snippets-backup
cd /tmp/snippets-backup

jq .devtools.preferences.scriptSnippets ~/.config/chromium/Default/Preferences \
| jq '. | fromjson | .[]| [ .name, @base64 "\(.content)" ] | @tsv' -r \
| xargs -I{} /bin/bash -c 'file=$(echo "{}"|cut -f1); fileContent=$(echo "{}"|cut -f2); echo "$fileContent" | base64 -d > "${file}.js"'

关于jq

jq是一个很棒的命令行工具,用于查询和处理 JSON 文件。您可以从stedolan.github.io/jq/获得它。

于 2019-08-08T18:45:13.453 回答
3

编辑(2016 年 1 月) 警告:我只能从最近的反对票中假设这不再起作用。有机会我会更新的。

TL;博士

  • 片段存储为 sqlite 文件。
  • 您可以将它们提取为一个数组[{id: n, name: 'foo.js', content: "The script"}]
  • OS X 的说明如下

在 OS X 上,假设您安装了一个 sqlite 命令行客户端(我已经安装了一个,但我不记得安装了一个),您会这样找到它:

# 如果你不知道 Chrome Profiles 是什么,你可能使用 Profile 1,所以: cd ~/Library/Application\ Support/Google/Chrome/Profile\ 1/Local\ Storage

在此目录中,您应该有一个名为 的文件chrome-devtools_devtools_0.localstorage,如果是这样,您应该能够:

sqlite3 chrome-devtools_devtools_0.localstorage

...你应该在 sqlite shell 中,它的开头是这样的:

SQLite version 3.7.13 2012-07-17 17:46:21
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>

您可以.tables查看此文件中的表格:

sqlite> .tables
ItemTable

然后你可以这样做来查看该表中的列名:

PRAGMA table_info(ItemTable);

由于 localStorage 只是一个键/值存储,因此该表非常简单:

0|key|TEXT|0||0
1|value|BLOB|1||0

更有启发性的是查看键名:

select key from ItemTable;

您应该会看到如下内容:

fileSystemMapping
showAdvancedHeapSnapshotProperties
lastDockState
resourcesLargeRows
networkResourceTypeFilters
pauseOnCaughtException
showInheritedComputedStyleProperties
elementsPanelSplitViewState
filterBar-networkPanel-toggled
networkLogColumnsVisibility
networkPanelSplitViewState
sourcesPanelDebuggerSidebarSplitViewState
pauseOnExceptionEnabled
watchExpressions
breakpoints
consoleHistory
domBreakpoints
Inspector.drawerSplitViewState
InspectorView.splitViewState
WebInspector.Drawer.lastSelectedView
currentDockState
editorInDrawerSplitViewState
experiments
inspectorVersion
lastActivePanel
sourcesPanelSplitViewState
sourcesPanelNavigatorSplitViewState
scriptSnippets_lastIdentifier
previouslyViewedFiles
revision-history
revision-history|Script snippet #1|20267.2|1410876616909
scriptSnippets

片段位于scriptsSnippets. 当我开始这样做时,我没有片段,所以我没有看到这个键。创建我的第一个片段后,密钥出现了。所以接下来我做了:

select * from ItemTable where key = 'scriptSnippets';

瞧!

scriptSnippets|[{"id":"1","name":"SnipFoo.js","content":"/**\n * @license\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modern -o ./dist/lodash.js`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n;(function() {\n\n  /** Used as a safe reference for `undefined` in pre ES5 environments */\n  var undefined;\n\n  /** Used to pool arrays and objects used internally */\n  var arrayPool = [],\n      objectPool = [];\n\n  /** Used to generate unique IDs */\n  var idCounter = 0;\n\n  /** Used to prefix keys to avoid issues with `__proto__` and properties on `Object.prototype` */\n  var keyPrefix = +new Date + '';\n\n  /** Used as the size when optimizations are enabled for large arrays */\n  var largeArraySize = 75;\n\n  /** Used as the max size of the `arrayPool` and `objectPool` */\n  var maxPoolSize = 40;\n\n  /** Used to detect and test whitespace */\n  var whitespace = (\n    // whitespace\n    ' \\t\\x0B\\f\\xA0\\ufeff' +\n\n    // line terminators\n    '\\n\\r\\u2028\\u2029' +\n\n    // unicode category \"Zs\" space separators\n    '\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\

...等等。请注意,您会看到不止一个版本的代码段。我刚刚粘贴lodash.js了我上面提到的那个新片段,而且我已经有两次了。

那么,如何真正从中获取脚本呢?好吧,一旦你得到这个value字段,那只是一个 JSON 数组,你有一个片段idname并且content. sqlite3因此,从命令行创建一个 SQL 脚本以传递给,如下所示:

echo "select value from ItemTable where key = 'scriptSnippets';" > showSnippets.txt

然后像这样喂那个脚本:

sqlite3 chrome-devtools_devtools_0.localstorage < showSnippets.txt

如果你这样做,看起来会更漂亮:

sqlite3 chrome-devtools_devtools_0.localstorage < showSnippets.txt | python -m json.tool
于 2014-09-16T14:46:29.000 回答
1

苹果电脑

/Users/yourUserName/Library/Application Support/Google/Chrome/Default/Preferences

Chrome 将您的片段保存在首选项中。

于 2020-09-03T05:32:01.743 回答
0

编辑:此答案已过时,片段不再保存在本地存储中。

请参阅paulirish 的回答

对于旧版本的 chrome,这可能有效。它存储在这里 C:\Users\Webdev\AppData\Local\Google\Chrome\User Data\Default\Local Storage\chrome-devtools_devtools_0.localstorage。但我不认为你可以从文件路径中查看它,

您可以通过执行以下操作来查看它。打开 devtools,然后前往 chrome://inspect,在“OTHER”标题下,您应该会看到刚刚打开的 devtools 面板 url,该 url 以 chrome-devtools://dev 开头。通过单击检查链接对其进行检查。应该打开一个新的 devtools 窗口,在资源选项卡下,转到 localstorage 有一个名为 scriptSnippets 的键,这就是它的保存位置。只需复制并粘贴它或使用控制台面板预先修改输出。

希望这可以帮助

于 2013-09-26T16:27:38.943 回答