myhead
火狐狸
火狐狸
  • UID46565
  • 注册日期2014-07-04
  • 最后登录2020-04-14
  • 发帖数107
  • 经验92枚
  • 威望0点
  • 贡献值20点
  • 好评度8点
阅读:5802回复:31

[更新,python党的同步福音]被firefox强行合并的同步方式弄得烦死,求书签同步替代方案

楼主#
更多 发布于:2017-02-25 19:47
最早我是用xmarks同步书签,但自从某次它弄丢了我一大堆书签后,我禁用了xmarks后回归了firefox原生同步的怀抱。
firefox以前版本的同步是可以选择用服务器端书签替换本地书签,或者反之的,新版并没有这种选项,而是强制对本地和服务器端书签进行合并。于是出现了问题。

我的firefox使用环境是这样的:
1、六百多条书签使用了多级书签文件夹管理;
2、因为各种各样的原因,我同时在使用许多不同的profile,每个都登录了firefox账号进行同步(有很多是通过克隆profile文件夹的方式创建的);
3、大部分对书签的增删操作都发生在其中最常用的一个profile中,意味着其他profile的书签库基本都是过时的。

那么问题来了,一大一小两个:
1、在使用非常用profile时,firefox进行同步,本地过时的书签库会污染服务器端的书签,导致在使用常用profile同步时,已经被删掉的书签通过同步的方式回来了,这点勉强能忍;
2、不知道是firefox同步系统的bug还是什么原因,firefox的同步有时候会造成大量重复书签出现在本地书签库中,这些重复书签有的和原书签在同一个文件夹中,有的甚至破坏了文件夹结构,跑到别的书签文件夹去了……
我原本的只有六百多条的书签在掺入了这些重复书签后达到了一千多条,而且搅乱了我原本的书签文件夹结构,简直是灾难!
于是我网上找删除重复书签的方法,找到两个拓展:一个只能一条一条地删除书签,删四百多条书签要点一千多次,pass;另一个是没有选择性地删除所有重复书签,因为我要选择性保留位置正确的原本书签,也pass……
没办法,只好自己动手,写了个python脚本解析书签备份的json,自动查找重复项,只保留添加时间最早的那条,导出修改后的json,firefox再选择从这个json中恢复备份。
好了,这下书签数量回归六百多条了,而且文件夹结构基本正确。
然而这远远不是安心的时候!过了几天我发现那些被我用脚本剔除的重复书签不知道什么时候居然又被同步回来了!
真的恼火,难道我每隔一段时间就要来一次书签查重么?就没有办法让我重置服务器端的书签存储么?

于是网上搜索,看到了两个相关的bugziilla:
https://bugzilla.mozilla.org/show_bug.cgi?id=966530
这条是请求恢复以前同步系统的有向替换功能,但mozilla的人似乎并不想这么做,其中有人提到似乎改pref或者使用拓展可以实现改功能:

 wiki page explaining the prefs to flip, or an add-on that exposes them, for example
有谁知道相关pref或者wiki页面么?或者相关拓展?

另一个bugzilla:
https://bugzilla.mozilla.org/show_bug.cgi?id=812348
这条太长我没看完,不过它说明了有很多人遇到了和我一样的情况。

另外还查到了两个重置同步的偏方,一个是修改密码,这个我试了貌似没用;
另一个说是删除firefox账号,再用同样的邮箱注册……这个应该能见效,但是感觉略蠢我不大想用,不想以后每次需要重置同步的时候都重新搞一次账号啊。

于是,谁知道同步的相关pref,或者推荐一下能替代firefox原生书签同步的拓展?

------------------------------------------------------

2017-02-27 更新:
根据 https://dxr.mozilla.org/mozilla-central/source/services/sync/modules/engines/bookmarks.js#926 推测,只要你选择了恢复曾经备份的书签,firefox同步服务器的数据就会被清除并替换。
那么,据推测,目前的同步系统中单向同步书签可通过以下伎俩实现:
用本地数据替换服务器端数据 : 打开书签管理窗口,选择备份书签,然后从刚备份的书签中恢复,再进行同步。
用服务器端数据替换本地数据: 删除profile文件夹下的places.sqlite(同时本地历史记录也会被删除),再进行同步。
注:如果profile文件夹中的bookmarkbackups子文件夹存有此前的书签备份,那么找不到places.sqlite的firefox会尝试从这些备份中恢复书签,所以,在删除places.sqlite后打开firefox前,请将bookmarkbackups文件夹删除、移走或者改名。确保firefox不会保留有此前书签的痕迹。

According to :
https://dxr.mozilla.org/mozilla-central/source/services/sync/modules/engines/bookmarks.js#926
It seems that if you restore your previously backuped bookmarks, then all the bookmarks stored on the firefox sync server should be wiped and replaced by local ones.
Here come tricks to implement unidirectional sync in current firefox sync system:
Substitude local bookmarks for server bookmarks : show all bookmarks, backup bookmarks and restore from the file just backuped; then synchronise.
Substitude server bookmarks for local bookmarks : remove places.sqlite locating in your firefox profile directory (local browsing history would be removed simultaneously), then synchronise.
Note: if there are previous bookmark backup in 'bookmarkbackups' subdirectory within your profile directory, firefox which should fail to find 'places.sqlite' would try restoring bookmarks from those backup; so, after removing places.sqlite, it should be necessary to remove, move or rename 'bookmarkbackups' before opening firefox, to ensure no track of previous bookmarks remaining.

------------------------------------------------------

2017-03-06 更新:

@aaaa007cn 在26楼贴出了mozilla官方python版同步客户端的github:
https://github.com/mozilla-services/syncclient
我大致看了下,好像可以实现对服务器端同步数据很细化的操作,不过目前无法解密获取的同步内容。
(03-06第二次更新:
还是热心的 @aaaa007cn 巨巨在28楼贴出了解密同步内容的方法:
https://github.com/mozilla-services/syncclient/issues/30#issuecomment-280517782
将该段代码内容替换到syncclient/main.py中使用。需要注意,这是段python2代码,且需要额外安装pycrypto依赖。
另外,这段代码不支持在命令行指定要执行的命令,它默认只是从服务器获取同步的历史记录并解密,要获取解密的书签记录,请将代码中的 history 替换为 bookmarks 后执行。



不谈论bug的话,现在唯一无解的似乎只剩下在手机端删除自电脑端同步来的书签文件夹这个问题了。
不过通过一系列很麻烦的步骤可以实现,在保持手机端其他数据的情况下,仅清除电脑端的同步书签:
https://bugzilla.mozilla.org/show_bug.cgi?id=860107#c9
myhead
火狐狸
火狐狸
  • UID46565
  • 注册日期2014-07-04
  • 最后登录2020-04-14
  • 发帖数107
  • 经验92枚
  • 威望0点
  • 贡献值20点
  • 好评度8点
1楼#
发布于:2017-03-06 14:39
kmc:是啊,常去的网站不到20个,SiteLauncher全搞定;知识类的网站在下次要类似知识的时候都可能倒了,不如先网摘下来,下次不行再临时Google;新闻类的网站反正天下文章一大抄,现在有了个性化阅读的APP像一点资讯,从我找资讯变成资讯来...回到原帖
没办法,对于我这种收藏癖已经无可救药的人来说还是离不开书签的。书签里面大部分都是入口型网站和动态内容为主的网站,对于文档型网站失效了之还有 archive.org 挽救,只有一些很重要且近期要用到的我会摘录到evernote上。
话说上一款我觉得好用的手机浏览器还是在我使用E72时期的 opera mini 和 mobile……
myhead
火狐狸
火狐狸
  • UID46565
  • 注册日期2014-07-04
  • 最后登录2020-04-14
  • 发帖数107
  • 经验92枚
  • 威望0点
  • 贡献值20点
  • 好评度8点
2楼#
发布于:2017-03-06 14:28
aaaa007cn:解码见 issue#30 中 rfk 的回复
https://github.com/mozilla-services/syncclient/issues/30

这个客户端还在开发中
还有不少问题(文档……

再比如已经上传到 PyPI 了...
回到原帖
赞美 aaaa007cn 巨巨!动手能力强的人参考这些源码应该能实现很多东西。
不过我是已经折腾不动了……
kmc
kmc
管理员
管理员
  • UID165
  • 注册日期2004-11-25
  • 最后登录2022-09-22
  • 发帖数9186
  • 经验397枚
  • 威望1点
  • 贡献值124点
  • 好评度41点
  • 忠实会员
  • 终身成就
  • 社区居民
3楼#
发布于:2017-03-06 09:02
myhead:目前最好的解决方法大概是不用firefox同步。只考虑电脑端的话,应该有不少虽然不完善但至少比firefox原生好的同步实现,而要兼顾手机端的话似乎无解……(其实手机版的firefox本来就很难用,所以手机上不用firefox也许是无解中的...回到原帖
是啊,常去的网站不到20个,SiteLauncher全搞定;知识类的网站在下次要类似知识的时候都可能倒了,不如先网摘下来,下次不行再临时Google;新闻类的网站反正天下文章一大抄,现在有了个性化阅读的APP像一点资讯,从我找资讯变成资讯来找我了。还要啥书签。手机不止是Firefox很难用,手机上就没有好用的浏览器,根本问题就是手机上就不适合用浏览器……
Waterfox Current和Firefox Nightly都用,逐渐走出XUL扩展依赖
aaaa007cn
千年狐狸
千年狐狸
  • UID23968
  • 注册日期2008-05-03
  • 最后登录2022-03-07
  • 发帖数1924
  • 经验1138枚
  • 威望1点
  • 贡献值232点
  • 好评度164点
4楼#
发布于:2017-03-06 01:53
解码见 issue#30 中 rfk 的回复
https://github.com/mozilla-services/syncclient/issues/30

这个客户端还在开发中
还有不少问题(文档……

再比如已经上传到 PyPI 了
https://pypi.python.org/pypi/syncclient
但是没有设置 scripts、console_scripts
导致目前 pip install syncclient 后没法直接命令行调用
还得加上完整路径来执行(facepalm
myhead
火狐狸
火狐狸
  • UID46565
  • 注册日期2014-07-04
  • 最后登录2020-04-14
  • 发帖数107
  • 经验92枚
  • 威望0点
  • 贡献值20点
  • 好评度8点
5楼#
发布于:2017-03-06 01:23
yfdyh000:估计是说非标准但长久的 http://stackoverflow.com/questions/16392486/why-marquee-tag-not-working-in-google-chrome/16392782

Firefox 也...
回到原帖
呃,刚才我又在我的 Version 56.0.2924.87 (64-bit)
chrome下试了下链接里面的例子,不过改了下图像:
https://jsfiddle.net/vppte00s/
我这边显示依然是在正常左右滑动的……

其实标准统一是好事,所以chrome虽然霸道但也说不定是结束前端噩梦最大的希望。
然后有时候也因为市场的原因也会发生历史的倒车,好比说对某webkit系前缀的妥协……
aaaa007cn
千年狐狸
千年狐狸
  • UID23968
  • 注册日期2008-05-03
  • 最后登录2022-03-07
  • 发帖数1924
  • 经验1138枚
  • 威望1点
  • 贡献值232点
  • 好评度164点
6楼#
发布于:2017-03-05 22:21
https://github.com/mozilla-services/syncclient
官方的 python 版客户端
目前文档不全
很多细节还是要翻 mozilla-central 源码
yfdyh000
千年狐狸
千年狐狸
  • UID29079
  • 注册日期2009-06-07
  • 最后登录2022-05-18
  • 发帖数2262
  • 经验1390枚
  • 威望0点
  • 贡献值52点
  • 好评度139点
  • 社区居民
  • 最爱沙发
  • 忠实会员
7楼#
发布于:2017-03-05 13:28
myhead:chrome对于css标准的东西应该不会无视吧……
我还专门打开好久没用过的chrome准备测试,结果因为它无法更新,我又重下了一个chrome:
Version 56.0.2924.87 (64-bit)
用了mdn的例子,稍作修改...
回到原帖
估计是说非标准但长久的 http://stackoverflow.com/questions/16392486/why-marquee-tag-not-working-in-google-chrome/16392782

Firefox 也禁用、移除过不少非标准但长久或者好用的标准、Preferences。比如<blink>。XUL(等)标准、准标准也走向末路了……
myhead
火狐狸
火狐狸
  • UID46565
  • 注册日期2014-07-04
  • 最后登录2020-04-14
  • 发帖数107
  • 经验92枚
  • 威望0点
  • 贡献值20点
  • 好评度8点
8楼#
发布于:2017-03-04 23:13
aaaa007cn:蛤蛤蛤你还记得这个 15 年的 bug 啊

以前是可以本地架个代理中转来实现 socks4a/5 验证的

说起来
BMO 这周改版了?
回到原帖
以前我写socks5代理练手,写完拿firefox测试的时候搜出来的这个bug。
如果加上本地端口转发功能,再顺便加给数据加个密的话……嗯,简化版ss出来了。

我也是今天第一次发现bugzilla改版。话说以前的那个布局用了有多久了?
tools241
小狐狸
小狐狸
  • UID52197
  • 注册日期2015-12-19
  • 最后登录2024-05-01
  • 发帖数74
  • 经验86枚
  • 威望0点
  • 贡献值56点
  • 好评度8点
9楼#
发布于:2017-03-04 20:12
 可能是我的用法较特别, 我的blog是利用 "跑马灯的CSS语法"
让 .GIF 动图左右移动, 或上下移动
, 早期在Chrome正常,
如今只有 Firefox/IE 或其他浏览器正常.
aaaa007cn
千年狐狸
千年狐狸
  • UID23968
  • 注册日期2008-05-03
  • 最后登录2022-03-07
  • 发帖数1924
  • 经验1138枚
  • 威望1点
  • 贡献值232点
  • 好评度164点
10楼#
发布于:2017-03-04 20:11
蛤蛤蛤你还记得这个 15 年的 bug 啊

以前是可以本地架个代理中转来实现 socks4a/5 验证的

说起来
BMO 这周改版了?
myhead
火狐狸
火狐狸
  • UID46565
  • 注册日期2014-07-04
  • 最后登录2020-04-14
  • 发帖数107
  • 经验92枚
  • 威望0点
  • 贡献值20点
  • 好评度8点
11楼#
发布于:2017-03-04 15:42
tools241:Firefox/IE 可在网页或blog正常使用 "跑马灯的CSS语法".

Chrome早期可在网页或blog正常使用 "跑马灯的CSS语法",
新版就 "刻意(或者可能是改版后出现bug便不加理会了)" 不支援了.
目前  "由...
回到原帖
chrome对于css标准的东西应该不会无视吧……
我还专门打开好久没用过的chrome准备测试,结果因为它无法更新,我又重下了一个chrome:
Version 56.0.2924.87 (64-bit)
用了mdn的例子,稍作修改做了测试:
https://jsfiddle.net/nv91v7dy/1/
我这边是可以左右移动啊?

其实我对firefox有个怨念更久的特性就是实现socks5代理的身份验证机制,多少年了firefox连最基本的用户名密码验证都不愿意去实现:
https://bugzilla.mozilla.org/show_bug.cgi?id=122752
又去看了眼这个bugzilla的更新,好像一个月前foxyproxy终于实现了用户名密码验证,以前在firefox原生不支持foxyproxy也不支持的时候这又是一个接近无解的问题。
myhead
火狐狸
火狐狸
  • UID46565
  • 注册日期2014-07-04
  • 最后登录2020-04-14
  • 发帖数107
  • 经验92枚
  • 威望0点
  • 贡献值20点
  • 好评度8点
12楼#
发布于:2017-03-04 15:02
kmc:看到这么多深度分析我一度认为书签同步与同步相关的麻烦就要解决了…看了这么多突然想起来自己已经基本上不用书签了(捂脸笑哭)……回到原帖
目前最好的解决方法大概是不用firefox同步。只考虑电脑端的话,应该有不少虽然不完善但至少比firefox原生好的同步实现,而要兼顾手机端的话似乎无解……(其实手机版的firefox本来就很难用,所以手机上不用firefox也许是无解中的最优解)

其实就算不牵扯上同步,这个书签系统管理起来也是真的困难,好比说我搜索某个书签想知道它在哪个文件夹,就连这样简单的需求都无法满足。
tools241
小狐狸
小狐狸
  • UID52197
  • 注册日期2015-12-19
  • 最后登录2024-05-01
  • 发帖数74
  • 经验86枚
  • 威望0点
  • 贡献值56点
  • 好评度8点
13楼#
发布于:2017-03-04 08:33
Firefox/IE 可在网页或blog正常使用 "跑马灯的CSS语法".

Chrome早期可在网页或blog正常使用 "跑马灯的CSS语法",
新版就 "刻意(或者可能是改版后出现bug便不加理会了)" 不支援了.
目前  "由右向左正常";
"上下移动" 变成 "由下往上";
"左右移动" 变成 "由右向左" 且慢慢向左隐藏.

全球有多少网页在使用  "跑马灯的CSS语法" ?
但Chrome似乎视若无睹,  所以Firefox对于同步问题迟钝未解而就不足为奇了!
kmc
kmc
管理员
管理员
  • UID165
  • 注册日期2004-11-25
  • 最后登录2022-09-22
  • 发帖数9186
  • 经验397枚
  • 威望1点
  • 贡献值124点
  • 好评度41点
  • 忠实会员
  • 终身成就
  • 社区居民
14楼#
发布于:2017-03-03 12:11
看到这么多深度分析我一度认为书签同步与同步相关的麻烦就要解决了…看了这么多突然想起来自己已经基本上不用书签了(捂脸笑哭)……
Waterfox Current和Firefox Nightly都用,逐渐走出XUL扩展依赖
上一页
游客

返回顶部