2013年6月28日星期五

Blogger上的博客如何提交完整的Sitemap

Blogger现在可以输出Atom 1.0和RSS 2.0两种版本的feed(参见官方说明)。不过无论哪种feed,都只包含最多26个Post。

对于通常的feed订阅而言,最新26个Post应该是足够了。反正RSS阅读器只需要最新的那几个Post就行。但对于想把站点的Sitemap提交到Google的网站站长工具去做SEO的情况,26个Post就太少了。既然是Sitemap,当然希望是全部的页面了,那么有什么办法呢?

这里有个老外的页面,说明了一种办法。大致说起来就是,Google在提供feed订阅的URL中,还有两个未公开说明的参数:start-index和max-results。前者表示这次的feed输出从哪个(序号的)Post开始,后者表示这次最多输出多少个Post。于是如果要提交超过(默认的)26个Post的Sitemap,就可以用类似下面这种:

http://blogname.blogspot.com/feeds/posts/default?alt=rss&max-results=500

不过,看起来max-results=500应该是一个上限。本人是没有那个条件去试了,博文数量差着一个0哩!对于博文数量超过500的情况,上面那个老外的博文中也提到了一个办法,就是分段提交Sitemap。比如:

http://blogname.blogspot.com/feeds/posts/default?alt=rss&start-index=1&max-results=500
http://blogname.blogspot.com/feeds/posts/default?alt=rss&start-index=501&max-results=500
http://blogname.blogspot.com/feeds/posts/default?alt=rss&start-index=1001&max-results=500
……

反正这些页面是都提交上去了,Google会自己把它们合并起来的。

2013年6月27日星期四

自己写了个帮助快速替换hosts的工具

替换hosts对于会的人而言并不是一件复杂的事情。不过仍然稍嫌繁琐:目录本来就比较深,还要涉及到文件复制和改名。稍一不留意还有搞错掉的可能。

两个月前,我终于无法忍受了,自己写了一个批处理来解决这个问题。人容易出错,人会烦,机器不会出错——如果你程序写对了的情况下。作为程序员,就应该有自己动手丰衣足食的觉悟。因此就有了SetHosts.bat的第一版:
@echo off
pushd %SystemRoot%\system32\drivers\etc\
copy /y %1 hosts
popd
只这样显然是不够的。在命令行下敲指令,这不是我的初衷。虽然Windows的Drag&Drop可以省很多事情,但我还想做得更多。把这个BAT注册成某个特定后缀的文件的默认打开程序不是很好吗?这样以后直接双击文件就可以完成替换了。

于是当时我自己用regedit在注册表上填写了关联文件打开方式的相关信息。现在我可以双击hosts_cn.fkw或hosts_us.fkw来快速地应用某个我事先准备好的hosts文件了。
应该说,自己用用,这样是足够了。不过我还想做的更好一点。让程序自己完成这个填写注册表的过程,不是更好吗?于是有了SetHosts.bat的第二版:
@echo off
if {%1}=={} goto install
if {%1}=={/u} goto uninstall
if {%1}=={/U} goto uninstall
pushd %SystemRoot%\system32\drivers\etc\
copy /y %1 hosts
popd
goto :eof
:install
set MY_TEMPREGFILE=%TEMP%\temp.reg
set MY_SETHOST=%~f0
set MY_SETHOST=%MY_SETHOST:\=\\%
echo Windows Registry Editor Version 5.00>%MY_TEMPREGFILE%
echo.>>%MY_TEMPREGFILE%
echo [HKEY_CLASSES_ROOT\.fkw]>>%MY_TEMPREGFILE%
echo @="Fuckwall.Hosts">>%MY_TEMPREGFILE%
echo [HKEY_CLASSES_ROOT\Fuckwall.Hosts]>>%MY_TEMPREGFILE%
echo [HKEY_CLASSES_ROOT\Fuckwall.Hosts\shell]>>%MY_TEMPREGFILE%
echo [HKEY_CLASSES_ROOT\Fuckwall.Hosts\shell\edit]>>%MY_TEMPREGFILE%
echo [HKEY_CLASSES_ROOT\Fuckwall.Hosts\shell\edit\command]>>%MY_TEMPREGFILE%
echo @="\"C:\\Windows\\Notepad.exe\" \"%%1\"">>%MY_TEMPREGFILE%
echo [HKEY_CLASSES_ROOT\Fuckwall.Hosts\shell\open]>>%MY_TEMPREGFILE%
echo [HKEY_CLASSES_ROOT\Fuckwall.Hosts\shell\open\command]>>%MY_TEMPREGFILE%
echo @="\"%MY_SETHOST%\" \"%%1\"">>%MY_TEMPREGFILE%
regedit /s %MY_TEMPREGFILE%
del /q %MY_TEMPREGFILE%
set MY_TEMPREGFILE=
set MY_SETHOST=
echo 处理程序安装成功
echo 您可以双击后缀名为fkw的文件来直接更换hosts
echo.
pause
goto :eof
:uninstall
set MY_TEMPREGFILE=%TEMP%\temp.reg
echo Windows Registry Editor Version 5.00>%MY_TEMPREGFILE%
echo.>>%MY_TEMPREGFILE%
echo [-HKEY_CLASSES_ROOT\.fkw]>>%MY_TEMPREGFILE%
echo [-HKEY_CLASSES_ROOT\Fuckwall.Hosts]>>%MY_TEMPREGFILE%
echo [-HKEY_CLASSES_ROOT\Fuckwall.Hosts\shell]>>%MY_TEMPREGFILE%
echo [-HKEY_CLASSES_ROOT\Fuckwall.Hosts\shell\edit]>>%MY_TEMPREGFILE%
echo [-HKEY_CLASSES_ROOT\Fuckwall.Hosts\shell\edit\command]>>%MY_TEMPREGFILE%
echo [-HKEY_CLASSES_ROOT\Fuckwall.Hosts\shell\open]>>%MY_TEMPREGFILE%
echo [-HKEY_CLASSES_ROOT\Fuckwall.Hosts\shell\open\command]>>%MY_TEMPREGFILE%
regedit /s %MY_TEMPREGFILE%
del /q %MY_TEMPREGFILE%
set MY_TEMPREGFILE=
echo 处理程序反安装成功
pause
goto :eof
这下不仅注册有了,注销(反安装)也有了。以后看到fkw后缀的文件,就可以快速地Fuckwall了。……于是今天方校长就请病假了。

如果整代码有困难,那么可以从下面两个链接之一进行下载:
Dropbox: https://dl.dropboxusercontent.com/u/44933633/SetHosts.bat
Mega: https://mega.co.nz/#!Bhx2yYoR!ElR26mi-iGqx5WU3YJks8ViINKEE_wlv1Y32Mil6UEU

上海电信开始屏蔽Google翻墙IP

家里用的上海电信光纤宽带,最近通过PPPoE分配到114.92.76.*的地址。然后就发现Google+无法访问了,hosts失效。实测发现203.208.46.160~203.208.46.165这六个IP地址被屏蔽。目前还不知道是ISP还是GFW所为,不过反正它俩都是蛇鼠一窝。

tracert结果见下图。
从这个现象来看,被干掉的应该是响应包,请求包应该是放行了。这说明屏蔽者企图制造服务器DoS的假象,用心非常险恶。可见的最后一跳是203.208.62.7,与未屏蔽时一致,查IP可知这是guxiang的路由器。若无其它接入点上的tracert印证,仅从这个看的确很像是guxiang内部出的问题。普通用户可能以为服务器宕机,或者网络故障等等。

这几个IP的确是被用于翻墙最多的那几个。被广泛用于网上流传的各种hosts,以及GoAgent的配置文件中。被优先干掉,我一点也不奇怪。不同地区、不同运营商的网络情况也不一样。长宽更惨。从网友的反馈来看,有的外省市可能屏蔽得更多。这动向值得注意,是最近有什么值得收紧的事件吗,还是只是因为7月1日快到了?