閱讀850 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Socket使用Linux SSH代理發送數據

Socket使用Linux SSH代理發送數據


寫這篇文章是為了解決項目開發中,在處理第三方接口時,在本地開發調試的問題。


場景:

某應用需要調用發送短信接口發送短信(或調用其他第三方接口),但是這些接口都有服務器IP鑒權,隻允許從局方提供的服務器上才能調用。

需求:

接入第三方接口需要一個開發和反複調試的過程,每次將寫好的程序上傳到服務器上測試很是麻煩,看日誌和斷點調試又都不方便,現在需要讓第三方接口把自己電腦認作是服務器,這樣就方便開發調試了。

前提條件:

服務器要可以進行SSH連接,但又沒有VPN(因為有VPN就沒有這些問題了,撥進去就直接可以)


一、做如下準備:

1、一台可以通過Intenet進行ssh連接的linux服務器

     我們假設服務器IP地址為202.102.110.110,ssh端口22,登錄賬號root,登錄密碼123456

2、一個有IP地址鑒權,隻允許該服務器訪問的第三方接口

     我們假設這個接口為一個Socket接口,接口IP地址為202.102.119.119,端口為8080

3、ssh代理軟件

     myentunnel,下載地址:https://ishare.iask.sina.com.cn/f/23849533.html?from=like,如果該連接不可以下載,百度一下即可,有很多資源。

4、firefox瀏覽器

     非必須,下麵也會寫一下firefox瀏覽器的代理配置,網上購買ssh賬號就可以訪問 facebook 這樣的網站了。


二、配置ssh代理軟件

1、運行myentunnel.exe,如圖:

打開顯示配置界麵,如圖:



2、配置SSH登錄參數

輸入服務器IP地址202.102.110.110、登陸賬號、密碼,這裏我們設置本地代理端口為7070,後麵需要用到。

點擊保存——>連接,我們可以隱藏窗口,需要打開界麵在電腦右下角可以找到。


三、Socket 連接使用代理像第三方接口發送數據

1、常規 Socket 連接代碼如下:

  1. Socket socket = new Socket("202.102.119.119",8080);  
  2. socket.setSoTimeout(60000);  
  3. //……  

2、使用代理連接發送數據代碼如下:
  1. Socket socket = new Socket(new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("127.0.0.1",7070)));//本地代理端口為7070  
  2. socket.connect(new InetSocketAddress("202.102.119.119",8080));  
  3. socket.setSoTimeout(60000);  
  4. //……  

這樣以來,第三方接口鑒權IP獲取的IP地址就是我們的服務器IP地址(202.102.110.110),而不會是我們自己電腦的IP地址了。


四、配置 firefox 瀏覽器使用socks5 代理

1、訪問 https://www.ip138.com/ 可以查看我們的IP地址,下圖是我的IP地址:


2、打開 firefox 瀏覽器,在地址欄輸入about:config,搜索 remote ,設置 network.proxy.socks_remote_dns 的值為true,雙擊可以切換false和true。


3、點擊瀏覽器上麵菜單欄中的工具->高級->網絡->設置->手動配置代理->輸入socks主機為127.0.0.1,端口為7070 ->確定完成


此時再打開https://www.ip138.com/ 網站查看IP地址就變成服務器的IP地址了 202.102.110.110


PS:如果需要經常上一些國外的網站,像開始提到的 facebook,可以在網上買一個ssh代理服務器賬號,使用上麵的方法即可訪問。

最後更新:2017-04-02 17:51:24

  上一篇:go 我的作品《iPhone與iPad開發實戰—iOS經典應用剖析》--以及源碼下載地址
  下一篇:go android UI進階之仿iphone的tab效果