进一步突破GFW,恢复你Twitter的另一大半功力方法

twitter其实是可以作为单独的服务来用的,不过对于很多bloger而言,他们更希望自己的twitter能被浏览自己blog的XD看到,于是widget就出现了,它用来加在页面中显示twitter内容。

twitter被GFW墙掉之后,出现了很多翻越GFW更新twitter的办法,最方便的当然还是修改host+https法,使用之后,各种第三方软件又可以使用了,当然itweetDabrTwitzapTweetreetwitter Gmail Widget之类的第三方网站也是不错的选择。

但是Twitter的另一半–嵌入widget还是被废掉了,昨天在feishuang大盆友的建议下,Ray搞了点研究工作,由于科研选择方向比较正确,所以很快就成功了,可以实现显示Twitter纯文字widget内容了~

原理:很简单,将嵌入Twitter的widget代码中的网址替换为修改host法中Twitter.com的IP即可。

行动:

1、嵌入Twitter代码(会的可跳过)

Twitter嵌入文字widget的代码可以在这个网址获得https://twitter.com/widgets,选择other,然后是选择html版的。

范例如下(根据自己选择的设置不同,可能会略微有些不同):

       <div id=”twitter_div”>
         <h2 style=”display: none;” >Twitter Updates</h2>
         <ul id=”twitter_update_list”></ul>
         <a href=”http://twitter.com/rayche” id=”twitter-link” style=”display:block;text-align:right;”>follow me on Twitter</a>
       </div>

以下部分插入在 </body>之前

       <script type=”text/javascript” src=”http://twitter.com/javascripts/blogger.js”></script>         
           <script type=”text/javascript” src=”http://twitter.com/statuses/user_timeline/rayche.json?callback=twitterCallback2&amp;count=10″></script>

2、修改html代码部分

要做的事情很简单,把所有的“http://twitter.com”改为“http://168.143.161.20”。(共有三处)

这样修改完之后,修改过host的人就可以看到你的Twitter了,但是没有修改过的还是不行。

3、修改js内部代码部分

所以要进一步进行修改。办法是修改http://168.143.161.20/javascripts/blogger.js这个文件,把以上网址输入浏览器地址栏,或者会提醒你下载这个blogger.js文件(那就下载),或者会直接打开这个文件(那就另存为),总之,想办法把它的内容以.js格式的文件保存下来。其中的内容大概是这样的。


function twitterCallback2(twitters) {
var statusHTML = [];
for (var i=0; i<twitters.length; i++){
var username = twitters[i].user.screen_name;
var status = twitters[i].text.replace(/((https?|s?ftp|ssh)://[^"s<>]*[^.,;'">:s<>)]!])/g, function(url) {
return '<a href="'+url+'">'+url+'</a>';
}).replace(/B@([_a-z0-9]+)/ig, function(reply) {
return reply.charAt(0)+'<a href="http://twitter.com/'+reply.substring(1)
+'">'+reply.substring(1)+'</a>';
});
statusHTML.push('<li><span>'+status+'</span> <a style="font-size:85%"
href="http://twitter.com/'+username+'/statuses/'+twitters[i].id+'">'+relative_time(twitters[i].created_at)+'</a></li>');
}
document.getElementById('twitter_update_list').innerHTML = statusHTML.join('');
}

function relative_time(time_value) {
var values = time_value.split(" ");
time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
var parsed_date = Date.parse(time_value);
var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
delta = delta + (relative_to.getTimezoneOffset() * 60);

if (delta < 60) {
return 'less than a minute ago';
} else if(delta < 120) {
return 'about a minute ago';
} else if(delta < (60*60)) {
return (parseInt(delta / 60)).toString() + ' minutes ago';
} else if(delta < (120*60)) {
return 'about an hour ago';
} else if(delta < (24*60*60)) {
return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
} else if(delta < (48*60*60)) {
return '1 day ago';
} else {
return (parseInt(delta / 86400)).toString() + ' days ago';
}
}


将第八和第十行里的http://twitter.com/改成http://168.143.161.20/然后保存,把那个js文件上传到某个可以
外链访问的空间里吧,有blog的人应该都会有的吧~
接下来修改widget的代码,把


<script type="text/javascript" src="http://twitter.com/javascripts/blogger.js"></script>


这句中的
src="http://twitter.com/javascripts/blogger.js" 中引号内的地址替换成那个js的网址~
Ray修改后的js网络地址是http://rayche.blogbus.com/files/12488834350.js,不清楚是否可以匿名外链,大家如
果找不到网络空间上传的话可以试试~

经过这一系列的动作之后,就OK了。接下来就测试测试吧~
看似复杂其实很简单的,人,不要怕麻烦。
至于flash版的widget Ray并没有做测试,推测将static.twitter.com替换成168.143.161.20估计也是有可能的有效
的,有钻研精神的盆友帮忙测试一下吧!
PS:关于如何插入widget之类的问题就不要问啦,自己找找教程…
PS2:另外很多第三方的widget不太清楚是否好用,如果可以的话说不定更加方便~
PS3:欢迎转载,请注明出处。
PS4:欢迎大家跟我交流其他的方法。
PS5:进一步分析了widget的代码,现在Ray的边栏Twitter显示清晰多了~(耗时三个小时囧…)

1 comment to 进一步突破GFW,恢复你Twitter的另一大半功力方法

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>