1.簡(jiǎn)介
在App開發(fā)的過程當(dāng)中,抓包是一個(gè)很常見的需求,而有些app的請(qǐng)求不會(huì)在網(wǎng)絡(luò)設(shè)置代理時(shí)被抓到數(shù)據(jù)包,這里若是需要抓包就需要搭建反向代理。
2.什么是代理?
什么是代理,來一張圖了解一下。
?
代理又分為正向代理和反向代理。
3.什么是正向代理?
先來看張圖~
【再舉個(gè)栗子】
某同學(xué)喜歡面向搜索引擎編程,想通過 百度 搜索引擎查找一些學(xué)習(xí)資料,但是有些網(wǎng)站直接訪問可能不太安全,會(huì)暴露自己的IP,同學(xué)比較苦惱,想著怎樣才能使用百度 搜索自己想要的學(xué)習(xí)資料,又不會(huì)暴露自己的IP在網(wǎng)站上呢?
這時(shí)我告訴該同學(xué),我呢手上剛好有一臺(tái)代理服務(wù)器,這臺(tái)代理服務(wù)器通過nginx配置了正向代理轉(zhuǎn)發(fā)http和https請(qǐng)求,你呢,只需要在自己的Windows本地電腦的網(wǎng)關(guān)配置一下這臺(tái)代理服務(wù)器的IP和端口號(hào),就能正常通過代理服務(wù)器訪問到百度 并搜索相關(guān)的學(xué)習(xí)資料了,還不會(huì)暴露自己真實(shí)的IP~
4.什么是反向代理?
先來一張圖了解下~
和正向代理相應(yīng)的,正向代理代理客戶端,反向代理代理服務(wù)端。
反向代理(reverse proxy):是指以代理服務(wù)器來接受internet上的連接請(qǐng)求,然后將請(qǐng)求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給internet上請(qǐng)求連接的客戶端,此時(shí)代理服務(wù)器對(duì)外就表現(xiàn)為一個(gè)反向代理服務(wù)器。
我們?cè)谧夥孔拥倪^程中,除了有些房源需要通過中介以外,還有一些是可以直接通過房東來租的。用戶直接找到房東租房的這種情況就是我們不使用代理直接訪問國(guó)內(nèi)的網(wǎng)站的情況。
還有一種情況,就是我們以為我們接觸的是房東,其實(shí)有時(shí)候也有可能并非房主本人,有可能是他的親戚、朋友,甚至是二房東。但是我們并不知道和我們溝通的并不是真正的房東。這種幫助真正的房主租房的二房東其實(shí)就是反向代理服務(wù)器。這個(gè)過程就是反向代理。
對(duì)于常用的場(chǎng)景,就是我們?cè)赪eb開發(fā)中用到的負(fù)載均衡服務(wù)器(二房東),客戶端(租客)發(fā)送請(qǐng)求到負(fù)載均衡服務(wù)器(二房東)上,負(fù)載均衡服務(wù)器(二房東)再把請(qǐng)求轉(zhuǎn)發(fā)給一臺(tái)真正的服務(wù)器(房東)來執(zhí)行,再把執(zhí)行結(jié)果返回給客戶端(租客)。
反向代理,其實(shí)是"代理服務(wù)器"代理了"目標(biāo)服務(wù)器",去和"客戶端"進(jìn)行交互。
通過反向代理服務(wù)器訪問目標(biāo)服務(wù)器時(shí),客戶端是不知道真正的目標(biāo)服務(wù)器是誰的,甚至不知道自己訪問的是一個(gè)代理。
5.正向代理和反向代理的區(qū)別
雖然正向代理服務(wù)器和反向代理服務(wù)器所處的位置都是客戶端和真實(shí)服務(wù)器之間,所做的事情也都是把客戶端的請(qǐng)求轉(zhuǎn)發(fā)給服務(wù)器,再把服務(wù)器的響應(yīng)轉(zhuǎn)發(fā)給客戶端,但是二者之間還是有一定的差異的。
1、正向代理其實(shí)是客戶端的代理,幫助客戶端訪問其無法訪問的服務(wù)器資源。反向代理則是服務(wù)器的代理,幫助服務(wù)器做負(fù)載均衡,安全防護(hù)等。
2、正向代理一般是客戶端假設(shè)的,比如在自己的機(jī)器上安裝一個(gè)代理軟件。而反向代理一般是服務(wù)器假設(shè)的,比如在自己的機(jī)器集群中部署一個(gè)反向代理服務(wù)器。
3、正向代理中,服務(wù)器不知道真正的客戶端到底是誰,以為訪問自己的就是真實(shí)的客戶端。而在反向代理中,客戶端不知道真正的服務(wù)器是誰,以為自己訪問的就是真實(shí)的服務(wù)器。
4、正向代理和反向代理的作用和目的不同。正向代理主要是用來解決訪問限制問題。而反向代理則是提供負(fù)載均衡、安全防護(hù)等作用。二者均能提高訪問速度。
6.須要準(zhǔn)備的工做
- 在本身電腦上面搭建一個(gè)可用的Charles
- 須要抓包的遠(yuǎn)端服務(wù)的端口號(hào)和Host地址
- 在本身電腦上面搭建一個(gè)本地DNS解析服務(wù)
7.具體步驟 (Windows下的操作,Mac也同理)
1.確保手機(jī)可以連接上Charles,本身電腦上面可以看到正常請(qǐng)求出來的數(shù)據(jù)包(具體抓包可以看宏哥前邊的教程)
2.打開Charles,勾選Proxy --> Reverse proxise...,進(jìn)入反向代理設(shè)置界面。如下圖所示:
3.進(jìn)入Reverse Proxies Settings(反向代理設(shè)置)頁面,勾選 Enable Reverse Proxies 。如下圖所示:
4.在【Add】新增。如下圖所示:
Edit Reverse Proxy 視圖中的選項(xiàng)含義:
local port:本地端口
本地主機(jī)上的端口創(chuàng)建反向代理。該字段可能會(huì)自動(dòng)填充一個(gè)可用的端口。如果有另一個(gè)應(yīng)用程序使用該端口,則在反向代理啟動(dòng)時(shí)將收到一條警告消息
Remote host:遠(yuǎn)程主機(jī)
作為反向代理的目的地的遠(yuǎn)程主機(jī)的主機(jī)名或IP地址
Remote port:遠(yuǎn)程端口
遠(yuǎn)程端口默認(rèn)為80,這是HTTP的默認(rèn)端口。
Rewrite redirects:重寫重定向
重定向遠(yuǎn)程服務(wù)器的響應(yīng)將被重寫與反向代理源地址相匹配,默認(rèn)為開
遠(yuǎn)程服務(wù)器的重定向響應(yīng)是完全限定的URL,即使它們?cè)谕痪W(wǎng)站內(nèi)
如果重定向到遠(yuǎn)程服務(wù)器地址,則需要將其重寫為反向代理本地地址,否則客戶端將使用重定向URL到遠(yuǎn)程主機(jī),因此不再通過反向代理連接
Preserve host in header fields:保留主機(jī)頭
Host HTTP標(biāo)頭從傳入請(qǐng)求不變地傳遞,而不是正常重寫主機(jī)頭以匹配反向代理遠(yuǎn)程主機(jī),默認(rèn)為關(guān)閉
僅當(dāng)您具有特定要求時(shí),才需要保留主機(jī)頭;普通使用的時(shí)候沒有必要使用的
Listen on a specific address:監(jiān)聽特定地址
指定本地地址以偵聽反向代理,可以啟用此選項(xiàng)并在此處輸入IP地址
8.Charles反向代理實(shí)戰(zhàn)
Charles反向代理是提供一個(gè)端口轉(zhuǎn)發(fā)的功能,用于除IE外發(fā)出的HTTP請(qǐng)求,例如需要跟蹤Smartbi服務(wù)器與XMLA服務(wù)器之間的通信、Smartbi SDK與服務(wù)器之間通信等。
宏哥在Apache服務(wù)器安裝在A計(jì)算機(jī)上,IP地址為:10.11.53.180,并開啟服務(wù),端口號(hào)為:80(默認(rèn))。然后宏哥簡(jiǎn)單部署一個(gè)HTML頁面,在瀏覽器中訪問服務(wù)。如下圖所示:
現(xiàn)移動(dòng)端訪問A服務(wù)器部署的HTML頁面出現(xiàn)錯(cuò)誤,但是需要錄制移動(dòng)端的HTTP請(qǐng)求。這時(shí)候就需要Charles的反向代理幫助我們解決這個(gè)問題。具體操作步驟如下:
1.找一臺(tái)其他計(jì)算機(jī),如計(jì)算機(jī)B,其IP地址為10.11.53.193,宏哥這里演示的就是宏哥的本地計(jì)算機(jī),如下圖所示:
2.在計(jì)算機(jī)B上安裝Charles,并啟動(dòng),這里宏哥已經(jīng)安裝就不做演示了。
3.選中charles上的"Proxy"-》"Reverse Proxies",進(jìn)入反向代理設(shè)置界面,如下圖所示:
其中 Local Port是指計(jì)算機(jī)B的一個(gè)空閑端口,如本例中使用8080;
Remote Host是指HTML頁面服務(wù)的IP,即計(jì)算機(jī)A的IP: 10.11.55.182;
Remote Port是指HTML頁面服務(wù)的端口號(hào),在本例中訪問HTML頁面的端口號(hào)為80(Apache默認(rèn)端口)
點(diǎn)擊OK保存反向代理設(shè)置,如下圖所示:
6.
7.在任意一臺(tái)計(jì)算機(jī)或者移動(dòng)端上,通過http://計(jì)算機(jī)B的IP:反向代理中設(shè)置的Loal?Port端口/inde.html,可以訪問到HTML頁面服務(wù)。本例中通過在瀏覽器或者移動(dòng)端的服務(wù)器設(shè)置上輸入http://10.11.53.193:8080/index.html訪問,如下圖所示:
注:訪問是需要寫IP,不能寫localhost。
8.在charles中會(huì)監(jiān)測(cè)到反向代理訪問,首次會(huì)彈出是否允許訪問,選擇'Allow'按鈕,允許訪問。沒有設(shè)置代理之前是訪問不到的,如下圖所示:
9.在計(jì)算機(jī)B上的charles就可以錄制到HTTP請(qǐng)求,如下圖所示:
9.小結(jié)
反向代理位于用戶和應(yīng)用服務(wù)器之間,是連接用戶和服務(wù)器的中介。
于是我們可以
1.緩存,將服務(wù)器的響應(yīng)緩存在自己的內(nèi)存中,減少服務(wù)器的壓力。
2.負(fù)載均衡,將用戶請(qǐng)求分配給多個(gè)服務(wù)器。
3.訪問控制文章來源:http://www.zghlxwxcb.cn/news/detail-424572.html
4.加上一些特殊的東西做特殊的事情(如IPS—入侵防御系統(tǒng)、web應(yīng)用防火墻等)文章來源地址http://www.zghlxwxcb.cn/news/detail-424572.html
到了這里,關(guān)于《爆肝整理》保姆級(jí)系列教程-玩轉(zhuǎn)Charles抓包神器教程(15)-Charles如何配置反向代理的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!