2009年11月4日星期三

Ubuntu 下爬“长城”之终极篇

歪歪灰主流
刚刚看到这篇文章准备给 Ubuntu 9.10 开机速度提速的时候,添加了文中提到的 PPA 并执行 sudo apt-get dist-upgrade 之后却发现 LaunchPad 的服务器太慢了,按照那个蜗牛般的速度,我一个小时也安装不了 ureadahead ,既浪费时间,还无辜消耗生命,正好我有可利用的资源,可以加速 LaunchPad 在国内的下载速度,当然,顺便把我所知道的 Ubuntu/Linux 下爬“长城”的终极大法全部总结出来!
Ubuntu 下目前效率最高,最稳定,速度最快,最简单的爬“长城”的方法莫过于 SSH 端口转发和 VPN (分 PPTP 和OpenVPN 两种方式)了,本文将逐一介绍,最终目的是绕道加速国外某些网站/服务器的下载速度,并顺便搞定你正常方式打不开的那些网站,以获取 Linux 资讯网站 Tuxmachines 上介绍的  Blogspot 等网站上的重要 Linux 学习资源。
Ubuntu 下使用 SSH 实现端口转发绕道访问目标服务器

一般的 Linux 系统都自带 SSH 的客户端工具 openssh-clients,无须安装其它的客户端(Windows 下需要 PuTTY 或者 SecureCRT 或者 MyEnTunnel 等工具) 就可以通过 SSH 端口转发来实现爬“长城”的目的!只需要一个命令连接上 SSH 服务器,然后通过本地端口转发,就可以实现 Firefox 浏览器通过SSH 加密隧道连接上远程 SSH 服务器,然后通过这个服务器再访问整个互联网。
ssh -qTfnN -D 7070 username@sshserver.com
这个命令里面,其中 7070 是要建立加密隧道的本地一个未占用的端口,username@sshserver.com 分别指代你的 SSH 服务器的用户名和密码。
Ubuntu 下使用 ssh-D 端口转发
在 终端中输入这个命令,回车,然后输入密码,即可建立 SSH 端口转发了。这个命令的好处是即使你关闭了终端窗口,ssh 仍然会在后台运行,成功建立了一个 ssh 加密代理后,设置你的 FireFox 浏览器的 socks 代理服务器为 127.0.0.1 端口为 7070 即可绕道访问正常情况下打不开的目标网址了。

Firefox 代理服务器设置
依次点击 Firefox 浏览器菜单栏的“编辑”/首选项,切换到“高级”选项卡,在切换到“网络”子选项卡,点击配置 Firefox 如何连接到英特网后面的“设置”按钮
配置 Firefox 代理服务器

选择“手动配置代理”,然后设置 Socks 的代理服务器为 127.0.0.1:7070 即可。如上图。现在试试 http://pengjiayou.blogspot.com 是否能够正常打开了呢?
使用 expect 防止 sshgfw 代理断线
使 用 ssh 端口转发来访问正常情况下打不开的网站,要保证绕道经过 ssh 代理服务器后,ssh 服务器能访问到你需要访问的目标网站,因此你需要一个开启 ssh 端口转发的非中国大陆境内的服务器,一般来说,你可以通过购买国外的主机或者 VPS 服务器获得,我在这里推荐 BluehostVPSlink 主机,前者是虚拟主机,后者是 VPS 提供商,两者都非常稳定,而且速度快!
用 ssh -D 代理后,你就再也不用为点击某个链接被重置的情况烦恼啦。在 Linux 中使用 ssh -D 连接代理服务器时过一段时间总会断线,于是有人用 expect 写了一个脚本,不担可以防上 ssh 断线,还可以自动输入密码。首先你需要在 Ubuntu 9.10 下安装 Expect
sudo apt-get install expect
安装完 Expect 之后,用 Gedit 新建一个文件,命名为 fuckgfw ,并将其保存在 /home/username 目录下
#!/usr/bin/expect
set timeout 60
spawn /usr/bin/ssh -D 7070 -g user@yourserver.com
# 这里的 user 为你自己的用户名,yourserver.com 为你自己的服务器域名或 ip
expect {
“password:” {
send “password\r”
#这里的 password 改为你自己的密码
}
}
interact {
timeout 60 { send ” “}
}
如下图所示
screenshot_025

给 fuckgfw 文件添加可执行权限 chmod a+x fuckgfw ,然后每次在链接被重置之后执行 ./fuckgfw 就可以建立 ssh 机密隧道。
screenshot_026
同样按照上面提到的方法,更改 Firefox 的 socks 代理服务器为 127.0.0.1:7070  ,就可以使用 Firefox 打开刚刚连接被重置的网页了。
安装并设置 Firefox 的 AutoProxy 插件
通 过上述方法,你就可以打开正常情况下打不开的网页了,但是,将 Firefox 的 socks 代理设置好了以后,所有网页,不分国内国外,也不管正常情况下能不能正常打开的国外网页一律通过 ssh 绕道访问了,由于我们大多数情况下访问的都是中国大陆地区的网页,所以通过 ssh 服务器间接访问之后速度会比较慢,而且,频繁更改 Firefox 的 socks 代理也是件让人头大的事情,在这种情况下,你需要 AutoProxy 代理来帮忙。
首先,点击这里 https://addons.mozilla.org/zh-CN/firefox/addon/46823 安装 Autoproxy 插件。
安装 Autoproxy 插件
点击 “添加到 Firefox” ,出现上图所示的对话框,点击立即安装,安装成功后后,重新启动Firefox。然后你会看到如下对话框,选择gfwlist (P.R.China)后,点击确定。
安装 AutoProxy 插件
接着你会看到Firefox主界面右上角出现有一个“福”字图案,点击“福”。
设置 AutoProxy 插件
点击“代理服务器——编辑代理服务器”。
设置 AutoProxy 插件
随即出现如下画面,你会看到如GAppProxy、Tor和Your Freedom这样一系列代理服务器名称。
设置 AutoProxy 插件
将GAppProxy一栏的参数修改为如下图所示。
配置 AutoProxy 插件
修改完毕后,点击确定。回到上图所示的 AutoProxy 首选项,点击“选择代理服务器”,选择 fuckGFW 。
screenshot_027
至此,AutoProxy 配置完毕。接下来,你可以无时无刻启用 AutoProxy 插件,启动之后 福 字是红色的。同时在需要代理的时候执行 ./fuckgfw 命令,遇到链接被重置的网页之后,添加一个规则,刷新 Firefox 即可。
设置 AutoProxy 插件
点击“代理规则”,然后“增加规则”,然后输入目标网址,然后刷新 Firefox 即可打开。
给 LaunchPad 下载加速
好了,基础知识讲完了,回到本篇文章的最主要的目的上来,那就是给 LaunchPad 安装软件加速。点击 系统/首选项/网络代理 也添加一个 socks 代理为 127.0.0.1:7070 的代理服务器。
Gnome 网络代理
这样,你就启用了 Gnome 全局 ssh 代理,通过 ssh 代理绕道下载 LaunchPad 上面的软件(即 ppa 软件源),下载的速度几乎完全取决于你的电脑和 ssh 服务器的数据传输速度,因此速度应该会提升不少,不用安装个软件要几个小时的等了。
使用 proxychains 让所有软件在 Linux 下爬“长城”
使用上面提到的办法,要么只能是 Firefox 能顺利爬“长城”,要么就是全部软件都爬长城了,一个在华留学的英国人介绍了一个这个 proxychains 软件,可以允许你在打开 ssh 端口转发的情况下让任何特定软件爬墙。首先安装 proxychains
sudo apt-get install proxychains
接着修改 proxychains 的配置文件 (sudo gedit /etc/proxychains.conf),我的配置文件如下:
# proxychains.conf  VER 3.1
#
#        HTTP, SOCKS4, SOCKS5 tunneling proxifier with DNS.
#
# The option below identifies how the ProxyList is treated.
# only one option should be uncommented at time,
# otherwise the last appearing option will be accepted
#
dynamic_chain
#
# Dynamic – Each connection will be done via chained proxies
# all proxies chained in the order as they appear in the list
# at least one proxy must be online to play in chain
# (dead proxies are skipped)
# otherwise EINTR is returned to the app
#
#strict_chain
#
# Strict – Each connection will be done via chained proxies
# all proxies chained in the order as they appear in the list
# all proxies must be online to play in chain
# otherwise EINTR is returned to the app
#
#random_chain
#
# Random – Each connection will be done via random proxy
# (or proxy chain, see  chain_len) from the list.
# this option is good to test your IDS :)
# Make sense only if random_chain
#chain_len = 2
# Quiet mode (no output from library)
#quiet_mode
# Proxy DNS requests – no leak for DNS data
proxy_dns
# Some timeouts in milliseconds
tcp_read_time_out 15000
tcp_connect_time_out 8000
# ProxyList format
#       type  host  port [user pass]
#       (values separated by ‘tab’ or ‘blank’)
#
#
#        Examples:
#
#                socks5    192.168.67.78    1080    lamer    secret
#        http    192.168.89.3    8080    justu    hidden
#         socks4    192.168.1.49    1080
#            http    192.168.39.93    8080
#
#
#       proxy types: http, socks4, socks5
#        ( auth types supported: “basic”-http  “user/pass”-socks )
#
[ProxyList]
# add proxy here …
# meanwile
# defaults set to “tor”
socks5     127.0.0.1 7070
保存,然后执行命令 “proxychains 你的软件 &” 比如 “proxychains google-chrome &” 就可以用 Google Chrome 打开 Blogspot 了。
执行命令: proxychains google-chrome &
Google Chrome 浏览器会自动打开,你可以用 Google Chrome 打开 Blogspot 了
screenshot_030
当然,你可以 sudo apt-get install twitux  安装 Tuitux 客户端,在没有可用的支持 Twitter API Proxy 的情况下,你就可以上推特了。
搞定 Network Manager 下的 PPTP VPN 连接
我在 VPSLink 的 vps 服务器上搭建了一个 PPTP VPN 服务器,不用一下简直浪费了,好吧,写一下教程先。要使用 Network Manager 链接 pptp vpn 服务器,你需要安装 network-manager-pptp
sudo apt-get install network-manager-pptp
sudo apt-get install network-manager-vpnc
然后,打开 系统/首选项/网络链接 ,切换至 VPN 选项卡
screenshot_031
点击 添加 ,选择 点对点隧道协议 PPTP
screenshot_032
按下图输入 pptp 服务器的用户名和密码
screenshot_033
点击 高级
screenshot_034
勾选 使用点到点加密和允许有状态的加密两项,确定,返回到刚才的对话框,应用并关闭,然后点击网络管理器的图标的下拉菜单,选择 VPN 连接,VPSlink 即可。
PPTP 链接成功之后,简单的可以理解为你的及其开了 ssh 代理并启用了 Gnome 全局代理,同样可以快速安装 LaunchPad 上面的软件了。
写这篇文章来来回回折腾了好几个小时,代价是今天没有上班,如果发现其中的错误,请留言指正,谢谢!
为了博客的安全,请不要传播我的博客链接,而是大肆传播此 PDF 文件(如果你认为有必要) http://fedora-zh.googlecode.com/files/The%20Ultimate%20Guide%20to%20Bypass%20the%20Greatwall%20under%20Ubuntu.pdf
谢谢

在线代理网址加密方式自定义修改

  来源: 胡桃夹子的驿站 
前 一段时间刚搞好了在线代理网站,结果正好赶上墙升级,所有基于base64来加密网址的代理程序全完,倍受打击,就把这一块扔下了,近期收集并分析考虑了 部分背景资料,觉得墙也不至于太过分,在线代理这一块长远来讲死掉的可能性并不大,于是今天心血来潮想再研究下在线代理相关的东西。

首先分析一下为什么在这个问题上墙不会太狠。首先申明这个判断是基于目前的情况,对于伟大的天朝,明天会怎么样是谁也无法预测的,always ***er than you think(***为某些形容词,可以自己填空,哈)。
1、在线代理目前仍是一个小众的东西,规模并没有大到引起高层敏感的程度,毕竟我国网民的平均文化水平和人权意识还相当低。
2、封锁技术还没有足够成熟,某些技术细节上还存在困难,导致封锁成本太高,即使偏执的天朝也不是那么情愿承担。
3、实现对base64加密的过滤并不是针对在线代理依靠的网址加密,而是针对容量巨大的内容加密,即为了过滤关键词。
其实在线代理之所以要把网址用base64加密,是出于字符兼容性的考虑,能实现穿越只是个副作用,并不是设计初衷,毕竟如此厉害的墙是咱们特有的,在国际上还是非主流。以前能实现穿越只是因为墙当时还不够完善,现在考虑到了而已,属于正常范畴。
对 于自己搭建在线代理平台(不是说聚合即盗链的方式,而是在自己的服务器上搭建,消耗自己的资源),变更网址加密的方式有无数种,我最近看到的就有 字母乱序、替换.为*、加减元素等等五花八门的方法,例如下面这种自定义函数实现随机数加密,确实很有意思,由于加密条件是个性化的,加密结果还可以随机 变化,这样基本上无论墙怎么设置过滤条件都无法实现封锁:
function encoded($ses)
 {
        $sesencoded = $ses;
         $num = mt_rand(3,9);
         for($i = 1 ; $i <= $num ; $i++)
         {
                $sesencoded = base64_encode($sesencoded);
         }
        $alpha_array = array('Y','D','U','R','P','S','B','M','A','T','H');
         $sesencoded = $sesencoded . "+" . $alpha_array[$num];
         $sesencoded = base64_encode($sesencoded);
         return $sesencoded;
}//end of encoded function
  
function decoded($str)
 {
        $alpha_array = array('Y','D','U','R','P','S','B','M','A','T','H');
         $decoded = base64_decode($str);
         list($decoded,$letter) = split("\+",$decoded);
         for($i = 0 ; $i<count($alpha_array) ; $i++)
         {
                if($alpha_array[$i] == $letter)
                         break;
        }
        for($j=1;$j<=$i;$j++)
         {
                $decoded =  base64_decode($decoded);
         }
        return $decoded;
 }//end of decoded function
上面说的加密方式都挺有效,但稍显繁琐,尤其当程序代码中要修改的地方很多时更是如此,其实由于函数可以嵌套,最简单的思路是用base64重复加码就可以了,即:
base64_encode(base64_encode($url));
 base64_decode(base64_decode($url));
简 单吧,这样就没法实现过滤了,那么墙有没有可能考虑到这一点,在过滤时加以检测?当然有可能,但可能性不大,因为作为数据量如此庞大的过滤检测, 如果增加一重函数检验,会增加巨大的硬件成本,还会进一步拖慢网络速度。即使墙真这么变态检测二次加码也没关系,咱再重复加码1次、3次、10次……不就 行了嘛,看这个负载墙受不受得了,哈哈。退一万步讲,要真这么变态了,用上面的自定义加密函数的方法就行了,绝无完全封锁的可能。

中国封锁柏林墙网站 柏林市长不满

作者:林育立  来源:中央社  转自:新浪

(中央社记者林育立柏林3日专电)柏林市政府委托设置的柏林墙网站,由于敏感内容遭中国封锁,不仅新闻自由组织抗议,柏林市长渥瑞特(Klaus Wowereit)也对中国官方的作法不满。
9日是柏林墙倒塌20�年纪念日,柏林市政府特地设置包括中文版在内的“柏林推特墙”(berlintwitterwall.com)网站,供网友透过推特(Twitter)在墙上留言,抒发对历史的感想和未来的期望。
在世人眼中,柏林墙不仅是欧洲分裂和一统的象征,也是人类追求自由的精神指标,结果网站一推出,竟成了中国网友对网路审查发�不满的留言板。
据主持网站的柏林文化计划协会指出,网站上线没几天,即在中国被封锁。
然而,从目前4000多条推文当中,仍可见相当多的中文留言,抗议GFW(Great Firewall of China,中国防火墙)。
对此,无国界记者组织(Reporters WithoutBorders)声明�,几�前,中国的官方代表才在法兰克福书展强调文化交流的重要性,许多外国网站却仍在中国遭到封锁,呼吁北京解禁。
渥瑞特也表示不满;他在“柏林邮驿报”(Berliner Kurier)表示,不能因为争取自由和民主就被打压,如果真的是政府主导,对中国的言论自由形象不利。
德国“世界报”(Die Welt)发自北京报导,由于柏林墙倒塌与天安门事件发生在同一年,柏林墙倒塌20�年的相关报导和省思,在许多中国媒体仍是禁忌的话题。

投稿:5 个方便实用的短链还原服务

作者:thw   来源:磨剑庐,web2.0 review



因 为有些网址太长,不便于记忆和传播,因此,网址缩短服务应需而生,因为微博客(microblog)的兴起和流行,使得网址简化工具如如雨后春笋 大量涌现。然而,随着随着一些微博客和网址缩短服务相继的“倒掉”,致使网友们收藏的很多对自身有用的技术性文章地址成为一定意义上的死链。打不开这些链 接怎么办呢?其实也只是一定意义上的死链了,可以借助下面介绍的几个5 个短链还原服务来找到其原来的地址: 天涯海阁介绍有四款短链接还原服务 ,我这里再补充几个更好用的。因为这5个提供有 Bookmarklet 、Firefox 扩展或者 Greasemonkey脚本,所以用起来更方便一些。
  1. Preview URL
    是一个网址快照预览服务,但也支持短链还原,输入被缩短的网址后即可得到其原来的地址,并能查看原网页快照,PreviewURL 提供了搜索插件,可以在Firefox 2 和 Internet Explorer 7 两者以上的版本安装。
  2. ExpandMyURL
    支持30多种的短链还原,包括常见的bit.lytinyurl.com等,提供有一个 Bookmarklet( 小书签):Expand My Url,支持 IE 、Firefox 等常见浏览器,用法是,在有短链地址的页面,点击小书签"Expand My Url",便能自动还原。IE 用户推荐使用这个!
  3. LongURL
    支持 200 多种短链还原服务,提供有 Firefox 扩展 LongURL Mobile Expander 和 Greasemonkey脚本 LongURL Mobile Expander ,两者效果相同。因此局限于 Firefox 浏览器,而且在分析网址时速度较慢,不推荐。开放API,开发者可以写些应用。
  4. Untiny.me
    支持 221 种短链还原服务,如果你使用的短链服务比较“非主流”,可以侧重使用这个服务。而且为多种平台(Windows、Mac OS X、Linux/Unix OS),多种浏览器(IE、Firefox、Opera)准备了相应的插件,Firefox 用户可在 Untiny Greasemonkey 脚本UntinyFox 扩展两者选其一安装。Untiny还提供有 Bookmarklet,另外还提供有Gtalk 机器人(untiny@bot.im)和 MSN 机器人(untiny@hotmail.com)。开放API,技术人员可以开发更多的应用。
  5. LongURLPlease
    支持 75 种短链还原服务,当然常用的都包含其中,开放API。提供有 Firefox 扩展 Long URL Please ,和小书签 Long URL Please,强烈推荐这个 Firefox扩展,安装之后,页面上的短链被自动替换成原链接地址,非常方便!

5种途径获取 RSS feed 全文输出

磨剑庐,web2.0 review
Create Full-Text Feeds
写博客的朋友,“你到底是需要那些可能意义并不大的Blog页面流量,还是能够代表忠实读者数量的Feed订阅量” ?这里就涉及到RSS feed 输出全文还是摘要 的问题,WebLeOn 亦精辟地分析了为什么要输出全文Feed, 网络上很多人对这种希望通过摘要输出赚流量的做法嗤之以鼻,更有甚者,见到摘要输出的 feed 一概退订,提供全文 RSS feed 似乎已经成了blogger之间一种约定俗成的规则,这样一来,这样的博客在RSS feed 摘要输出方面的利弊,在流量与读者之间的得失,也就不言自明了。
本文不在这方面再做探讨,主要总结获取不提供全文输出的博客的全文 RSS feed 的途径或方法,目前有5种,两种已为大家所熟知,在这里还补充2个新的工具。
  1. 利用まるごとRSS在线生成全文 Feed
    网站页面语言是日语,不过不要紧,操作很简单,完全可以无视那些文字,只需把博客的地址或者 RSS feed 输入到页面唯一的输入框里,然后点击 Go,全文化的 Feed 就生成了!(via..
  2. 使用 FeedEx 在线生成全文 Feed
    网站页面语言是俄语,不过也不要紧,输入博客的地址或者 RSS feed 地址,然后再等一段时间,可能有点长,但是成功率较前两强,之后就可以得到一个全文 RSS feed ,并有一个比较简洁的feed 地址以便订阅,前者无法搞定的 FeedEx 基本上能搞定!强烈推荐!!!!好了,这是 cnbeta 的全文feed效果,大家围观吧!
    http://feedex.net/feed/www.cnbeta.com/backend.php?atom
  3. 利用 fivefilters 的full-text rss在线生成全文 Feed
    能为不提供RSS feed 输出的烧制一个 Feed,亦能跟mrss.dokoda.jp 一样,只要输入博客的地址或者 Feed 地址,就可生成全文 Feed!
  4. 借助Yahoo Pipes制作全文 Feed
    又见 Yahoo Pipes,上次介绍了使用 Yahoo Pipes 翻译 Feed,可以借助 Yahoo Pipes 为你的 feed 生成多种语言的 feed。至于如何用 Yahoo Pipes 制作全文 RSS可参考煎蛋这篇文章,亦或者直接使用这个 Full Text RSS Builder
  5. 在 Google Reader或 鲜果 借助 Greasemonkey 来订阅全文 Feed
    这个方法比较复杂,需要在 Firefox 浏览器装上Google Reader 获取全文 feed 的脚本google reader full feed changer,然后还要进行一些设置,比较复杂,详细见fisio 的日志
总结:当然有了这四种途径不一定把所有摘要输出的RSS Feed 搞定,一般情况下,有 mrss.dokoda.jp,fivefilters 和 FeedEx 3个在线的工具就行,方便而快捷,mrss.dokoda.jp 搞不定的 fivefilters 可能能搞定,fivefilters 搞不定的 mrss.dokoda.jp 可能能搞定,两者都搞不定的 FeedEx 能搞定 ,3者都搞不定的话可以使用 Yahoo Pipes 或 Greasemonkey 的方法,但是要复杂点。另外,万一都搞不定的话,就到人家博客直接看去咯,其实博客本身上也有一些有用的东西,比如可以了解到博客作者信息,有时也可以从 侧边栏发现一些好玩的 Widget,另外看别人的文章给别人带一个流量也是应该的,如果读了文章让你受益匪浅的话,也可以帮别人点一下广告,举手之劳,手有余香,也不会让你失 去什么!