8 行 Node.js 代碼實現Proxy 伺服器

來源:互聯網
上載者:User

標籤:node.js   Proxy 伺服器   google 代理   

接觸 Node.js 已有多年,一直喜歡它的單執行緒模式和非同步IO特性,以及 JavaScript 語言本身的靈活性。同時,JavaScript 前後端通吃,在全棧開發領域具有獨特的優勢。今天就來看看作為服務端語言的 JavaScript,完成一個簡單的Proxy 伺服器功能是多麼容易。

簡單地說,Proxy 伺服器就是代理使用者訪問目標網站的中繼伺服器。作為前端開發人員,代理的常見用途是跨域訪問後台 API。當然,還可以用來科學上網。今天要分享的代碼,就是跟科學上網有關。

話不多說,先上 code:

var express = require(‘express‘);var request = require(‘request‘);var app = express();app.use(‘/‘, function(req, res) {    var url = ‘https://www.baidu.com/‘ + req.url;    req.pipe(request(url)).pipe(res);});app.listen(process.env.PORT || 3000);

不到 10 行的代碼,就實現了簡單的Proxy 伺服器功能。是不是很神奇?
熟悉 Node.js 的話應該很容易看明白這幾行代碼。首先載入 express 模組,這個是建立 HTTP 伺服器的一個流行架構。然後是 request,它封裝了 HTTP 要求的各種方法,讓發起請求變得非常容易。接下來執行個體化一個 express 對象,設定訪問路由。最後監聽 3000 連接埠。
先看效果。儲存上述代碼到檔案 proxy.js,在檔案所在路徑執行:

node proxy.js

用瀏覽器開啟http://localhost:3000/

650) this.width=650;" src="http://upload-images.jianshu.io/upload_images/1618526-2dd2c3b1dfdffc68.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" class="imagebubble-image" style="height:auto;vertical-align:middle;border:0px;" alt="1240" />

HTTP 代理

關鍵代碼在路由處理方法內。

req.pipe(request(url)).pipe(res);

這個 pipe 方法很神奇,正如它的名字(管道)一樣,它把瀏覽器的請求資料傳給 request 用戶端,然後將目標伺服器的響應資料傳回瀏覽器。這代碼太TM簡潔了!
那麼,怎麼實現科學上網呢?對,把代碼放到沒有網路封鎖的伺服器上運行,就OK了。比如,這個 任度搜 www.rendoso.com 背後就是 Google 代理。


本文出自 “空引” 部落格,請務必保留此出處http://kayson.blog.51cto.com/2514189/1879952

8 行 Node.js 代碼實現Proxy 伺服器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.