<listing id="fdftx"></listing>

        <address id="fdftx"></address>
        <address id="fdftx"><address id="fdftx"><nobr id="fdftx"></nobr></address></address>
        <address id="fdftx"><listing id="fdftx"><nobr id="fdftx"></nobr></listing></address>

        <address id="fdftx"><nobr id="fdftx"><meter id="fdftx"></meter></nobr></address><address id="fdftx"><th id="fdftx"><progress id="fdftx"></progress></th></address>

          [功能介紹]http代理的使用介紹

          發布時間:2020-06-20 關注熱度:°C

            http代理是很多人在咨詢IP??头臅r候,會購買的一種代理服務。那么,在這種協議之下的ip代理,是怎么工作的呢?下面我們來看看具體的介紹。

          httpip代理的使用介紹

            httpip代理的使用是怎么實現的?

           

            瀏覽器與代理進行 TCP 握手之后,發起了 CONNECT 請求,報文起始行如下:

           

            CONNECT imququ.com:443 HTTP/1.1

           

            對于 CONNECT 請求來說,只是用來讓代理創建 TCP 連接,所以只需要提供服務器域名及端口即可,并不需要具體的資源路徑。代理收到這樣的請求后,需要與服務端建立 TCP 連接,并響應給瀏覽器這樣一個 HTTP 報文:

           

            HTTP/1.1 200 Connection Established

           

            瀏覽器收到了這個響應報文,就可認為到服務端的 TCP 連接已經打通,后續直接往這個 TCP 連接寫協議數據就可以了。通過 Wireshark 的 Follow TCP Steam 功能,可以清楚地看到瀏覽器和代理之間的數據傳遞:

           

            可以看到,瀏覽器建立到服務端 TCP 連接產生的 HTTP 往返,完全是明文,這也是為什么 CONNECT 請求只需要提供域名和端口:如果發送了完整 URL、Cookie 等信息,會被中間人一覽無余,降低了 HTTPS 的安全性。HTTP 代理承載的 HTTPS 流量,應用數據要等到 TLS 握手成功之后通過 Application Data 協議傳輸,中間節點無法得知用于流量加密的 master-secret,無法解密數據。而 CONNECT 暴露的域名和端口,對于普通的 HTTPS 請求來說,中間人一樣可以拿到(IP 和端口很容易拿到,請求的域名可以通過 DNS Query 或者 TLS Client Hello 中的 Server Name Indication 拿到),所以這種方式并沒有增加不安全性。

           

            了解完原理后,再用 Node.js 實現一個支持 CONNECT 的代理也很簡單。核心代碼如下:

           

            JSvar http = require(‘http’);

           

            var net = require(‘net’);

           

            var url = require(‘url’);

           

            function connect(cReq, cSock) {

           

            var u = url.parse(‘http://’ + cReq.url);

           

            var pSock = net.connect(u.port, u.hostname, function() {

           

            cSock.write(‘HTTP/1.1 200 Connection Established ’);

           

            pSock.pipe(cSock);

           

            }).on(‘error’, function(e) {

           

            cSock.end();

           

            });

           

            cSock.pipe(pSock);

           

            }

           

            http.createServer().on(‘connect’, connect).listen(8888, ‘0.0.0.0’);

           

            以上代碼運行后,會在本地 8888 端口開啟 HTTP 代理服務,這個服務從 CONNECT 請求報文中解析出域名和端口,創建到服務端的 TCP 連接,并和 CONNECT 請求中的 TCP 連接串起來,最后再響應一個 Connection Established 響應。修改瀏覽器的 HTTP 代理為 127.0.0.1:8888 后再訪問 HTTPS 網站,代理可以正常工作。

           

            除了http代理之外,IP海還有socks代理、https代理等多種服務,用戶可以根據自己的工作要求或是使用用途來選購。

           

          版權聲明:本文為IP海(iphai.cn)原創作品,未經許可,禁止轉載!

          Copyright © www.skldkt.com. All Rights Reserved. IP海 版權所有.
          IP海僅提供中國內IP加速服務,無法跨境聯網,用戶應遵守《服務條款》內容,嚴禁用戶使用IP海從事任何違法犯罪行為。
          ICP備案鄂ICP備19030659號-3 公安備案鄂公網安備42100302000141號 計算機軟件著作權證計算機軟件著作權證 ICP/EDI許可證ICP/EDI許可證:鄂B2-20200106

          微信掃一掃咨詢
          国产福利第一页