http-https代理服务器的代码实现
title: http/https代理服務(wù)器的代碼實(shí)現(xiàn)
date: 2019-12-22 16:57:42
dscription: 代碼實(shí)現(xiàn)一個(gè)http/https代理服務(wù)器的代碼實(shí)現(xiàn)
原文地址https://tomsworkspace.github.io/2019/12/22/http-https代理服務(wù)器的代碼實(shí)現(xiàn)/
http/https代理服務(wù)器的代碼實(shí)現(xiàn)
代理服務(wù)器工作原理
?代理服務(wù)器作為一種既是服務(wù)器又是客戶機(jī)的中間程序,主要用于轉(zhuǎn)發(fā)客戶系統(tǒng)的網(wǎng)絡(luò)訪問(wèn)請(qǐng)求。但是,代理服務(wù)器不只是簡(jiǎn)單地向真正的因特網(wǎng)服務(wù)器轉(zhuǎn)發(fā)請(qǐng)求,它還可以控制用戶的行為,對(duì)接收到的客戶請(qǐng)求進(jìn)行決策,并根據(jù)過(guò)濾規(guī)則對(duì)用戶請(qǐng)求進(jìn)行過(guò)濾。
?通過(guò)代理服務(wù)器,網(wǎng)絡(luò)管理員可以實(shí)現(xiàn)比用包過(guò)濾路由器更嚴(yán)格的安全策略。不同于使用通用的包過(guò)濾路由器來(lái)管理通過(guò)防火墻的因特網(wǎng)服務(wù)流向,代理服務(wù)器通過(guò)在網(wǎng)關(guān)上為每項(xiàng)需要的應(yīng)用安裝專用的代碼(代理服務(wù))來(lái)工作。如果網(wǎng)絡(luò)管理員沒(méi)有為某一特殊服務(wù)安裝代理服務(wù)代碼,該服務(wù)就不會(huì)被支持,也不會(huì)通過(guò)防火墻轉(zhuǎn)發(fā)相應(yīng)的客戶請(qǐng)求。并且,這種代理服務(wù)器碼能被配置成僅支持某項(xiàng)服務(wù)的網(wǎng)絡(luò)管理員認(rèn)為可以接受的那部分特征,而不支持其他的特征。
代理服務(wù)器主要功能
?代理服務(wù)器具有許多功能。對(duì)于我們個(gè)人用戶而言,通過(guò)代理上網(wǎng),能讓我們?cè)L問(wèn)一些直接訪問(wèn)會(huì)比較慢的網(wǎng)站,比如互聯(lián)網(wǎng)用戶訪問(wèn)教育網(wǎng)的網(wǎng)站。對(duì)于單位而言,內(nèi)部使用代理可以預(yù)先過(guò)濾一些病毒,保障上網(wǎng)的安全,還能有效地進(jìn)行訪問(wèn)控制、網(wǎng)速限制,上網(wǎng)監(jiān)控等等。
?以下介紹代理服務(wù)器的基本功能:
(1)一個(gè)lP地址或Internet帳戶供多個(gè)用戶同時(shí)使用
?在目前情況下,IP地址是Internet中有限的寶貴資源,如果將這些IP地址僅僅用于單個(gè)的請(qǐng)求Internet訪問(wèn)的用戶,不能不說(shuō)是一種資源浪費(fèi)。使用代理服務(wù)器可以做到通過(guò)一個(gè)IP同時(shí)向多個(gè)用戶提供Internet的訪問(wèn),對(duì)于通過(guò)電話撥號(hào)連通Internet的內(nèi)部網(wǎng)絡(luò),則可以實(shí)現(xiàn)利用一條電話線,一個(gè)modem和一個(gè)Internet帳戶,讓內(nèi)部網(wǎng)絡(luò)上所有用戶同時(shí)訪問(wèn)Internet,這樣就充分利用了IP地址資源。
(2)緩存功能,可以降低費(fèi)用,提高速度
?安裝時(shí),代理服務(wù)器會(huì)在硬盤上開(kāi)出一塊磁盤空間作為緩存區(qū),將代理用戶從Internet上接收的內(nèi)容下載一份保存起來(lái),當(dāng)再有用戶訪問(wèn)同樣內(nèi)容時(shí),就直接從緩存區(qū)傳送給用戶,而不再?gòu)腎nternet上尋找。代理服務(wù)器的這項(xiàng)功能可以大大地提高訪問(wèn)速度,同時(shí)也降低了通信費(fèi)用,是一項(xiàng)相當(dāng)重要的功能。
(3)對(duì)內(nèi)部網(wǎng)絡(luò)用戶進(jìn)行權(quán)限和信息流量計(jì)費(fèi)管理
?通過(guò)代理服務(wù)器,網(wǎng)管員在提供Internet服務(wù)時(shí),可以容易地對(duì)內(nèi)部網(wǎng)絡(luò)用戶進(jìn)行訪問(wèn)權(quán)限和信息流量計(jì)費(fèi)的管理。網(wǎng)管員不但能夠做到只允許被授權(quán)的局域網(wǎng)用戶訪問(wèn)Internet,還能夠控制這些用戶在哪些時(shí)間、使用哪臺(tái)計(jì)算機(jī)訪問(wèn)哪些類型的Internet服務(wù)。對(duì)于已經(jīng)獲準(zhǔn)訪問(wèn)的Internet的用戶,網(wǎng)管員還能夠按照多種方式進(jìn)行信息流量的計(jì)費(fèi)管理,如:按照個(gè)人計(jì)費(fèi)、按照部門所屬計(jì)算機(jī)計(jì)費(fèi)等,為網(wǎng)絡(luò)管理帶來(lái)了極大的方便。
(4)對(duì)進(jìn)入內(nèi)部網(wǎng)絡(luò)的Internet信息實(shí)施監(jiān)控和過(guò)濾
?為了避免那些與業(yè)務(wù)無(wú)關(guān)的信息進(jìn)入內(nèi)部網(wǎng)絡(luò)浪費(fèi)通信資費(fèi),各個(gè)機(jī)構(gòu)對(duì)允許訪問(wèn)的內(nèi)容往往有一些相應(yīng)的規(guī)定。通過(guò)代理服務(wù)器,網(wǎng)管員不但可以采取過(guò)濾的方法簡(jiǎn)便地控制從Internet流入內(nèi)部網(wǎng)絡(luò)的信息內(nèi)容,還能對(duì)用戶訪問(wèn)Internet的情況進(jìn)行實(shí)時(shí)監(jiān)控和建立監(jiān)查日志存檔備查。
實(shí)現(xiàn)功能:
服務(wù)器端
?(1)在指定端口(例如 9080)接收來(lái)自客戶的 http/https 請(qǐng)求并且根據(jù)其中的 URL 地址訪問(wèn)該地址所指向的 http/https 服務(wù)器(原服務(wù)器),接收服務(wù)器的響應(yīng)報(bào)文,并將響應(yīng)報(bào)文轉(zhuǎn)發(fā)給對(duì)應(yīng)的客戶進(jìn)行瀏覽。
?(2)支持日志功能,可以將用戶的訪問(wèn)目標(biāo)和內(nèi)容記錄到指定的文件。
?(3)網(wǎng)站過(guò)濾:允許/不允許重點(diǎn)內(nèi)容訪問(wèn)某些網(wǎng)站
?(4)多級(jí)代理功能,可以指定上級(jí)代理服務(wù)器實(shí)現(xiàn)多級(jí)代理
客戶端
?實(shí)現(xiàn)設(shè)置IE代理的GUI界面
實(shí)現(xiàn)步驟
(1)客戶端界面通過(guò)修改注冊(cè)表實(shí)現(xiàn)代理設(shè)置
(2)代理服務(wù)器主線程等待客戶端連接。
(3)代理服務(wù)器接收客戶端發(fā)送的 TCP 請(qǐng)求報(bào)文,建立線程處理并解析 HTTP 頭部(method, url, host 等信息)。
(4)在建立的線程中建立服務(wù)器到目標(biāo)地址的socket連接。
(5)開(kāi)啟兩個(gè)線程來(lái)處理上行和下行的流量,只負(fù)責(zé)單純的轉(zhuǎn)發(fā)。
(6)客戶端(即瀏覽器)收到代理服務(wù)器返回的報(bào)文,解析并顯示。
代碼
idea java項(xiàng)目
總結(jié)
以上是生活随笔為你收集整理的http-https代理服务器的代码实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 直接用TXT文档写HTML编码出现中文乱
- 下一篇: 海康威视实习(已完结)