Mac下翻_牆的問題
話說GFW屏蔽谷歌已經有一陣子了,最近打算在Mac系統下折騰個Android應用,備好了IDE,只欠SDK,無奈下載時因為GFW的緣故,總是失敗,我心痛哉!
由於本人偏愛Mac系統,於是便開始折騰Mac下的翻_牆問題,試過Break Wall,魚擺擺,GoAgent,居然沒有一個好用的!在公司辦公的時候使用的都是Windows系統,需要翻_牆的時候,我都用自(he)由(xie)門這個東東,簡單好使,實乃翻_牆神器也,可惜沒有Mac的版本,這可咋整??????(博客園居然屏蔽\自\由\門這個關鍵字,⊙﹏⊙b汗)
家里2台電腦,一台Mac,一台Windows(我的游戲機),心想,要不Windows翻_牆,然后Mac接入Windows進行翻_牆不就行了。
於是,趕緊打開了Windows下的自(he)由(xie)門:
自(he)由(xie)門在本地開通了8580用作代理翻_牆端口,通過telnet 192.168.1.240 8580測試我windows的端口情況,發現不通,看了自(he)由(xie)門留了一手,監聽ip是127.0.0.1,也就是只能通過127.0.0.1:8580去使用端口。
看來Mac直接訪問Windows的自(he)由(xie)門代理是不行了。
開發Socket代理,解決Mac不能訪問Windows自(he)由(xie)門代理的問題
心想,既然你自(he)由(xie)門只能通過127.0.0.1訪問,那我何不開發個socket代理,對外開放一個端口,然后將端口的數據直接轉發到8580上,這樣應該就能解決Mac不能訪問Windows自(he)由(xie)門代理的問題了。
嗯,思路不錯,那就開搞一個吧,大晚上的時間有限,我就簡單的用Nodejs開發了一個socket代理程序,話說用Nodejs開發網絡應用這是超爽啊,socket代理代碼如下:
var net = require('net'); var server = net.createServer(function(c) { //'connection' listener console.log(c.remoteAddress); // 暫停socket的數據處理 c.pause(); var client = net.connect({host:'127.0.0.1', port: 8580}, function() { //'connect' listener // 連上自(he)由(xie)門代理了,可以去處理socket數據了 c.resume(); console.log('connected to proxy'); }); // 將過來的數據發給自(he)由(xie)門,然后將自(he)由(xie)門回過來的數據,原封不動的轉發出去 c.pipe(client); }); server.listen(8124, function() { //'listening' listener console.log('server bound'); }); process.on('uncaughtException', function(err) { console.log('Caught exception: ' + err); });
Socket代理的運行效果如下:
Mac下配置http代理,訪問Windows的自(he)由(xie)門,進行翻_牆
進入Mac,打開Android Sdk Manager,系統菜單中選擇,Preferences,如下如:
然后設置Http代理服務器和端口信息,如下如:
注意:上面的192.168.1.240就是我的Windows電腦的ip,8124端口是socket代理的端口哦,它負責把Mac過來的http請求直接丟給自(he)由(xie)門,這樣就可以翻_牆下載了。
最終解決了Mac下Android SDK下載失敗的問題
看看下載效果吧:
嗯,搞定android sdk了,關機,睡覺覺!