UC浏览器的云同步功能已经出了有一段时间了,但是我尝试多次都无法将Chrome和手机UC浏览器进行同步。今天我研究了一下这个功能,发现了问题的原因在于浏览器的语言设置。UC云同步插件的Chrome版,会根据Chrome浏览器的语言设置,选择使用yun.uc.cn或者是cloud.ucweb.com。而这两个服务器是独立的,意味着即使是使用相同的帐号登录进去,两个服务器上的数据也会不一样。yun.uc.cn对应Chrome浏览器上的中文,以及Android上的UC浏览器,cloud.ucweb.com对应Chrome浏览器上的其他语言,以及Android上的UC Browser for Android。UC设置两个服务器的原因可能是为了给国内国外不同线路加速,以及防止GFW干扰,不过两个服务器之后的数据库竟然也是不一样的,让人难以理解。
现在的情况是,因为我在手机上使用的是国内版的UC浏览器,而我的Chrome是英文的,所以两个之间无法同步。解决的办法是,要么把Chrome切成中文,这样UC云同步插件会自动使用国内的服务器,要么把手机上的UC浏览器换成国际版。但是我不愿意切Chrome的语言,也不想放弃国内版UC浏览器的诸多便利而改用国际版,所以我决定自己修改一下UC云同步插件,来实现我这个需求。
修改后的插件可以在这里下载,解压后拖动到Chrome的Extension页面就可以安装。修改的过程并不复杂,把API的Server地址改掉就好,不过重新打包后发现服务器使用的是Chrome插件的Message机制把登录信息传递回来的,但是我重新打包之后的AppId会发生变化,导致登录消息传递失败而无法登陆。为此我又将登录部分改为Ajax实现,并Parse Response以生成消息。
值得一提的是,UC云同步插件不仅没有代码混淆,而且有清晰的注释可以查阅(同时暴露了内部测试服务器的地址),可谓业界良心!