刚刚看到这篇文章准备给 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 服务器的用户名和密码。
在终端中输入这个命令,回车,然后输入密码,即可建立 SSH 端口转发了。这个命令的好处是即使你关闭了终端窗口,ssh 仍然会在后台运行,成功建立了一个 ssh 加密代理后,设置你的 FireFox 浏览器的 socks 代理服务器为 127.0.0.1 端口为 7070 即可绕道访问正常情况下打不开的目标网址了。
依次点击 Firefox 浏览器菜单栏的“编辑”/首选项,切换到“高级”选项卡,在切换到“网络”子选项卡,点击配置 Firefox 如何连接到英特网后面的“设置”按钮
选择“手动配置代理”,然后设置 Socks 的代理服务器为 127.0.0.1:7070 即可。如上图。现在试试 http://pengjiayou.blogspot.com 是否能够正常打开了呢?
使用 expect 防止 sshgfw 代理断线
使用 ssh 端口转发来访问正常情况下打不开的网站,要保证绕道经过 ssh 代理服务器后,ssh 服务器能访问到你需要访问的目标网站,因此你需要一个开启 ssh 端口转发的非中国大陆境内的服务器,一般来说,你可以通过购买国外的主机或者 VPS 服务器获得,我在这里推荐 Bluehost 和 VPSlink 主机,前者是虚拟主机,后者是 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 ” “}
}
如下图所示
给 fuckgfw 文件添加可执行权限 chmod a+x fuckgfw ,然后每次在链接被重置之后执行 ./fuckgfw 就可以建立 ssh 机密隧道。
同样按照上面提到的方法,更改 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 插件。
点击 “添加到 Firefox” ,出现上图所示的对话框,点击立即安装,安装成功后后,重新启动Firefox。然后你会看到如下对话框,选择gfwlist (P.R.China)后,点击确定。
接着你会看到Firefox主界面右上角出现有一个“福”字图案,点击“福”。
点击“代理服务器——编辑代理服务器”。
随即出现如下画面,你会看到如GAppProxy、Tor和Your Freedom这样一系列代理服务器名称。
将GAppProxy一栏的参数修改为如下图所示。
修改完毕后,点击确定。回到上图所示的 AutoProxy 首选项,点击“选择代理服务器”,选择 fuckGFW 。
至此,AutoProxy 配置完毕。接下来,你可以无时无刻启用 AutoProxy 插件,启动之后 福 字是红色的。同时在需要代理的时候执行 ./fuckgfw 命令,遇到链接被重置的网页之后,添加一个规则,刷新 Firefox 即可。
点击“代理规则”,然后“增加规则”,然后输入目标网址,然后刷新 Firefox 即可打开。
给 LaunchPad 下载加速
好了,基础知识讲完了,回到本篇文章的最主要的目的上来,那就是给 LaunchPad 安装软件加速。点击 系统/首选项/网络代理 也添加一个 socks 代理为 127.0.0.1:7070 的代理服务器。
这样,你就启用了 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 了
当然,你可以 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 选项卡
点击 添加 ,选择 点对点隧道协议 PPTP
按下图输入 pptp 服务器的用户名和密码
点击 高级
勾选 使用点到点加密和允许有状态的加密两项,确定,返回到刚才的对话框,应用并关闭,然后点击网络管理器的图标的下拉菜单,选择 VPN 连接,VPSlink 即可。
PPTP 链接成功之后,简单的可以理解为你的及其开了 ssh 代理并启用了 Gnome 全局代理,同样可以快速安装 LaunchPad 上面的软件了。
写这篇文章来来回回折腾了好几个小时,代价是今天没有上班,如果发现其中的错误,请留言指正,谢谢!
为了博客的安全,请不要传播我的博客链接,而是大肆传播此 PDF 文件(如果你认为有必要) http://fedora-zh.googlecode.com/files/The%20Ultimate%20Guide%20to%20Bypass%20the%20Greatwall%20under%20Ubuntu.pdf
谢谢
没有评论:
发表评论