Oh…Twitter

云南真是避暑胜地,闭关一周安安静静看看书,其实也挺不错的。

言归正传,一直以来因为公司提供了很多VPN,所以也没有特别关注翻墙的问题。但今天突然发现博客首页的flash twitter插件没法用了。所以干脆就直接换成javascript的,然后开始翻墙。

翻墙基本原理是拿我这台博客服务器做代理,php不太熟,其间还google了一下“php if statement”:

https://blog.axqd.net/wp-content/themes/emplode/axqd.php?callback=TWTR.Widget.receiveCallback&count=50&since_id=2769255170&clientsource=TWITTERINC_WIDGET

<?php
if( $_GET[ ‘since_id’ ] && preg_match( ‘/^[0-9]+$/’, $_GET[ ‘since_id’ ] ) )
  echo file_get_contents("http://twitter.com/statuses/user_timeline/axqd.json?callback=TWTR.Widget.receiveCallback&count=50&clientsource=TWITTERINC_WIDGET&since_id=".$_GET[ ‘since_id’ ]);
else
  echo file_get_contents("http://twitter.com/statuses/user_timeline/axqd.json?callback=TWTR.Widget.receiveCallback&count=50&clientsource=TWITTERINC_WIDGET");
?>

搞定之后,可以选择自己处理这个json对象。不过既然已经有现成的,为什么不用呢?于是比照博客皮肤,在twitter官方配色了一个JS版本的client。

接下来转换资源地址有点麻烦:

先啃容易的骨头,VPN出去,下载相应的静态资源,比如style sheet,js file,还有几个png、gif啥的,然后修改其中一些资源里面的引用地址,再通通一股脑传到服务器上。

接下来改js文件,可惜的是,这个js文件是混淆过的,也不太知道怎么还原。好在混淆器大多像下面这样,在后面搞得像是符号表似的:

‘||||this|function|return||if|var||||||||||||||||||||||||||||||||||||||twtr|false|div|id|else|true|tweet||user|class|net|http|call|results…’

我试着替换其中某些字符串,在本地多尝试几遍,居然找到一个可用的替换。

当然这种方式也有不太爽的地方,细心的你会发现到twitter.com的链接全都被换成了blog.axqd.net。:P

不过反正放这个插件的目的在于展示,而不在于收集reply,所以也就懒得处理这个问题了,呵呵。