最近南柯在忙啥

很久没更新博客,一方面前段时间在忙项目,另一方面有两篇博文的草稿压着没发。本篇谈下回学校后在忙啥:主要是关于网络代理的,另外扯淡下和“病魔”作斗争的事。

“西北一所不知名的高校”(以下用DX代替之)的校园网使我萌生了对代理技术的钻研冲动,使我忍着肺炎的折磨折腾完了IPV6的代理、Goagent与APJP的学习。DX的校园网每月提供给每个最低等级的DXer是3 GB(吉比特) IPv4流量,无限制的IPv6流量,对于我这种暑假留校的临时DXer,这个待遇不减,挺好!在此对DX校园网表示“我能说脏话吗?”式的特别感谢。

暑假当我从家回到DX临时宿舍里,准备享用3G大餐时,突然发现上不去外网:这是3G大餐被别人吃了的象征。这得插句话,我的校园网账号有密码的,但不知道被哪个良知被泯的DXer把账号盗用了,偷吃了我的3G大餐……好吧,“世态炎凉”这话我可没说。

刚来学校,得知会一下在DX的朋友。无3G大餐的第一招横空闪耀夺目开天辟地分开混沌(原谅小学没有记住那么多成语)似的诞生了:

1. 无流量和同在DX局域网内的妹纸聊天

我的想法很单纯,就是和那人说下“我来学校了”;再单纯点,就是给她秀下Sha X的Windows同网聊天“技术”。角落的你说啥?用手机发短信?….手机神马的我觉得不单纯……

IPV6网络没断,好;

Google支持IPV6,好;

有飞鸽传书、飞秋这类局域网聊天软件,好;

万事俱备,只差那个月黑风高夜的行动了!

首先妹纸没有飞秋,用走IPV6的Gmail把飞秋发给她;然后她把IP用邮件回给我,好了。飞秋互加好友,开始聊天。她嫌飞秋消息来了麻雀叫不好听,非换成QQ的“滴滴”,没事!随便换….

这个算简单的,但也有点复杂。我说,你要是linuxer,咱直接在/proc的ps下聊天,她说不懂,唉,秀到她知识的短处了,那就秀可而止吧!

第一招也就是在DX的网内活动,DX校园网又不是大中华局域网,没啥可看的,我不羁的心又萌生了对真实互联网的渴望(很多网民都有这诉求)。穷则思变,变则通,我在饥肠辘辘的19号晚上、在舍友喷香喷香的鼾声中完成了这次变。

使用IPV6上真实的互联网

这次跟妹纸没关系。

完全是怒于看不到真实的互联网了。

首先你得有改hosts的经历(没有,就没必要向下看本文了),用思维导图阐述下(形容词和第一招的形容词一样多,原谅我小学没学那么多成语吧)第二招。

2. 不改hosts,上部分IPV6的网站

这个只能上部分网站,有兴趣的可以参考,内涵的给了一份IPV6的hosts

3. Goagent使用IPV6 GAE

3.1 GAE

GAE主页地址:http://appengine.google.com/

详细参考:https://developers.google.com/appengine/docs/**

GAE 英文全称为 Google App Engine。Google管理的数据中心中用于WEB应用程序的开发和托管的平台。2008年4月发布第一个测试版本。目前支持python、java与go语言开发。全球已有数十万的开发者在其上开发了众多的应用。GAE也是Google云计算的一部分,是一个互联网应用服务引擎,开发人员可以使用GAE的API开发互联网应用,而带宽、主机全都不用担心,Google都提供给你了。数据库是google专有的数据库,数据库和空间可以免费使用1G,每月500万次PV,对于一般的应用应该足够了。

3.2 Goagent项目

(希望你能用上1的办法)

Goagent是使用Python编写的网络软件,可以运行在Windows/Mac/Linux/Android/iTouch/iPhone/iPad/webOS/OpenWRT/Maemo上。

PC Goagent项目主页:https://code.google.com/p/goagent/

https://github.com/goagent/goagent

Android上Goagent项目主页:https://code.google.com/p/gaeproxy/

Goagent共有三种部署方式,其中一种部署方式即为部署在GAE上,另外两种为部署在php空间、python方式(PAAS)。最新版的Goagent GAE的fetch是用go语言(猜测)开发的,稍旧的版本使用python开发。

Goagent原理图:

先叙述下原理:

1、浏览器发出正常的http请求(包含IPV4的也有IPV6的),由于没有IPV4的流量,这个自然不能走正常的网络

2、请求主机(本地)Goagent客户端封装正常http请求数据,我想的办法就在这步。稍后细说。

3、运行于GAE的中转调用UlrFetchService提取数据,并访问目标网站。

4、运行于GAE的中转对请求后的数据进行封装,返回请求主机

5、请求主机(本地)Goagent客户端解包,提取数据,回复浏览器请求

我想的办法是在第1、2步动动手脚。

需要将正常的IPv4 http请求由Goagent通过IPV6的GAE封装,然后返回回复数据,浏览器解析。

需要关心三步:

1、需要能够访问IPV6的GAE,这要求hosts修改为IPv6的google hosts,1中的hosts用上了。

2、需要有可使用的GAE Appid:这个简单,搭建GAE使用goagent不是本文叙述的目的(可参考此http://ishare.cn.ms/archives/181

3、确保Goagent走的是IPV6的google。对于上面的1、2步已经解决了,第3步是关键。

看下Goagent中local目录下proxy.ini的配置文件各字段含义:

第3步的解决办法:

[1] 因为IPV4访问已挂,只能靠IPv6的Google了,使主机可以访问IPv6 google。

修改Windows的hosts:

Win+R notepad drivers\etc\hosts 粘贴1中的hosts。

修改linux下的hosts:

su –c “ vim /etc/hosts” 粘贴1中的hosts。

或者直接hg clone XXX(你懂得)

[2] 修改proxy.ini的gae数据段的profile,将其修改为

profile = google_ipv6

好了,现在走IPv6 GAE的Goagent搭建好了,浏览器怎么访问呢?

方法还在这里:http://ishare.cn.ms/archives/181(设为全局代理就行了)

4. Goagent使用IPV6的php空间

这个原理与Goagent使用GAE搭建代理类似:只不过将数据抓取的中转端放在了php空间中,用了curl函数去抓取目标服务器数据。

1、 首先得有个php空间,支持IPv4就行(废话)

2、 使用cloudflaer CDN加速ipv4 php空间,开启空间的IPV6访问

3、 搭建Goagent的php代理

4.1 获取IPv4 php空间与域名申请

关于php主机空间选择这点,穷人遵循免费的原则(虽然俺有个付费的主机空间,可不是用来折腾这个的)。我选择1freehosting的免费主机空间与tk免费域名。先说下1freehosting的免费主机空间(http://1freehosting.com),这个空间的详细信息(探针发回的信息):

Goagent的php代理方式对于php空间是有要求的:

1、 支持curl模块或者allow_url_fopen打开

2、 支持zlib压缩模块

3、 php空间不能有广告

从上面的探针返回的信息看到前两条1freehosting的主机空间是符合要求的,对于第3条的支持情况稍后谈到。Goagent从1.8.4版本以后逐渐去掉了探针php。

主机空间鼓捣好了,tk的域名申请也很简单,去tk主页http://www.dot.tk/zh/index.html注册,申请一个免费的域名,绑定到1freehosting空间就行了,这样IPV4的php空间搞定了。

如果上面不明白参考此:http://ishare.cn.ms/archives/703

4.2 获取IPv6 php空间

需要将IPV4的php空间分配一个IPV6的地址,这个就要靠CDN了,采用的是cloudflare CDN(希望大家不要过多使用这样优秀的免费资源,为了国内一大批博客的生存,希望大家节省使用)。

先介绍下cloudflare CDN加速服务:cloudflare免费DNS的CDN节点主要分布于荷兰、美国、香港、法国、日本等国家和地区,但是cloudflare在亚太地区的CDN节点却大大可以加速你在美国或者欧洲的主机访问速度。CloudFlare已经将路由调整到了香港或者日本,并且不断增加在亚洲增加服务器分布,来优化调整针对亚洲客户的访问。

使用cloudflare CDN加速主机空间的访问与开通主机空间的IPV6访问,主要有这几步:

1、 首先注册cloudflare CDN

2、 接着填写自己要加速的域名(例子是korlj.tk):如下图

接下来Cloudflare CDN会检查你的域名是否有效(大概1 min),如果有效,contitue setup。

3、 接下来cloudflare会列出域名真正的A记录 MX记录 CNAME记录,这个是核实的,不用管,“I’ve added all missing records,continue”;

4、 选择是否采用免费的,这个自愿吧,你想散点财,我没意见。免费的就够用了。Continue

5、 好了,最后一步,cloudflare CDN为你的域名做了最优的DNS服务器的选择:

http://korlj.tk 原来默认使用TK提供的DNS解析服务:ns01/2.dot.tk那两个,使用cloudflare CDN后使用lady/seth.ns.cloudflare.com

6、 继续设置空间的IPv6的访问,点击 上步

会看到这样:

发现korlj.tk的域名还没有被加入 free plan,这是因为还没有在域名提供商那里修改为cloudflare CDN的NS所致,没关系,先设置IPv6的访问,稍后去TK那里设置。点击第一行右侧的齿轮(设置),选择第二项:

7、 会看到如下图:

将Automatic IPv6右off选择为full即可。如果选为safe,需要在域名为ipv6.korlj.tk才使用IPv6访问空间。Cloudflare CDN这边就设置完了,接下来将cloudflare分配的两个优化后的NS添加到我的域名

8、 添加cloudflare CDN第三方DNS解析服务到我的域名下

Save Changes,OK

9、大概10多分钟就可以了,可以试着ping下刚才的域名(我ping之前我已经添加至Cloudflare CDN下的一个域名):

可看到已经是IPv6了,原来的IPv4是这样的:

以上的IP地址都是cloudflare CDN提供的,下面这个更清晰:

这样有个缺点就是如果你的主机空间原来是独立IP的,这样独立IP的优势就失去了(这也是不拿我的付费空间做试验的原因)

现在已经有了IPv6的php空间,这样的空间你在没有DX校园网流量的情况下也是可以访问的。

4.3 Goagent 使用IPv6 php空间

首先使用FTP工具(Filezilla lftp都行)上传goagent/sever/php目录下的index.php至主机空间目录,这个一般是public-html之类的(如果与主机空间提供的冲突,可以改名:比如goagent.php),也可以上传到自己建立的目录,只要在配置文件中写到index.php(你修改后的名字)所在路径即可,比如XXX.tk/mygoagent/goagent.php,这样也能解除广告的困扰,解决了上面的第3条的限制。上传之后,试着访问那个页面,成功时默认跳转到google主页。

下面配置Goagent本地的客户端使之采用php空间提供代理,修改proxy.ini的配置文件,如下修改:

图中的index.php即为刚上传的那个php。

好了,现在打开goagent,会看到已经启用fetchsever,设置浏览器的全局代理为127.0.0.1:8080就可以了。

经过我的实验,访问一些网站还是比较快的,真实的互联网就在你的面前!

这种方法速度上优于上种方法。

5. APJP使用IPv6 php空间

5.1 APJP项目

Google code:https://code.google.com/p/apjp/

Github:https://github.com/jvansteirteghem/apjp

Google code Wiki: https://code.google.com/p/apjp/wiki/AboutAPJP

APJP提供的使用平台还是比较广泛的,原理与Goagent类似。有些时候,访问一些网站需要使用代理,而APJP是一项开源代理项目,是非常适合个人使用自建代理工具。APJP分为两个部分,LOCAL(客户端)和REMOTE(服务器端),其中LOCAL部分由Java语言编写,REMOTE则分别用PHP, Java, Python, Ruby等语言编写以适应不同的平台,LOCAL部分是一个本地代理,通过和远端服务器部分连接,以RC4 128bit 加密通讯,达到一个比较完整的代理方案。

5.2 IPV6 php空间的获取

与上面Goagent获取IPv6php空间的方式一致,略去。

5.3 使用APJP建立IPv6 php空间代理

主要提供的平台与安装办法google code wiki写的已经比较详细了:

这里强调下,最新APJP安装注意事项,

1、 只要在APJP_REMOTE_PHP目录中的index.php填写key就可以了,上传整个APJP_REMOTE_PHP目录下的所有文件

2、 目前APJP支持添加10台主机,填写APJP_LOCAL/APJP.properties时,

APJP_REMOTE_HTTP_SERVER_1_REQUEST_URL时,填写到HTTP目录即可,比如APJP_REMOTE_PHP目录下文件上传在/public-html/myapjp路径下,则填写

APJP_REMOTE_HTTP_SERVER_1_REQUEST_URL = xxx.tk/myapjp/APJP/HTTP

就可以了,HTTPS与之类似。

3、 如果是在Linux下运行APJP_LOCAL.sh,请将脚本修改如下:

#!/bin/sh

java -classpath APJP_LOCAL_JAVA-1.0.0.jar APJP/Main

并且我迫切希望你重新保存或者建立脚本写入以上内容,以保存成*inx文本行结尾符,因为原作者脚本的行结尾符是DOS下的…-_-||,这点我已经在github fork这个项目并修改了此。

APJP项目相对Goagent使用php空间作为代理,安全性会提高很多。

6. 自己搭建简单的IPV6 代理网站

6.1 申请IPv6 主机空间

关于IPv6主机空间的申请以上已经说过,略去

6.2 使用knproxy

knproxy:http://sourceforge.net/projects/knproxy/

完整方案:http://sourceforge.net/projects/level5/

1、 Knproxy简介

KnProxy是一系列基于PHP和cURL模块的网页版代理系统。它的主要目标就是:

1)方便架设:只需上传即可使用

2)要求低:免费空间就能用,无成本架设

3)扩展性好:有问题更新很方便,整合到自己的项目里也很方便

2、 使用方法

上传knproxy至你的目录即可,打开浏览器至knproxy目录下就可以了,马上会看到效果。

由于空间使用IPv6 所以没有校园网流量时,这种方法访问外网是最简单的,也是最有效的。

7. IPv6代理软件 IPv6代理网站

这一类比较多,各位自行Google,IPv6代理网站推荐以下几个:

StudioProxy代理:http://ipv6.studioproxy.com

yegle’s glype代理 http://yegle.net/glype/index.php

sixxs.org代理: http://www.sixxs.net/tools/gateway/ sixxs.org同时提供ipv6 to ipv4和ipv4 to ipv6,也可以直接在网址后面加上 .sixxs.org来使用IPV6浏览目标网站。

8. 关于“代理”后记

有人会询问如何使用IPv6代理上QQ之类的,这种软件存在,不过博主尊重该软件原作者的意愿,不在此说了。以上Goagent是无法提供QQ代理的,我已测试,其他几个像APJP我没有测试。

本来没有心思做这个的,可是被DX校园网搞的没流量了。。。再次向DX XXX处表示“我能说脏话吗?”式的感谢!

9. Nan Kor与病魔作斗争的故事

说来惭愧,这里写的内容都是博主顶着肺炎的折磨做完的。

治肺炎,DX的校医院黑的我就不说了,浪费博主200大洋,给博主输了三天液,病还没有好,更别说护士扎针把我的左手两处都扎肿了…这也不能完全怪护士,我左手背面能看到的也就6、7条静脉血管……(我想大家都一样…)偏偏输液时我右手又要拿着Kindle Touch看书,只能三天的三针都让扎左手了(这点表示下对lxj关心的感谢)。

我当时看的书是高铭的《天才在左 疯子在右》,有空写下书评,觉得书的内容实在太符合我这伪精神病了……(感谢下wmd对我能够看完该书的影响)

现在揉着我的左手还是肿的… 尼玛!!!

最后感谢师兄chch,师姐lby,感谢同学wgf,是他们提供了拥有IPV6的校园网让我试验,我所在实验室网络没有IPv6环境,囧!!!

Nan Kor

Aug 27

坚持原创技术分享,您的支持将鼓励我继续创作!
0%