页面

2011年12月27日星期二

Fiddler:监视哪些连接被重置

关键词:gfw, reset, fiddler, ipv6-hosts, 连接重置

  经常翻墙的人想必都知道 gfwlist。这个列表里有几乎所有被 gfw 认证了的网站/网页。有了这个列表,我们的翻墙事业如虎添翼。但是这个列表也有些缺陷,有时候还是会遗漏一些网站。当然,由于各地 ISP 也有一个自己的 gfw,这个列表无法做到全国统一,遗漏也是在所难免。我最近找到了一个软件,可以监视到自己的电脑上每一个连接的详细信息,包括服务器返回的 HTTP 状态码。有了这个软件,我们就能找到那些没有被 gfwlist 收录但被 gfw 认证的网站了。

  当然,对于某个特定的网站,要看它有没有被认证,也不用软件监视,以下几个网站就能帮你判断了:

Test if any website is Blocked in China
Website Test behind the Great Firewall of China
Great Firewall of China

  但是要更加强大、适用范围广、效率更高的方式的话,就必须使用这款软件来搞定了。它就是 Fiddler,MSDN 上也有介绍,链接在此:

Fiddler PowerToy - Part 1: HTTP Debugging


  看到这个软件的界面就知道它的功能非常强大。只要是 HTTP 请求的事情,没有它不知道的。其实最近 nirsoft 也出了一个类似的软件,叫 HTTPNetworkSniffer,不过据我试用了一下后发现,HTTPNetworkSniffer 居然不记录那些返回错误的请求,我才另外搜索一番,找到了 Fiddler 这款软件。

  Fiddler 其实是一个代理服务器,它启动后会自动修改系统的 WinInet 代理,退出后又自动还原到原设置。Internet Explorer 也是通过 WinInet 代理连接互联网。其他“使用与 IE 相同的代理设置”的软件,就是走了 WinInet 代理。像 Firefox 的代理不与 IE 互通,用的就不是 WinInet。因此如果要让 Fiddler 监视 Firefox 的连接的话,需要另外将 Firefox 的代理服务器设置为 127.0.0.1:8888。

WinInet 和 Fiddler 的位置

  Fiddler 启动后就开始监视每个连接的状态。界面如下图所示:



  每一行就是一个客户端到服务器的 HTTP 请求。我们最关心的是“Result”这一列。这一列的值就是“Host”服务器针对“URL”所示请求而返回给客户端的状态码。一般正常的话应该是 200,也有其他状态码,见本文后面的参考链接。这时如果访问一个结构比较复杂的页面比如 facebook 的首页,那么 Fiddler 的界面中就会出现一大堆连接信息。我们只关心哪些连接被重置,所以需要稍微过滤一下结果:

如图所示,勾选“Use Filters”并勾选隐藏正常结果

  然后再看主界面,留下的就都是错误请求了:

Result=504,基本上就意味着被 Reset 了

  接下来,把这些被重置的 Host 加入代理,或者加入自己的 hosts 解析,就能不被 Reset 了。至于每个 HTTP 状态码的意思,可以看维基上的说明。以下两个地方也有,可以补充着参考:
http://www.google.com/support/webmasters/bin/answer.py?answer=40132
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

  本文只是一个最基本的介绍,实用性不太强。下一篇文章打算介绍一下 Fiddler 和 Chrome 浏览器 + Proxy SwitchySharp + gfwlist 配合使用的场景,还有使用 Chrome 自带的工具查看请求状态码的方法。

使用Facebook社交插件参与评论:

2011年12月26日星期一

娉娉袅袅十三余,豆蔻梢头二月初

  最近有一个密码在网上流传的很火,说是从 CSDN 数据库里找到的史上最强密码,就是【ppnn13%dkstFeb.1st】。

  自 CSDN 数据库泄密以来,各家博客都在撰文写密码安全。当我看到这个密码,发现一个完美的密码也不过如此了。看看这个密码有多强:

包含小写字母:yes
包含大写字母:yes
包含数字:yes
包含标点符号:yes
长度:足够,18位
英文单词:简单的单词没有,Feb. 和 1st 算两个
拼音:没有完整的拼音,只有声母
生日、手机号、QQ号等其他个人信息 :no

  更难能可贵的是,满足如此苛刻条件的密码,居然还有一个优点:容易记忆!明眼人只要看过一眼“娉娉袅袅十三余,豆蔻梢头二月初”的词句后绝对就牢记于心了。

  可惜了这么好的一个密码,被 CSDN 给废了。不过也给大家提供了一个思路。按类似的要求去想,一定还能找到既足够复杂又容易记忆的密码的。

使用Facebook社交插件参与评论:

2011年11月6日星期日

IPv6心法第三层:IPv6组网

关键词:IPv6, tunnelbroker, networking, 组网, Windows 7, IPv6 路由器

本文副标题:将一台 Windows 7 电脑配置成 IPv6 路由器

  本文乃 IPv6 心法(互联网通信协议第六版穿墙心法,以下简称心法)第三层要义。标题有些不太严肃,但是用在中国还是比较贴切的。要看懂心法第三层,需要有第一层和第二层的基础。

心法第一层:Teredo,见 Windows 7,中国电信ADSL的环境下配置IPv6
心法第二层:TunnelBroker,见 windows 7 下使用tunnelbroker 服务配置IPv6
心法第三层:Networking,即本文 IPv6心法第三层:IPv6组网

  对于打通了心法第二层的人来说,Hurricane Electric 旗下的 tunnelbroker.net 提供的一个 /64 全球可路由网段还是非常诱人的,只用一个 endpoint 未免太浪费了。另外,在同一个 IPv4 局域网中,只能有一个 tunnelbroker.net 的通道。所以,要让局域网的每台设备都能有一个全球 IPv6 地址,就必须使用这个 /64 网段了。

  在 tunnelbroker.net 的通道的详细信息页,点击 Routed /64 旁边的 i 状图标,会有一个提示层曰:
We automatically assign a /64 to your account and route it via:
ipv6 route [routed64] [clientV6Endpoint] 
This allows your endpoint device to operate as the router for this netblock and allows you to utilize DHCPv6 or RADVD to hand out IP's from this allocation to your internal network. 
If you have more than one network segment please consider utilizing the /48 above.
提示我们可以用该网段配置自己的内部网络。但是,中文网络中有关这个网段的用法的文章非常少,最后还是在官方论坛中找到了解决方案。大家可以去官方论坛里的 Windows 板块看看,有很多有用的信息:http://www.tunnelbroker.net/forums/index.php?board=5.0。详见文章最后的参考。我实践了一下这个方案,有了一些经验,写下供大家参考。


  我们要建立一个 IPv6 网络,需要配置 IPv6 路由器。有三种方式:
1,将一台路由器配置为 IPv6 路由器
2,将一台 Linux 机器配置为 IPv6 路由器
3,将一台 Windows 机器配置为 IPv6 路由器

  第一种方式需要路由器支持 IPv6,或者自己给路由器刷入自定义固件令其支持 IPv6。这个方式动作比较大,需要折腾的地方比较多,可以参考该文:

Tomato Toastman完美支持he.net的IPV6

  这是一个独立博客作者写的。据我观察,一般独立域名的博客寿命都比较短。还好我们有许多垃圾站。如果原始链接失效了,通过标题还可以搜到一批垃圾站的转载。

  第二种方式和第一种类似,毕竟路由器上跑的大都是 Linux 内核。这一类的文章相对较多,我也贴一个链接:

he.net的TunnelBroker

  我只介绍第三种方式的操作步骤。对于大部分人来说,这种方式是最容易实现的。先说明一下我的网络结构。一个普通的 ADSL 拨号上网的路由器后面带几台电脑。有 Linux 也有 Windows。我自己用的是一台 Windows 7。以下就把这台 Windows 7 配置成 IPv6 路由器,且不影响原来的正常使用。当然,要让整个网络的 IPv6 连接一直有效的话,需要让这台电脑一直开着。

  以下以这三个参数值为例,你需要修改为自己的参数,注意粗体部分:

Server IPv6 Address: 2001:470:a:76f::1
Client IPv6 Address: 2001:470:a:76f::2
Routed /64: 2001:470:b:76f::/64

  所有操作均在心法第二层操作成功后的基础之上。首先运行 cmd 进入命令行。然后,只需三条命令,即可将该 Windows 7 配置成一台 IPv6 路由器:


将通道设置为允许转发:
netsh interface ipv6 set interface IP6Tunnel forwarding=enabled
将本地连接的网卡也设置为允许转发:
netsh interface ipv6 set interface "本地连接" forwarding=enabled
给网卡添加一个 IPv6 地址,这个地址就是 IPv6 网关了:
netsh interface ipv6 add address "本地连接" 2001:470:b:76f::1


  这就设置好了,这个是不用重启,立即生效的。其他局域网的电脑只需在"本地连接"中指定一个空闲的 2001:470:b:76f::/64 段的 IPv6 地址,设置好正确的网关即可,如下图。之后也可以设置让电脑自动获取 IPv6 地址,本文后面会有介绍。



  局域网中有 ubuntu 机器的话,也可以配置一个 IPv6 的地址:


  需要断开 ubuntu 的网络连接再重新连上,IPv6 地址就生效了。我们还是到 http://[2001:4810::110]/ 验证一下:



  为了让其他电脑可以自动配置 IPv6 地址,需要在 Windows 7 路由器上再运行几个命令:


开启本地连接的路由广播,向局域网内通知 IPv6 路由器的地址:
netsh interface ipv6 set interface "本地连接" advertise=enabled
下面这条路由是给网卡添加地址时自动加上的,现在需要广播该路由信息:
netsh interface ipv6 set route 2001:470:b:76f::/64 "本地连接" publish=yes
下面这条路由是早就有了的,现在也需要广播这条路由信息:
netsh interface ipv6 set route ::/0 IP6Tunnel 2001:470:a:76f::1 publish=yes


  设置完成之后,可能需要稍等片刻,待路由广播了一段时间,其他电脑设置为“自动获取 IPv6 地址”,就能获得一个 IPv6 地址了。


  现在网络中就有四台电脑连入 IPv6 网络了。除了本机,另外三台如果访问了 IPv6 网络,本机(也是 IPv6 网关、路由器)上就可以通过命令 netsh interface ipv6 show neighbors 查询到一个地址列表:



  其中 2001:470:b:76f::3 是 ubuntu,另外两个 2001:470:b:76f::/64 的地址都是设置成自动获取 IPv6 地址的 Windows。


  我们从外面 ping 一下第二台电脑看能不能连通:



  完全正常。虽然延迟较高,也是受网络条件所限,但至少说明这台电脑已经是一台全球可路由的 IPv6 节点了。


参考:
1,http://www.tunnelbroker.net/forums/index.php?topic=918.0
2,http://www.dezzanet.co.uk/articles/26/2010/05/12/Sharing-an-IPv6-tunnel-from-a-Windows-machine/
3,http://www.tunnelbroker.net/forums/index.php?topic=1439.msg9375#msg9375 的第10楼的回复


使用Facebook社交插件参与评论:

2011年10月25日星期二

KVM的命令行下控制虚拟机关机和重启

关键词:kvm, libvirt, virsh, shutdown, reboot, acpi, acpid, virtualization, linux

  最近在 ubuntu 上装上了 KVM 虚拟机, 并且安装了管理程序 libvirt 和 GUI 管理器 virt-manager 进行管理。为了方便远程管理,找到了几个简单的命令行的管理方式:

进入 libvirt 控制台:
# virsh

显示虚拟机列表:
virsh # list --all

启动虚拟机:
virsh # start [name]

关闭虚拟机:
virsh # shutdown [name]

重启虚拟机:
virsh # reboot [name]


  然后便在 GUI 界面新建了一个 ubuntu 的 guest 虚拟机。试了试上面的一些命令,发现 shutdown 和 reboot 两个命令不起作用。不得已用了几次 destroy,觉得这不是办法,于是搜索了一下看是怎么回事。没想到居然搜索结果里一个中文的网站也没有,只有几个英文的网站说了这个事。原来 guest 虚拟机不支持 acpi 的话,是无法响应 host 发出的 shutdown 和 reboot 命令的。给出的方案就是,在 guest 虚拟机里安装 acpi 支持包:

# sudo apt-get install acpid

  这样就可以了。如果是以命令行方式创建虚拟机,也可以在创建时添加 --addpkg acpid 参数以初始化安装。

参考:

1,http://askubuntu.com/questions/2825/how-do-i-use-virsh-shutdown-on-kvm-domains-to-shut-down-ubuntu-guests
2,http://wiki.libvirt.org/page/FAQ#Why_doesn.27t_.27shutdown.27_doesn.27t_seem_to_work.3F
3,https://help.ubuntu.com/10.04/serverguide/C/jeos-and-vmbuilder.html



使用Facebook社交插件参与评论:

2011年10月17日星期一

windows 7 下使用tunnelbroker 服务配置IPv6

关键词:IPv6, 6in4, IPv6-in-IPv4, teredo, he.net, tunnelbroker

本文主要参考了:Ubuntu使用he.net的IPv6隧道代理访问网络(已更新)

注:本文仅适用于有固定 IP(IPv4) 地址的电脑。包括以 192.168. 等开头的局域网地址。本文是对上面链接原文中的第 7 条有关局域网 windows 7 下的配置的详细说明。并简化了操作。动态 IP 地址的配置方法略有不同,而且比较繁琐,请参考上面的链接原文。

目前 IPv6 尚未全面普及,大部分地方用的还是 IPv4。在这个过渡期,有许多种过渡技术可以用来在现有的 IPv4 网络上使用 IPv6,比如:teredo,6in4 和 isatap 等等。

我之前介绍过如何在 windows 7 下使用 teredo:

Windows 7,中国电信ADSL的环境下配置IPv6

,这次再介绍一下 6in4。

Hurricane Electric 旗下的 tunnelbroker.net 提供免费的 6in4 服务。以下以该服务为例进行说明。

1,参考本文开头处链接的文章,申请服务和通道。
  简单描述一下,就是到 http://tunnelbroker.net 注册一个账号,然后创建一个普通通道。
  每个账号可以最多创建 5 个通道。创建通道时需要填写本机的外网 IP 地址,而且需要保证该 IP 地址可以从 ipv4.tunnelbroker.net 地址 ping 通。ping 不通的话是没法设置成功的。可以到 http://just-ping.com 测试能否 ping 通。ping 不通的话,需要调整防火墙设置,或者路由器的安全设置。
  创建通道时可以选择服务器。可以逐一 ping 各个服务器,看哪台服务器的响应最快。我用西安电信的ADSL,大部分时间都是 Fremont 或 Seattle 的服务器最快。

以下是 ping 各服务器的批处理:



@echo off
echo ==================Asia==================
echo ----------------------------------------
echo ping Hong Kong
ping 216.218.221.6
echo ----------------------------------------
echo ping Singapore
ping 216.218.221.42
echo ----------------------------------------
echo ping Tokyo
ping 74.82.46.6
echo ----------------------------------------
echo =================Europe=================
echo ----------------------------------------
echo ping Amsterdam
ping 216.66.84.46
echo ----------------------------------------
echo ping Frankfurt .... skip
echo ----------------------------------------
echo ping London
ping 216.66.80.26
echo ----------------------------------------
echo ping Paris
ping 216.66.84.42
echo ----------------------------------------
echo ping Stockholm
ping 216.66.80.90
echo ----------------------------------------
echo ping Zurich
ping 216.66.80.98
echo ----------------------------------------
echo ==============North America=============
echo ----------------------------------------
echo ping Ashburn
ping 216.66.22.2
echo ----------------------------------------
echo ping Chicago
ping 209.51.181.2
echo ----------------------------------------
echo ping Dallas
ping 216.218.224.42
echo ----------------------------------------
echo ping Fremont
ping 72.52.104.74
echo ----------------------------------------
echo ping Fremont
ping 64.62.134.130
echo ----------------------------------------
echo ping Los Angeles
ping 66.220.18.42
echo ----------------------------------------
echo ping Miami
ping 209.51.161.58
echo ----------------------------------------
echo ping New York
ping 209.51.161.14
echo ----------------------------------------
echo ping Seattle
ping 216.218.226.238
echo ----------------------------------------
echo ping Toronto
ping 216.66.38.58
echo ----------------------------------------

pause



2,将以下批处理命令中的 4 个参数修改为自己的内容,然后在命令行中顺序执行,或者存为一个 bat 文件以批量执行。

其中 4 个参数是:
IPV4_SERVER:刚才建立的通道的Tunnel Details页面的Server IPv4 Address的值
IPV6_SERVER:Tunnel Details页面的Server IPv6 Address的值(不带后面的/64)
IPV4_LOCAL:本机的固定IP地址。如果是外网固定IP,那就是Tunnel Details页面的Client IPv4 Address的值。如果是内网固定IP,则填写内网固定IP(如 192.168.0.7)
IPV6_LOCAL:Tunnel Details页面的Client IPv6 Address的值(不带后面的/64)

各参数的位置见下图中的红框所示处:


以下是批处理文件内容:


@echo off
echo  正在配置 6in4 通道....

set IPV4_SERVER=64.62.134.130
set IPV6_SERVER=2001:470:ffff:ffff::1
set IPV4_LOCAL=192.168.0.7
set IPV6_LOCAL=2001:470:ffff:ffff::2

netsh interface teredo set state disabled
netsh interface ipv6 add v6v4tunnel IP6Tunnel %IPV4_LOCAL% %IPV4_SERVER%
netsh interface ipv6 add address IP6Tunnel %IPV6_LOCAL%
netsh interface ipv6 add route ::/0 IP6Tunnel %IPV6_SERVER%

netsh interface ipv6 set prefix ::1/128 50 0
netsh interface ipv6 set prefix ::/0 40 1
netsh interface ipv6 set prefix 2002::/16 30 2
netsh interface ipv6 set prefix ::/96 20 3
netsh interface ipv6 set prefix ::ffff:0:0/96 10 4
netsh interface ipv6 set prefix 2001::/32 5 5

pause



4,从 https://ipv6-hosts.googlecode.com/hg/hosts 获取最新的 IPv6 解析,并将全部内容追加到本机的 C:\Windows\System32\drivers\etc\hosts 文件末尾
  自己也可以收集其他 IPv6 解析,添加到 hosts 文件中。要直接使用 IPv6 地址访问一个网站,只需要在浏览器中直接输入该 IPv6 地址,并在两端加上 [ 和 ] 号访问即可。下面有例子。

5,命令行运行 ipconfig /flushdns 刷新 DNS 缓存

6,ping g.cn。如果有从 IPv6 地址返回的响应,则说明配置成功。

7,如果是局域网固定 IP 而外网 IP 发生了变化,则需要访问Tunnel Details页面手动更改最新的 Client IPv4 Address 地址。或者访问以下网页自动修改当前外网 IP 地址:

http://ipv4.tunnelbroker.net/ipv4_end.php?ip=AUTO&pass=p1&apikey=p2&tid=p3

其中 p1 替换为:上述账号的密码的 MD5 值。网上有在线计算 MD5 值的工具。
p2 替换为:登录后的 Main Page 的 User ID 的值
p3 替换为:Tunnel Details 页面的 Tunnel ID 的值

可以将该地址存入收藏夹,每次 ADSL 重新拨号后访问一下。或者设置令每次开机自动执行以下命令:

explorer http://ipv4.tunnelbroker.net/ipv4_end.php?ip=AUTO&pass=p1&apikey=p2&tid=p3

8,如果需要关闭该通道,可以执行:


@echo off
echo  ipv6 setting off....

set IPV6_LOCAL=2001:470:ffff:ffff::2
set IPV6_SERVER=2001:470:ffff:ffff::1

netsh interface ipv6 delete route ::/0 IP6Tunnel %IPV6_SERVER%
netsh interface ipv6 delete address "IP6Tunnel" %IPV6_LOCAL%
netsh interface ipv6 delete interface "IP6Tunnel"

netsh int ipv6 set prefix ::1/128 50 0
netsh int ipv6 set prefix ::/0 40 1
netsh int ipv6 set prefix 2002::/16 30 2
netsh int ipv6 set prefix ::/96 20 3
netsh int ipv6 set prefix ::ffff:0:0/96 10 4
netsh int ipv6 set prefix 2001::/32 5 5

pause


9,正常使用中,不需要关闭通道。只要 IP 没有变化,下次开机通道依然有效。以上,用于固定 IP 的方案介绍完毕。浏览器访问 http://[2001:4810::110] 以检查自己的 IPv6 地址:


10,前文之所以说动态 IP 地址的配置比较繁琐,就在于批处理文件中需要写一个固定的 IP 地址。如果是动态 IP 地址的话,则每次 IP 变化之后,都需要先关闭通道,再修改开启通道的批处理文件中的参数,再执行之。

11,如果发现 hosts 中的网址突然访问不通,则有可能是本地的外网 IP 变化导致通道失效了,需要访问步骤 7 中所示的网址以更新 IP:

如果 IP 没发生变化也去访问该页面,则会提示:

-ERROR: This tunnel is already associated with this IP address.  Please try and limit your updates to IP changes.

如果很不凑巧你现在的 IP 是别人之前用来创建过通道的,则会提示:


点击页面中的链接,则会跳转到:


提示你可以通过该方法夺回该 IP 的通道使用权。因为同一个 IP 只能有一个通道。但是这一招会删掉对方的通道,有点残忍。所以,还是我们自己重新拨号换一个没人用的 IP 吧

12,以上介绍完。有疑问可同时参考开头处的两个链接。

使用Facebook社交插件参与评论:

2011年9月11日星期日

缓存代理服务器solipo的一些配置经验

关键词: solipo, polipo, squid, cache, proxy

有关 solipo 及 polipo 的详细介绍可参考:简单易懂的Polipo使用入门
本文重点介绍 solipo 的缓存文件夹的设置方法。

polipo 是一个轻量级的代理服务器。相比大名鼎鼎的 squid,它更加轻巧,适合个人或小型网络使用。polipo 原生 linux 平台,虽然也有用于 windows 的安装包,可惜易用性非常差。想必用 linux/unix 的人或多或少都有点瞧不起用 windows 的人吧。还好有人将 polipo 重新打包成 solipo 方便 windows 平台下的使用。以下是我在 windows 7 下使用 solipo 的一些经验,供大家参考。

1,禁用 solipo 的 log 功能:
  solipo 的 log 文件随着使用会越来越大。而且这个 log 文件不是实时更新的,每次 solipo 退出之后才一次性写入文件。这样的 log 不如不要。在 config 文件中添加一行:

  logLevel = 0x0

即可禁用 log。这样 solipo 只会新建一个空的 polipo.log 文件,不会往文件里写任何东西。

2,修改缓存文件夹的位置:
  我用的 solipo 版本是目前最新版的 0.09,通过右键菜单中的设置修改缓存文件夹(cache dir=C:\solipocache)是没有用的。可以打开 solipo.ini 文件直接改为:

  cache dir=C:/solipocache/

这样才能正常配置缓存文件夹。斜杠和反斜杠,结尾的处理,这些都是 linux 平台和 windows 平台之间的差异带来的问题。设置好之后重启 solipo,正常使用一会儿之后,缓存文件夹就开始工作了。

3,允许其他计算机连接到 solipo 服务器:
  修改 config 文件,添加一行:

  proxyAddress = "0.0.0.0"    # IPv4 only

可允许其他计算机使用该代理服务器。

使用Facebook社交插件参与评论:

2011年9月5日星期一

Windows 7,中国电信ADSL的环境下配置IPv6

关键词:ipv6, google, gmail, teredo, chinatelecom, gfw, 路由上网, 拨号上网


本文主要参考了这篇文章:开启 Teredo 通道, 提前感受 IPv6 (for 非教育网用户)

以前经常见 google reader 里出现如何设置 ipv6 的文章。讲的比较通俗易懂的我都自己试了一下,但一直都没有配置成功。只能说不是人家教程写的太差就是我自己悟性太低了。今天突然点开 gmail 最下面的访问记录看见有一个从 ipv6 地址发起的访问,仔细一看才发现是我自己东搞西搞,已经把 ipv6 配置成功了。只不过这个成功不太容易看得出来。经此一事,对 ipv6 又多了一些了解。

我的网络环境:中国电信 2M ADSL 路由器拨号上网,windows 7 64位操作系统。

以下是隧道方式连接 ipv6 的设置方法:

1,首先,如果你以前配置过 ipv6 的话,最好能把那些配置都还原回来。我这个方案不需要安装任何第三方软件,所以如果你安装过什么隧道软件的话,现在就可以卸掉了。如果经过以下配置,还不能配置成功的话,建议重新安装操作系统,用一个干净的系统开始配置。

2,使用管理员权限运行 cmd,打开命令行窗口。

3,根据使用路由器的方式不同,选择运行不同的命令:

直接在电脑上新建拨号连接,每次开机需要拨号的电脑:(有外网 IP 地址的电脑。因为 state 默认就是 client,所以如果没有动过这个的话就不用执行该命令)

netsh int ter set state client


 在路由器上设置了拨号,只要路由器开着就能上网的电脑:(IP 地址大多以 192.168. 开头的电脑)

netsh int ter set state enterpriseclient

4,以上设置默认使用了微软的 ipv6 隧道(Windows 系统默认)。如果你找到了其他隧道,可以这样修改:

netsh int teredo set state client teredo.ipv6.microsoft.com.
或者:
netsh int teredo set state enterpriseclient teredo.ipv6.microsoft.com.

5,这样就开启了 ipv6 隧道了。cmd 中运行 ipconfig 看看,有这样的一串以 2001: 开头的 ipv6 地址的话,就说明 ipv6 已经配置的差不多了。没有的话,重启一下电脑看看。



6,以上仅仅是开启了 ipv6 隧道,要通过 ipv6 上某些网站,还需要配置能够解析 ipv6 地址的 DNS。

7,最方便的 DNS 的配置方法就是改 hosts 文件(在 C:\Windows\System32\drivers\etc\ 下)。喜欢折腾的人可以试试搜索“双栈DNS”。

8,网上有人维护着一个 ipv6 地址列表(大部分是 google 系网站的 ipv6 地址)。将该列表中的所有 DNS 解析记录复制到 hosts 文件的最下面并保存。

9,运行 ipconfig /flushdns 刷新本地 DNS 缓存。最好是重启一下电脑。

10,这样 ipv6 上网的两个条件就都具备了:ipv6 地址和 ipv6 解析。

11,经过这样设置,访问刚才加到 hosts 里的网站时就能以 ipv6 进行访问了。

12,不要开启任何代理软件,不要设置任何代理服务器,然后通过浏览器登录你的 gmail,看看页面最下方的“上次帐户活动时间”,点击“详细信息”,如果看到有 ipv6 的活动的话,就说明 ipv6 配置成功了。如:



13,接下来可以配置你自己的代理服务器了。注意不要让 hosts 列表中的网站走代理。否则 ipv6 就白设置了。如果用 Proxy Switchy! 之类的插件配合 gfwlist 管理代理服务器的话,那么可以设置规则令 google 系的网站走“Direct Connection”,可以覆盖 gfwlist 中的设置。如:



14,要测试是否配置成功,找刚才 hosts 列表中的网站试一下就知道了,比如 www.youtube.com。或者运行一下 ping -6 g.cn 测试能否 ping 通 g.cn 的 ipv6 地址(当然前提是 g.cn 的 ipv6 地址已经在 hosts 列表当中)。当然,最实在的方法就是登录 gmail 然后查看活动记录。



使用Facebook社交插件参与评论:

2011年8月30日星期二

在ubuntu下使用beyond compare作为Mercurial的文件比较工具

关键词:Beyond Compare, Mercurial, hg, ubuntu, 版本控制, 比较

  在 ubuntu 下用 Mercurial(以下称之为 hg) 做软件开发,hg 默认的文件差异比较工具实在是不方便。而在所有文件比较工具中,Beyond Compare 算是很强大的一个软件了,而且很容易和其他版本控制软件相结合。以下介绍如何在 ubuntu 下配置使用 Beyond Compare。

  1,安装之

  2,修改 /etc/mercurial/hgrc.d/hgext.rc 文件,将相关部分的内容改成以下这个样子:

[extensions]
extdiff =

[extdiff]
cmd.bcomp = /usr/bin/bcompare

  3,以上也可以修改版本库下的 /.hg/hgrc 文件。这样修改就只影响当前版本库,不影响其他版本库。

  4,进入版本库所在的文件夹,执行 hg bcomp 即可比较当前版本库下的所有已修改的文件。
图1,命令

图2,文件夹比较

图3,文件比较


  以上操作参考了以下网址:

1,http://hgbook.red-bean.com/read/adding-functionality-with-extensions.html
  【Flexible diff support with the extdiff extension】一节

2,http://www.selenic.com/mercurial/hgrc.5.html#files

3,http://mercurial.selenic.com/wiki/ExtdiffExtension

使用Facebook社交插件参与评论:

2011年7月6日星期三

如何拥有一个免费的二级域名

关键词:.tk, he.net, DNS, SLD, Google Apps, dot.tk

我在上一篇博客中介绍了一个无限邮箱地址的方案。这次再扩展一下,详细说说 .tk 这个免费二级域名。

网上常见的免费域名多是3级域名,如 example.co.cc,example.cjb.net。而 dot.tk 上面提供免费的2级域名,如 example.tk。虽然网上有些人说不靠谱,但我觉得拿来玩玩还是可以的。毕竟2级域名相比3级域名,还是有不少优点的:

1,DNS 解析快
    DNS 解析的过程可见 http://ningq.com/2010/11/dns_resolution.html
    该文中并没有说2级域名比3级域名解析快,但是很显然3级域名要比2级域名多解析一次,不信的话比较下这两个域名的解析结果就知道了:
    sina.com:http://www.dnsstuff.com/tools/traversal/?domain=sina.com&type=A
    www.sina.com:http://www.dnsstuff.com/tools/traversal/?domain=www.sina.com&type=A
    第一个两步就能获得最终 IP 地址,第二个需要三步。当然这仅限一般的情况。如果不同级别的域用的是同一级的 DNS,那就没差别了。如 7.qq.com 和 game.7.qq.com。

2,不容易被封锁
    gfw 能封锁整个 facebook.com 域,但总不能封 .com 吧
    前几天刚发生的事情,google 不再收录 .co.cc 下的域名。但 google 总不敢不收 .cc 吧
    百度。。。太2了,居然不收录整个 .tk 域。免费的域名缺点就是容易被*人弄滥。
    顺带提一提 .cn,做顶级域名做成 .cn 这样,不如去s。


有如此多的优点,如果你不是靠这个建站赚钱的话,那用 .tk 又有什么问题呢。

首先上 dot.tk 申请一个免费域名吧。这个 .tk 国家域似乎全权委托一家俄罗斯的公司经营。界面有中文版,就是翻译的太差,勉强能看懂。申请好之后,把 DNS 类型改为自定义 DNS,因为自带的 DNS 不支持 TXT 记录。建议用 he.net 家的 Name Server 作为 DNS Name Server。he.net 网站干净整洁,没有任何广告,而且是老牌子,解析服务稳定且迅速,支持 ipv6,提供 ipv6 隧道代理,支持管理 50 个域名,不限 DNS 解析记录数量,总之一个字:强大。

he.net 提供了5台 DNS 服务器,ns1.he.net ... ns5.he.net。我从全球50多个地方分别 ping 这5台服务器,发现 ns5 响应最快,其次是4、3、2、1。我们设置自定义 DNS 的时候,也按这个快慢顺序来设置吧。虽然没有找到证据表明会优先使用靠前的 Name Server,但是我把 ns5 放在最前面,感觉解析起来就是快。在 dns.he.net 设置一个 TTL=300 的动态 DNS 记录时,大约 5 秒,解析就生效了。

dot.tk 是乱排你的 Name Server 设置的。就算按5、4、3、2、1的顺序输入,它也会给你弄乱。不过它只在设置的时候乱一次,之后乱成什么就是什么了。我们可以一直点“下一步”,每点一次,它的顺序就会乱一次。等到排成5、4、3、2、1的理想形态时停下来就行了。我不喜欢折腾,只点出来5、4、2、3、1就懒得再点了。
ns
每点一次下一步,就会换一次顺序


接下来设置邮件的操作就可以参考我的上一篇文章了。只需注意一点,Google Apps 免费版不支持 .tk 域名。网上有破解之法,自己搜一搜吧(不是用别名的方法,从教育版的申请入口进去申请就行了)。


为了不被视为滥用域名、垃圾邮件站,我们需要设置好 SPF 记录和 DKIM 认证记录。还要保持 www.example.tk 是个活的网页。否则 .tk 管理者发现你申请了域名,却空着不用,就会收回域名的。网上有些人叫嚣自己的 .tk 域名被莫名其妙回收了,只怕就是这个原因。

对于不喜欢折腾的人,怎么保持 www.example.tk 的活动迹象呢。去 blogger 开一个博客,然后绑定 www.example.tk 域名,没事上去随便转几篇没有版权的文章就行了。因为我们主要是想用这个域的邮箱,又不是真拿这个域做博客什么的。

我今年3月份(我见过的许多博客,发帖时间都不显眼,有些直接就没有,看了让人火大。时间可是一篇文章很重要的一个属性)注册了一个4个字母的免费域名,然后在 Google Apps 里设置了一个超短的管理员账户(a@XXXX.tk),这个账户的电子邮箱地址一共才9个字符。这就是2级域名的好处。这么短的地址,就算是收费的也很难找了。什么?现在都用复制粘贴,长短没关系?我以前也注册过一个 18个字符@gmail.com 的邮箱,后来遇到必须要手动输入的场合,我就后悔不该搞这么长的了。

@w.cn 和 @9.cn 的免费邮箱本来也还行,但都是 .cn 域的,而且被几个**把3位数的都注册光了。

@g.cn 是 google 的域名,可惜不提供电子邮件服务(SPF 记录里是“v=spf1 -all”)。否则 a@g.cn 该有多拉风啊。

使用Facebook社交插件参与评论:

2011年7月3日星期日

如何拥有无限个电子邮箱地址

关键词:Gmail, Google Apps, co.cc, cjb.net, dot.tk, E-mail, alias, 不过滤垃圾邮件

本文介绍一个方案,可以免费拥有无限(实际中虽然不是无限,但远远超过1010)个电子邮箱地址。本文只说重点,各环节的细节做法不清楚的话都可以另行在网上查到。

一般有了一个类似 foobar@gmail.com 的 Gmail 邮箱后,就相当于拥有了无限个邮箱地址。因为所有发送到 foobar+*@gmail.com(* 代表任意符合邮箱地址规范的字符串,中间的 + 号不能缺)的邮件都会被投递到 foobar@gmail.com 中,并且能保持原始收件人地址。比如发送到 foobar+co.cc@gmail.com 的邮件,查看邮件的详细信息时,“发送至”栏会保持 foobar+co.cc@gmail.com 这个地址。我们可以据此写一些过滤器,以区分不同用途的邮件。

但是,树大招风。这个技巧用的人多了,为了防止滥用,许多网站纷纷禁止用户输入的邮箱地址中包含 + 号,有些甚至禁止 . 号。所以我接下来介绍另外一种无限邮箱地址方案。

1,申请一个免费域名。www.co.cc 提供的免费域名对 Google Apps 很友好,设置也很方便。以下以申请到 example.co.cc 免费域名为例。

2,用上面申请到的域名注册免费 Google Apps 服务,并设置管理员账户为 admin@example.co.cc。这一步我说的简单,实际中步骤很多。网上很多这方面的文章,搜一下就有。co.cc 官方也提供了针对 Google Apps 的设置方法,见 http://www.co.cc/google_apps/google_apps.php(英文),照做即可。为了避免从该域(example.co.cc)发出的邮件被其他邮件服务器当成垃圾邮件而拒收,建议在 DNS 服务器上添加 SPF 记录和 DKIM 认证记录。设置完成之后等上1、2天让 DNS 设置生效。

3,登录进 Google Apps 管理面板 https://www.google.com/a/cpanel/example.co.cc/Dashboard,在管理面板的“设置”-->“电子邮件”中的“无限别名地址”处,将“如果收到的电子邮件不符合任何现有地址:”设置为“将电子邮件转发给:”、“admin@example.co.cc”。这样所有发送到 *@example.co.cc 的邮件就都会投递到 admin@example.co.cc 了。也就是说,我们拥有了以 @example.co.cc 为后缀的所有邮箱地址了。

4,以上步骤基本就能满足大部分人的需求了。不过我们还可以继续提高一下该方案的易用性。因为我们已经有一个主 Gmail 了(foobar@gmail.com),不想在两个 Gmail 之间切来切去。而使用 pop 方式收信的话会漏掉垃圾邮件。对于没有受到垃圾邮件困扰的人来说,Gmail 的垃圾邮件过滤系统不仅是鸡肋,而且经常过滤掉正常邮件。接下来我们在 admin@example.co.cc 中设置过滤器,无视垃圾邮件过滤系统而将所有接收到的邮件以转发的形式转发到主 Gmail 中。

5,这一步参考了 http://getfreeware.net/2008/06/08/gmail-multi-accounts-management.html,并且经过我自己测试,正常邮件和垃圾邮件都成功转发过来了。在 admin@example.co.cc 中创建一个过滤器,“包含字词”处填“in:inbox OR in:spam”(网上好多文章说用“is:spam”,但是我测试了不成功,而且 Gmail 官方帮助文档中也确实没有这种语法),其余留空。在下一步设置操作时,选择将邮件转发给 foobar+forward_from_admin_at_example.co.cc@gmail.com,并选中“删除邮件”。

6,这样过滤器就设置好了。之后所有接收到的邮件都会被立即转发给 foobar@gmail.com,并且保持原始收件人地址。如果使用 pop 方式的话,再快也要等 Gmail 轮询(一般一小时查询一次)。转发就不一样,几乎是同时,邮件就能到达 foobar@gmail.com。

7,但我们还是要设置一下 pop 收信,制造一个 admin@example.co.cc 有频繁 pop 活动的假象,避免长期不登录账户生灰。pop 服务器是 pop.gmail.com,端口 995,用户名 admin@example.co.cc,密码照填,然后选中“始终使用SSL”即可。

8,即使想使用 Gmail 的垃圾邮件过滤系统的人,也建议用上述方法将垃圾邮件先转发过来,再由主 Gmail 账户统一过滤。要区分主账户邮件和转发的邮件的话,创建一个过滤器,如果包含字词“from:(@example.co.cc) OR to:(@example.co.cc)”则应用一个标签就行了。

9,以上设置就基本好了。想测试一下收信效果的话,不要用自己的主 Gmail 邮箱往 @example.co.cc 域发邮件进行测试。找一个和主 Gmail 账户没有 pop 或者转发关系的邮箱来测试吧。

10,说了这么多,其实有更简单的方案可以一步搞定上面的所有步骤,比如 cjb.net 方案。它都不用申请 Google Apps,更不用设置域名解析。免费的 cjb.net 域名自带免费空间、简易域名解析和 pop 服务器,甚至还支持动态DNS,但是没有 smtp 服务器。申请一个类似 example.cjb.net 的免费域名后,直接就能设置将所有发往 @example.cjb.net 域的邮件转发到注册邮箱。如今新注册的免费 Google Apps 只支持最多 10 个用户了,如果不想用 Google Apps 的话,可以试试这个方案。不过因为邮件会经过它的 pop 服务器,垃圾邮件也会被它直接过滤掉而没有任何提示。而且因为没有 SPF 记录,转发目的地的邮件服务器很可能拒收从 example.cjb.net 转发来的邮件。当然 cjb.net 允许你设置外部 Name Server,我们完全可以把它当 co.cc 来同样处理。有关垃圾邮件的这一点我没有测试,全凭想象,大家可以试一下。
CJB.NET
cjb.net 设置界面的一个截图

11,这一步仅限 Google Apps 方案。如果还想用 admin@example.co.cc 作为发件人进行发信的话,在主 Gmail 的“账户和导入”中点击“从其他地址发送邮件”添加一个发信人即可。按向导提示的填写,提示选择 SMTP 服务器时,不要选择“通过 Gmail 发送”,而应该选择“通过 example.co.cc SMTP 服务器发送”,并填写 SMTP 服务器为“smtp.gmail.com”,端口改为 465,其余默认。Gmail 会发一封验证邮件到 admin@example.co.cc(然后验证邮件被立即转发回来了),按提示进行验证后,以后写信时就可选择使用 admin@example.co.cc 作为发件人了。用这种方式发信,信件除了会在主账户的发件箱中保存备份,也会在 admin@example.co.cc 的发件箱中保存备份。之所以选择用 example.co.cc SMTP 服务器而不是 Gmail 服务器发送,是为了隐藏真正的发信人地址(foobar@gmail.com)。如果用 Gmail 服务器发送的话,对方收到的邮件表面上显示的发件人是 admin@example.co.cc,但如果查看原始邮件的话,就能看到真正的发件人 foobar@gmail.com 了。
查看原始邮件Gmail 中查看原始邮件的方法

注意 example.co.cc 免费域名是有期限的,需要每年续期一次。example.cjb.net 也需要至少每 90 天登陆一次 shell(83天没登陆会发邮件提醒)。还有一个二级域名方案 example.tk,也有一些限制。而且因为是免费的,所以不建议将这些邮箱用在需要长期使用的场合。毕竟这些服务不是 google,amazon 之类大厂的服务,不能保证一直稳定。而且申请的域名今年免费,到明年续的时候说不定就开始收费了呢。

但是我们不用担心 google 的免费服务,完全值得信赖。

使用Facebook社交插件参与评论:

2011年6月21日星期二

向blogger帖子页面嵌入facebook社交评论插件

关键词:facebook, social plugins, sns, comment, blogger, blogspot, 评论, 社交插件

 

facebook推出社交插件有一段时间了。见http://developers.facebook.com/docs/plugins/。其中评论插件比较有吸引力。blogger内置的评论工具不支持对评论进行回复,看着其他一些独立博客的评论表单功能挺强大,有点眼红了,所以试了试这个facebook的评论插件。

 

按说我是个不喜欢折腾的人,blogger的html模板以前从来就没有动过。更不会去想弄虚拟主机,独立博客,独立域名之类的事情。这次看上面这个插件实现起来也不麻烦,所以试了一试。以下操作是参考插件的官方介绍页面http://developers.facebook.com/docs/reference/plugins/comments写的。按官方介绍做下来,只能给整个网站做一个评论表单,跟留言版一样了。我们需要每个帖子有各自的评论表单,这就需要向插件提供每个帖子的url。blogger的模板提供了帖子url,用 data:post.url 即可得到。以下是详细步骤。

 

1,备份blogger的模板html文件。

2,修改这个html文件,找到 data:post.body 的地方,在其后添加几行:

<p/><h3 class='post-title entry-title'>使用Facebook社交插件参与评论&#65306;</h3>
<div id='fb-root'/><script src='http://connect.facebook.net/zh_CN/all.js#xfbml=1'/>
<fb:comments expr:href='data:post.url' num_posts='10' width='635'/>

其中各参数的意思自己揣摩,或者看上面的官方文档。

3,基本上这样就可以了。保存模板看看效果吧。如果已经满意了,就不必看后面几步了。

未登录fb时的样子:

未登录fb状态除了facebook,还可以用其他账号进行评论。

登录fb后的样子:

登录fb状态

该插件自动读取浏览器的session中处于登录状态的facebook账号信息

 

4,如果想对评论进行审核,就需要一个facebook账号作为评论审核的管理员。找到这个账号的facebook id,按如下格式加在html模板的<head>标签下面:

<meta content='你的facebook id' property='fb:admins'/>

在管理员的fb登录状态下,当有评论时是这样子的:

审核菜单

管理员可以隐藏某个评论,也可以禁止某个用户。

 

5,喜欢折腾的人可以再给这个评论插件专门申请一个facebook app,记下这个app的id。关联app之后,评论管理功能会方便很多,可以在http://developers.facebook.com/tools/comments统一管理所有的评论。继续修改模板html文件,在<head>后面再加一行:

<meta content='你的facebook app id' property='fb:app_id'/>

保存后点击插件右上角的“设置”按钮,没有设置appid时,这个设置菜单很单调,并且会提示你申请app。设置appid后则是这个样子:

设置菜单

刚设置完appid可能暂时不会生效,耐心等他一两天再来看看吧。

 

6,以上设置就全部完成了。目前我发现的两个问题,一是我即使设置了评论对所有人可见(Make every post visible to everyone by default),测试时还是只有评论者的fb好友(博主除外)才能看见评论者的评论。评论者的fb隐私设置中把相应权限改为“所有网民”也是一样。二是新评论通知会发到管理员的fb通知系统中。管理员需要登陆进fb才能知道有新的评论。但是不知道fb用的是什么通知机制,因为有时候收不到通知。

 

另外,设置完成之后,可以关闭blogger的默认评论系统。但是建议保留。毕竟会有人不想在别人的博客里留下可以识别fb身份的评论。

使用Facebook社交插件参与评论:

2011年6月7日星期二

有关一场风波的一些记忆

关键词:1989

 

小时候(1990年代)曾听到大人们谈论过一些有关此事的话题。现在还记得一些,虽然时间、地点、人物全都记不太清了,总要把能记住的一些事写下来。

 

就只记住了一段话,当然时间已经很久了,大意不错,细节可能有不太准确的地方:

有个士兵拿枪乱扫,打死了很多人,后来奖了一块金手表。有个士兵,因为学生里有自己的亲戚,不敢乱开枪。所以闭着眼睛打一枪,停一停,再打一枪。

现在看来,这段话是有一些民间加工的。

使用Facebook社交插件参与评论:

2011年6月5日星期日

マネして何か悪いの?

キーワールド:山寨, 中国, 思考の慣性の法則

 

うまく言語化できない、情報の伝達に齟齬が発生するかもしれない。でも 見て。(長門有希のマネ)

 

この間、ネットで 日本のテレビ番組「世界進出バラエティー メイド イン JAPAN」(TBSテレビ2011年4月1日放送)を見た。特に印象に残っているのは、後半の1シーンだ。カシオ社の大人気商品「G-SHOCK」の話しで、ある外国人ゲストが海外で「B-SHOCK」という、いわゆる“山寨”商品を見かけて、その商品の裏側を見てみると、「やっぱりmade in chinaだった」と言った。そして中国人ゲストが「マネして何か悪いの?」と言った。その言論に、スタジオにいる全員が結構ひいたようだ。私は その中国人の言論と ほかのみんなの反応について この文を書いた。

 

とりあえず、2つだけ言わせてもらえ。1つは、ゲストの中国人2人の考え方は、中国人の一部をしか代表していないことと思ってくれ。1つは、私は中国人の立場で言っているのではなく、地球人の立場で言っているのだ。

 

その中国人が当たり前のように「マネして何か悪いの?」と言ったから、みんなが引いた。そこで私が思うに、日本人とそのほかの外国の人が 当たり前のように「マネして当然悪いでしょう!」と言う(思う)のは、どうだろう。

 

ここは、マネしていいか悪いかを判明するのではなく、それぞれの考え方についての話しだ。日本人の一部は おそらく他人のもの(商品)をマネするのは下品だと思っているだろう。それに相手は中国だし、余計に反応がすごいだろう。例えだが、もしマネしたのは中国ではなく、インドとかベトナムとかだったら、そんな反応がないところか、逆にネタとして笑っておいただけだろう。みんなは中国にだけマネされたくないだろうね。中国人がいろいろ日本人を嫌がらせたことをやってきたから、多少なことをやっても、嫌われるんだろう。これは思考の慣性の法則ってやつなのか。中国は何千年もやってきて、こんなにも嫌われた国になったとはね(原因は?よく考えなければならない)。

 

ちなみに、その女性中国人の言論は 私はまったく賛同できない。

 

また番組中、「中国は4000年もすべったよ」ってあるゲストが言ったが、さすがに私も笑っちゃった。

使用Facebook社交插件参与评论:

2011年6月3日星期五

dropbox的通知服务器改为notify4了

关键词:dropbox, stork, stork47, notify, notify4, notification, gfw, 实时同步

又是一篇关于dropbox的文章,觉得烦了的就不用看了吧。之前研究过dropbox的实时同步机制,说是dropbox通过stork47.dropbox.com通知客户端进行实时同步。今天注意到这个服务器已经改成notify4.dropbox.com了。它还有一个服务器名,是sjc-not4.sjc.dropbox.com。


请务必搞清楚“实时同步”的意思再看本文。看看上面引用的那篇文章即可明白。之前有人说把stork47.dropbox.com加进hosts就能不受gfw影响了,但我用这个方法一直不成功,只好另辟蹊径了。不过如果你用hosts方法成功了,那么现在你就需要改一下hosts了。ip地址可以到http://just-ping.com查,这个比nslookup可信,不用担心dns污染。


通过观察一段时间的dropbox连接情况,发现它向服务器轮询的时间有了变化。以前是每60秒轮询一次,现在则是以50秒为平均值上下浮动。说来奇怪,实时同步似乎和这个轮询并没有关系。因为我抢在两次轮询之间更新某个文件,客户端也能立即同步。但是如果用gfw挡住这个轮询请求,就会没法实时同步。看来是通知服务器也同时发起到本地计算机的连接,而且是实时的,只要有更新,就会发起通知。而本地发起的轮询只是通知一下服务器最新的客户端IP地址,并不是去获取更新。客户端和服务器之间不保持一个长连接,便靠这种机制互相通信。当然我对网络什么的并不在行,只是凭直觉乱猜。想要证实这个想法的话也简单,有闲的人可以试试:


我们先设置dropbox为不走代理,这个时候是无法实时同步的。然后抢在两次轮询之间动态切换成国外代理,同时在其他客户端修改一个文件,观察dropbox是否立即更新。如果直到下次轮询时才进行更新,那便说明我的猜想是正确的。


该实验的重点是动态切换代理。我们不能按正常手段切换代理,因为那样会破环两次轮询的间隔,导致本地立即进行一次轮询。使用动态代理的目的是,不直接操作dropbox客户端而改变它的ip地址。我手头没有这样的软件(似乎wallproxy-plugins可以做到),就算有也懒得去试,因为即使实验成功,也体会不到相应程度以上的成就感。


使用Facebook社交插件参与评论:

2011年5月15日星期日

设置中兴H608B 路由器以令IPTV和路由拨号两不误

关键词:中兴, ZXV10, H608B, 中国电信, IPTV, ADSL, 拨号上网

 

不知道这篇文章能适用于多少人,但还是写一写,就当是自己做个笔记吧。

 

最近(某些地区)办理中国电信的E9套餐的话,会附送IPTV服务。电信技术人员上门安装时,会将路由器(中兴的ZXV10 H608B)设置为桥接(Bridge)模式,然后分别在电视的机顶盒和电脑上设置拨号程序以连入网络。电信技术人员说,路由器必须工作在桥接模式下,机顶盒才能正常工作。虽然路由模式会更加方便电脑上网,但为了成全IPTV,只好在电脑上新建一个拨号连接,每次开机拨号上网了。

 

这种方式麻烦一点也就算了,当有新的设备要连入网络时,会非常麻烦。需要一台电脑作为主机并共享拨号连接,其他设备通过主机连入网络。实在是不灵活。最近我没事研究了一下路由器的设置,发现可以针对路由器上不同的端口设置不同的模式,如果实现的话,就可以设置iTV口为桥接模式,而其他口为路由模式了。虽然费了一番功夫,最后还是设置成功了,且看我的设置手记。

 

首先需要有路由器的超级管理员账号和密码以进入路由器管理界面。印在路由器上的useradmin账号的权限是不够的。我们需要telecomadmin才能进入真正的管理界面。这个账号只见过电信技术人员登录进去进行过初始化设置,可惜没问他留下密码来,等到后来发现useradmin是个被阉割了的管理员时才后悔不及。不过有google在,这种小事难不倒我。一搜之下,这个著名的telecomadmin的密码就出来了,刮开看吧,嘿嘿:【҉n҉E҉7҉j҉A҉%҉5҉m҉】。如果你的登录不进去,那可能是被电信以远程控制的方式把密码改掉了,自己去搜破解方法吧。

 

超级管理员登录进去后会发现菜单的数量明显比useradmin的多。我们进入 网络 下的 宽带设置,有一个叫 连接名称 的下拉菜单,默认选中的是 新建wan连接,菜单里应该还有一项是电信技术人员设好的桥接模式的连接。选择这个连接,下面会显示这个连接的详情,我们需要记下两个项目的值,VPIVCI,之后要用。页面最下面有一排按钮,我们点 删除 以删除掉这个连接。如果下拉菜单中还有其他连接,那么也一个个都删除掉。然后我们自己来新建连接。

 

首先给IPTV新建一个桥接的连接。绑定选项 中,只选中 LAN2 这一个(似乎这个口是IPTV专用的,连路由器背面的标注都不是LAN2而是iTV),模式 里选择 桥接VPIVCI 设置成刚才记下来的值,其余设置用默认,然后点 创建。将机顶盒连到iTV口,IPTV便可以正常工作了。设置好后应该是这个样子的:

1

 

然后再新建一个路由的连接。绑定选项 里选择 LAN1LAN3LAN4 SSID1(无线口),模式 选择 路由路由模式 选择 PPPoE业务模式 选择 INTERNETVPI/VCI 下拉菜单里选择上一步设置好的VPI/VCI组合,下面的 用户名密码 填入上网的ADSL账号(电话号码)和密码(a123456),其余设置用默认,然后点 创建,就设置好了路由器拨号上网了。设置好后的样子如下图所示。然后电脑上的 本地连接 只需设置为自动获得IP地址,就能上网了。把那个拨号连接删掉吧,用不着它了。

PPPoE Connection

 

最后,路由器正常工作时,网络侧状态 应该是这样的:

3

 

VPIVCI这两项,每个地区是不一样的,如果你没有记下来,可以上网搜一下。用 VPIVCI 搜即可。

 

我就是如上这样设置的,并且一直工作正常。如果你依此设置却不能成功,可能是有其他关键设置我没有记在上面,请留言说明。

使用Facebook社交插件参与评论:

2011年5月7日星期六

备份Google Reader 以打造离线版Google Reader

关键词:Google Reader, feed, backup, offline, FeedDemon, 备份, 离线, Google Gears

feed阅读器的好处不用我说,Google Reader更有许多妙处。在我看来最大的妙处莫过于单个供稿能保存无限篇文章了。分析可见我的这篇文章。喜欢用Google Reader的人务必点这里互相关注一下共享各自的优秀条目。

Google Reader是个在线阅读器。在线阅读器的缺点就是必须在线才能访问。如果能将Google Reader中的文章备份到本地,我们就可以在没有网络的时候、没有网络的时候以及没有网络的时候也能阅读到一部分文章。说不定读了这些文章,就能知道如何在没有网络的时候也能上网了呢。

我考察过几个方案,最终还是用FeedDemon同步Google Reader的方案。FeedDemon是一款优秀的离线阅读器,它有和Google Reader深度同步的功能。我们通过它将文章下载到本地保存起来。FeedDemon有收费的Pro版,但是我们只用免费的Lite版即可达到目的,我用的就是FeedDemon Lite v4.0.0.22。Pro版中唯一令人眼红的功能,就是未读文章的图片预读取了。因为图片文件会因为各种原因无法访问,我不太喜欢在文章中插入图片,实在需要图片的地方也会在旁边用文字描述清楚。继续说方案,根据我们的目的,按以下步骤配置FeedDemon:

1,从官网下载最新的FeedDemon并安装到D:盘以打造绿色版FeedDemon
  注:这里只是简单的说了一下打造绿色版fd,实际中没有这么简单,请参考自己制作FeedDemon便携版

2,启动FeedDemon,将 文件-->管理缓存 中的缓存文件夹也改到D:盘FeedDemon安装文件夹下
cache folder
3,工具-->选项-->选项
“常规”标签中,勾选“自动更新 Feed”和“在Windows 启动时运行 FeedDemon”,点击“连接…”按钮设置代理服务器。
“桌面提示”标签中,将“显示桌面提示”修改为“从不”。“在系统托盘显示 FeedDemon”设置为“最小化时”。因为我们只是要它做备份的角色,平时还是用Google Reader进行阅读。
4,工具-->选项-->同步选项
在这里添加Google Reader的账号以进行同步。并将更新时间设为最大,即“每隔999分钟更新我的 Feed”。我们只是用它做备份,所以不需要太频繁的更新。
sync
5,等供稿都同步下来了,在主界面Google Reader的根文件夹“订阅”上右击选择“文件夹属性”,在“更新”标签中,将“存档”修改为“每个 Feed 保留最近 2500 个条目”。2500是上限,我们要尽可能多的把文章保存在本地。单个Feed 2500个条目,按每天1个条目计算,也能保存将近7年的文章了,对于达到我们的目的那是绰绰有余了。
option

经过这样的配置,每天FeedDemon就会默默的获取Google Reader上的新文章了。可惜对于设置之前的旧文章,FeedDemon无能为力,只能在第一次同步时获取到少数几篇。初期,FeedDemon上的文章数远远不及Google Reader,但这只是初期。日积月累下来,本地的文章库也能很可观了。

关于Google 官方的离线版Google Reader(使用Google Gears):我在Chrome上从没见到过Offline按钮,但是看介绍,Gears应该是把文章保存到Chrome的某个文件夹下了,不知道能不能转移。但是Gears技术已经被Google放弃了,替代功能是HTML5,基于HTML5的离线Google Reader尚未出现,现在就只能用上述的FeedDemon方案了。

使用Facebook社交插件参与评论:

2011年3月20日星期日

使用Privoxy让Dropbox智能代理上网

关键词:dropbox, privoxy, stork, stork47, http, https, socks, 代理

本文撰于2011/03/20,背景是,中国大陆到dropbox.com的http连接会被重置,但是https连接不受影响。如果背景改变了,则本文失效。本文原始链接:http://plusium.blogspot.com/2011/03/privoxydropbox.html

本文主题:令dropbox客户端的http请求经socks代理访问dropbox服务器,而https请求不经代理直接访问。如图:

1

高手们只需看到这就行了。以下是详细操作说明。

目前在墙内,dropbox被关键字屏蔽(Wildcard: .dropbox.com),但是客户端还能正常使用,因为客户端和服务器之间使用的是https加密传输。但只有一处是没有使用https的,就是stork47.dropbox.com(在我这是这个地址,其他地方可能不一样)。这个服务器负责将服务器端(或其他客户端)发生的文件更新通知到其他客户端(我猜的,但应该差不多),然后其他客户端才会发起https请求去和服务器同步这些文件。实际中,是客户端每60秒向stork47.dropbox.com查询一次,看是否有文件需要更新。因为该请求没有使用https连接,导致连接一直被RESET,所以某台客户端的更新无法实时反映到其他客户端。

因为一般人可能没有这个需求,所以没多少人关注这个课题。像我以前也只是在家里和公司同步一些文件而已,没有实时更新的必要。有强烈需求的人,就设置让客户端全程走代理,可以解决上述问题,缺点是文件的更新速度受代理服务器速度的影响,大多数情况下没有直接连接的速度快。还有一部分人当需要更新时,直接重启客户端(甚至为此写了个脚本),因为客户端只在启动时才使用https连接检查更新,这样做的缺点显而易见。

最近用privoxy,发现它可以做到分流http和https,于是试验了一下,果然可以分流dropbox的客户端请求了。就是前面说的,让http请求走代理,而https请求不走。这样即满足了实时更新的需求,又兼顾了更新速度,可谓智能代理了。而且我搜索“dropbox privoxy”,google.com.hk前几页都没有关于这个方法的介绍,所以我这个便算原创了。至于是不是第一个,应该还有高人在,只是我没搜出来而已。因为privoxy还有不少替代方案我没有试过的,比如polipo之类。以下是操作步骤。

1,需要准备的东西:dropbox客户端(还没注册的请点我的邀请链接注册)、代理软件、privoxy。privoxy的官网是http://www.privoxy.org/,不知道下哪一个的话就点这里直接下载win32下的3.0.17稳定版http://sourceforge.net/projects/ijbswa/files/Win32/3.0.17%20(stable)/privoxy-3.0.17.zip/download。该方案应该与平台无关,但是我只在windows 7下试验过。

2,打开privoxy的配置文件config.txt,在最后面添加这几行:

#   for dropbox: http --> SOCKS Proxy(19841), https --> direct
forward-socks5 .dropbox.com 127.0.0.1:19841 .
forward .dropbox.com:443 .


注意将19841修改为你自己的代理软件的端口。如果你的代理软件不是socks类型的,那么就不是加上面的几行,而是加这几行:


#   for dropbox: http --> HTTP Proxy(19842), https --> direct
forward .dropbox.com 127.0.0.1:19842
forward .dropbox.com:443 .

注意好多地方有半角的.号,不要弄丢了。


3,启动privoxy,将dropbox的代理设置为HTTP 127.0.0.1:8118,就OK了。


如果有疑问可以留言讨论,如果有关于软件的其他用法的问题请另行google。

使用Facebook社交插件参与评论:

2011年1月17日星期一

关于Dropbox的Photos文件夹的安全性

关键词:Dropbox, Photos, Security, 权限, 安全性

本文是要分析一下Dropbox(点此注册)的Photos文件夹的权限和安全性。我们知道一个Photos文件夹的公开共享链接是大约这样子的:http://www.dropbox.com/gallery/9628444/2/_wallpaper/_other?h=8a53e8。其中[9628444]是用户ID,[2]是文件夹的深度,[_wallpaper]是一级文件夹名,[_other]是二级文件夹名。[h=8a53e8]是一个校验码,用于保证只有知道这个地址的人才有权限访问这个文件夹。其中的这个[h]很可能是指[hex],表示是16进制的意思。

本文分析一下在已经公开了某一个文件夹链接的前提下,其他文件夹的安全性。本文将从纯技术角度进行分析,类似“如果这么担心安全性的话,就不要往Dropbox上放啊”这样的话,不用说我也知道。

一般情况下,没有链接地址,其他文件夹依然是不可访问的,其中校验码起了很大的作用。

用一个6位的十六进制数进行权限控制,看起来应该很安全,不太可能有人误打误撞进了你的相册。暴力穷举破解也似乎不可行。假设有人知道了你的用户ID和文件夹名称(在本文上述前提下,其他人会知道你的用户ID,和文件夹的命名规则,可以很容易猜测出其他文件夹的名称,或者穷举文件夹名称),那么想要穷举这个校验码,需要最大尝试166次(16,777,216次)。实际上由于最高位不可能是0,那么最大就需要尝试165*15次(15,728,640次)。而Dropbox会在连续尝试失败若干次之后暂时封锁来自该IP的访问,所以暴力破解不太可行。

那么我们来看看这个校验码的生成有没有什么规律。按最安全的方案的话,Dropbox应该在每个文件夹创建时随机生成一个校验码。通过以下实验可以发现,校验码不是随机生成的。

假设校验码是随机生成,那么我们在Photos下面创建一个名为[test]的文件夹,如果分别在客户端和web端创建,校验码应该会不一样。我们将Dropbox客户端的代理服务器设置为一个不存在的代理,令Dropbox处于离线状态,这样可以保证Dropbox客户端程序在生成校验码时不与服务器交互。然后在本地和web端分别创建[test]文件夹并获得共享链接,发现两个链接的校验码是一样的。这足以说明,校验码不是随机生成的。

而这两个分别生成的校验码一样,是不是因为校验码是和路径有关的呢。我们把[test]改名为[test1],发现校验码变了,说明校验码是和路径有关的。

那么校验码和用户ID有没有关系呢。用不同的用户登录Dropbox同样创建[test]文件夹并获得链接,发现校验码不一样,所以校验码是和用户ID有关的。设计上也应该是这样,否则我只要自己也创建一个一样路径的文件夹,就能得到其他所有人的这个文件夹的校验码了。特别是在每个人都有[Photos]这个根文件夹的情况下,这点尤其重要。这个根文件夹虽然看似不提供共享链接,但是有用于通知图片更新的feed地址,可以用来反推共享链接。而且这个feed地址或者共享链接一旦泄漏,那你的所有相册就相当于完全公开了。因为有某文件夹访问权的人,也有它的子文件夹的访问权。如何获得Photos根文件夹的feed地址,在 我的上一篇文章 里有介绍。

既然校验码不是随机生成,那么次级安全的生成方案,就是令校验码和用户密码之类的挂钩了。经测试,校验码和用户登录名以及密码均无关。那么按我的想象,只有两种可能性了。1,为每个用户分别随机生成一个永久的密钥,令校验码和这个密钥有关。2,所有用户使用同一个密钥。安全性上肯定是第一种要高,以Dropbox的技术实力来看,我们应该相信他们是采用了第一种方案。如果用的是第二种方案的话,那么一旦将来这个唯一的密钥以及加密方法泄露出去,事情就大条了。而且考虑到Dropbox的某些技术人员肯定会知道这个密钥,为了限制技术人员的访问权,Dropbox决策层也应该会采用第一种方案。虽然有数据库查看权限的技术人员也能查到单个用户的密钥(这个密钥由于和用户密码无关,肯定不是加密存储的),但我们应该也没必要担心这一点,毕竟我们的文件都存在人家的服务器上,他们要想访问,那还不是轻而易举。顺便一提,我的个人观点,不管其他文件夹的文件是否使用了AES-256加密存储(他们宣称的,但这个加密据我猜测,应该不是使用用户密码进行加密的。从可以通过文件的MD5指纹或者SHA-1指纹进行文件去冗余存储处理,也可以看出文件不是使用类似上述的用户密钥进行加密的。而是使用一个公共密钥进行加密的。但是,没有使用用户密码作为密钥进行的加密,对用户来说都是相当于没有加密。当然使用用户密码作为密钥加密,安全性是最高,但是实用性不够。因为如果那样做的话,只要用户一修改密码,那所有的文件都需要拿出来重新进行加密。关于Dropbox的加密方法,我这边还会继续关注,有这方面消息的人请务必留言讨论一下。),但[Public]和[Photos]这两个文件夹的文件肯定没有加密存储,因为没有加密的必要。考虑到效率,也不应该加密。只要保证这些文件是不可浏览的(not browsable)和不可搜索的(not searchable),就可以认为文件是安全的了。不知道他们的权限管理和Google比怎么样,不要出现像之前Google工程师查看用户私人数据这样的事情才好。

写了这么多,结论就是文件目前是安全的,链接没有公开的相册,别人是怎么也看不了的。想看看有没有人有更深入的分析,所以稍微写一些,也就是抛一块烂砖,看能引出块玉来不。


2011/03/19补:
逛了一圈dropbox的官方论坛,发现dropbox的确是用一个公共密钥来加密所有文件。参考http://forums.dropbox.com/topic.php?id=25288&replies=7#post-159350
既然文件都是用一个公共密钥加密,那么前面提到的共享链接的校验码肯定也是用一个公共密钥了。至于这两个密钥是不是同一个,似乎就不那么重要了。泄漏了任何一个,对dropbox而言都将是毁灭性的打击。
实在不放心人家的安全性的人,建议用dropbox + TrueCrypt 的组合方案。这个方案下dropbox的一大特性--差分同步--是否还有效就不知道了。具体请自行google。
另外还有一个据说是真正的本地加密(可设个人加密密钥)、云端存储的产品,在idrivesync.com。我没实际验证,有兴趣的可以去看看。


2011/03/22补:
国内有不少出售或转让dropbox账号的,我要给大家一个警告,由于文中所述原因,转让dropbox账号是很危险的行为。因为即使更换了账号对应的E-mail地址和密码,原始Photos文件夹的分享链接和验证码是不会变的。前账号所有者保存下这个链接(如果他知道的话),然后将账号转让出去,下一个所有者的Photos文件夹及其子文件夹的所有图片将可以一览无遗。我建议,不要将这个链接保存在任何地方,不要用任何在线或离线的RSS阅读器订阅自己的Photos文件夹更新,最好是自己永远不要去获取这个链接。连你都不知道了,别人就更加无法知道了。不过大家放心,如果你的账号就是从别人手中转让过来的也不用太担心,因为在我写这段文字之前,我想全国没(几个)人知道这件事。
一切打算利用该“feature”进行非法、非道德用途的人,请停止这个想法。因此产生各类法律或者非法律的问题,本人一概不负任何责任。若因本文影响到你的淘宝上的生意,请自己承担后果。

使用Facebook社交插件参与评论:

2011年1月15日星期六

使用dropbox管理wallpaper

关键词:dropbox, wallpaper, RSS, John’s Background Switcher, cloud, 壁纸, 墙纸, 桌布, 自动切换, 云计算

    如果你和我一样下载了很多漂亮的壁纸图片的话,一定也很在意图片文件的备份问题和占用硬盘空间问题。我介绍一下我的做法,大家看看觉得这样o不ok。

    壁纸的用途,就是要显示到windows(其他操作系统没用过,不熟悉)桌面上,令工作学习之余看看放松心情。而平时一般不会去打开壁纸文件夹一张一张去看的。如今云计算乃是大势所趋,所以如果能把壁纸都存在云端,然后使用支持从云端读取图片的自动切换壁纸的软件进行自动壁纸切换的话,那么既可以空出部分硬盘空间(本地尽量不存储个人数据,为将来的完全云计算做准备),也不必担心万一电脑被盗数据丢失,另外还可以做到令壁纸自动更换免去手动更换的麻烦。这么一想,好处那是太多了。所以我花了不少时间在寻找这样的一个解决方案。最近,总算找到了近乎完美的方案。这个方案要用到2到3款工具软件/服务,先一一简单介绍一下。各软件的使用技巧不在本文讨论范围。

1,用于保存壁纸的在线图片存储服务,dropbox

大名鼎鼎的跨平台文件同步软件,并且提供云端的存储空间。这里不多介绍,可以去 同步控 搜索相关文章进一步了解。想要注册的话,点 我的这个邀请链接 注册可以给你我双方各加250M-500M的在线存储空间。当然这一类的软件/服务还有很多,如何选择一款好的软件/服务,特别是云计算服务的话,那么服务的稳定性是一个很重要的因素。当今要论云计算,Google、Microsoft、Amazon乃是3大广为人知的云计算巨头,服务的稳定性那是没得说。不比其他的小公司,说不定哪天就倒闭了。当然除去这三家,其他颇具规模的云计算服务也不少,但如果这三家中有提供类似服务的话,我会优先考虑这三家的服务。而实际上今天要说的这个解决方案,这三家都有可用的服务。Google的是PicasaWeb,微软有Skydrive,而dropbox虽然不是Amazon家的产品,但是用的是Amazon的云计算平台,而且最近这家公司发展势头似乎不错,再加上其他的一些优秀的功能,完全可以和Google、微软的服务一较高下。加上其他的一些产品,这里列一个表格来比较一下流行的几款软件/服务的差异。

服务名 运营商 免费在线存储容量 在线查看图片 支持RSS订阅图片更新 描述
PicasaWeb Google 1G 非常优秀的在线相册,只是免费空间有点小
Skydrive Microsoft 25G 在线相册的管理不方便
dropbox dropbox 2G或更多 完全符合我的要求。通过邀请注册,存储空间可以最大达到18G以上。而且有时候会做活动赠送存储空间。
SugarSync SugarSync 5G或更多 在线文件夹的组织、管理方式不太方便

其他还有Facebook、Flickr、photozou等可以选择,不一一介绍。

2,自动切换壁纸的windows程序,John’s Background Switcher

    用过不少自动切换壁纸的软件,最终发现还是这个最强大。支持图片来自本地计算机、PicasaWeb、Facebook、Flickr、RSS源、Google图片搜索结果等等,可以设置定时切换、随机切换,可以设置壁纸的显示方式(平铺、居中等一共9种模式,这一点其他很多软件都有缺陷),设置的选项也非常丰富,总之可以满足我的对于设置壁纸的一切需求。不过有两点不太好的地方,第1,软件的运行需要计算机安装有.net Framework。第2,用于访问网络的代理服务器功能,软件仅支持HTTP代理,不支持SOCKS代理。第1点问题也不大,因为从Windows Vista开始已经内置了.net Framework。还在用XP的赶紧升级吧。第2点据说和第1点有关,我专门去官方论坛问过作者能不能让软件支持SOCKS代理,作者说.net不支持SOCKS代理,他也没办法。但是作为一个.net程序员,我对此表示怀疑,大约搜了一下似乎并没有那么回事,.net应该是支持SOCKS代理的。具体还需要进一步调查。

3,代理软件

    在中国大陆,以上许多服务都不能用。如果想用dropbox、PicasaWeb、Flickr、Facebook,则需要另备代理软件。这个自行解决,本文不作推荐。

 

    有了以上的软件,就可以开始我们愉快的云壁纸生活了。以下分步说明。

1,将壁纸放入dropbox的根文件夹Photos

*支持子文件夹、多文件夹

*如果你的没有Photos这个文件夹,则应该在web管理页面添加这个文件夹,注意首字母需要大写。具体看 这里

2,在dropbox的web管理页面,点击壁纸所在文件夹右边的箭头并选择以Gallery方式打开这个相册的在线浏览模式。如果你的浏览器有自动检测feed功能,那么会检测到这个页面有这个相册的RSS更新feed。复制下这个feed地址。如果没有检测到,那么查看这个页面的源文件,搜索“rss”也能找到。还没找到的话,只好用一些非常规的办法了。在本地硬盘中定位到壁纸文件夹,右击这个文件夹,会有一个dropbox关联菜单。选择里面的“Copy Gallery Public Link”可以得到这个相册的共享地址。把地址中的“gallery”替换成“photos_rss”,就是这个相册的feed地址了。

    我在Photos下面建了一个文件夹“_wallpaper”,又在里面建了一个子文件夹“_other”,得到这个相册的feed地址是这样的:http://www.dropbox.com/photos_rss/9628444/2//_wallpaper/_other?h=8a53e8

*这个地址也可以用https开头的地址,但有些代理可能不支持https协议

*注意feed地址有一处有两个斜杠“/”。而使用非常规方法得到的feed地址同一处只有一个斜杠,如果一个斜杠无效的话,试试改成两个斜杠。

3,如果有多个文件夹需要配置,重复上一步。

4,将这些feed地址作为RSS photo feed加入John’s Background Switcher中,设定好间隔时间,就可以了。

5,壁纸全部上传完毕之后,可以在dropbox中设置为不同步壁纸文件夹。设置之后dropbox会删除本地的壁纸文件夹,节省了本地硬盘空间。以后想再往这个文件夹添加文件时,可以先添加到其他文件夹,然后在web管理界面将这些文件移动到壁纸文件夹中。

 

后记:1,关于选择一款好的软件,网上有人说的好:一款优秀的软件在于,你在使用它,但是你感觉不到它的存在。像dropbox、John’s Background Switcher都属于这一类。

2,关于dropbox的Photos文件夹的安全性,我接下来会专门写一篇文章来分析。

使用Facebook社交插件参与评论: