?
目錄
?
一、什么是HTTP
二、抓包工具
三、請求的首行 URL
四、URL的各部分詳細介紹
一、什么是HTTP
現(xiàn)在網(wǎng)頁上,我們常見的是https,但是在二十年前是以http為主,這個協(xié)議也叫超文本傳輸協(xié)議,文本->字符串,“超文本”->圖片/視頻
HTTP響應(yīng):比如搜狗版的HTML,這個響應(yīng)的內(nèi)容,往往是一個html內(nèi)容
一個網(wǎng)站分為前端+后端(太多了,說不過來)
前端:html(描述網(wǎng)頁的結(jié)構(gòu)),css(描述網(wǎng)頁的樣式),js(網(wǎng)頁的行為,與用戶的交互)vue esc就不說了
網(wǎng)頁上HTML,css,js都是在瀏覽器執(zhí)行的,都是訪問服務(wù)器的時候,從服務(wù)器下載到瀏覽器上,然后才能顯示運行。其他的程序都是要先安裝,才能夠使用,網(wǎng)頁是隨時用隨時下載。網(wǎng)頁優(yōu)勢:服務(wù)器隨時更新,用戶就可以用上新版本
劣勢:性能比較有限,很難去有一些復(fù)雜操作。
二、抓包工具
抓包工具是一種代理:但是代理不僅僅是抓包工具,還有很多體現(xiàn)形式。
代理客戶端的叫正向代理
代理服務(wù)器的叫反向代理
抓包的工具有很多:wireshark(功能很豐富,但是卻很復(fù)雜)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?fiddler抓包工具(足以應(yīng)對大部分場景,而且簡單方便,但是功能比上面少點,但是夠用)
1.直接搜索后安裝
有驗證碼,為啥有復(fù)雜的驗證碼,互聯(lián)網(wǎng)上80%帶寬是被爬蟲消耗的。
2.使用
左側(cè),當前機器上有哪些http數(shù)據(jù)報交互(不僅能抓瀏覽器,而且能抓到所有程序)
電腦程序在后臺和服務(wù)器悄悄的交互(有的為了實現(xiàn)某種功能,有的偷拿你隱私)
右上角是請求的詳情
右下角是響應(yīng)的內(nèi)容
剛好裝完fidder之后,默認只能抓到http的數(shù)據(jù),抓到了https,抓不到https(網(wǎng)絡(luò)上httsp是主流)所以需要稍微設(shè)置一下,讓fiddler可以抓到https。
1.點擊tools->options->https勾上提示框(意思勾選有風險,一路yes)https是加密的,要顯示,先解密,要信任保證書。
開了fidder,客戶端服務(wù)器http,https的請求和響應(yīng)都會在fidder過一遍(但有一些東西會影響fidder正確運行)
1.https要勾選正確
2.有的代理程序可能和fiddler沖突,確保使用fiddler的時候關(guān)閉其他代理。
3.有的瀏覽器插件,也可能和fiddler沖突
這個是抓去搜狗主頁交互過程,上面這些標簽頁,站在不同視角來解析請求和響應(yīng),HTTP是文本協(xié)議,IP,TCP ,UDP二進制協(xié)議
HTTP加密后是二進制,但是我們勾選完畢就恢復(fù)成文本了。在這里我們點擊row打開響應(yīng),當前http響應(yīng),經(jīng)常會進行壓縮(節(jié)省帶寬)
http響應(yīng)的內(nèi)容通常是HTML,CSS,JS
這么看不太直觀,干脆這么看
GET http://www.sougou.com/HTTP 11.1. //1.首行 ······ Accept:text/html,application/xhtml //2.請求頭 //3.空行 body //4.正文
響應(yīng)報文
HTTP/1.1 200 ok. //1.首行 Connection //2.響應(yīng)頭 //3.空行 body //4正文
三、請求的首行 URL
GET https://www.sogou.com/HTTP/1.1
GET:方法
https://www.sogou.com:URL(請求,就是客戶端給服務(wù)器發(fā)起的一個數(shù)據(jù),這里要明確指出要訪問的服務(wù)器是啥,要訪問的服務(wù)器資源是什么,我們在JDBC中講過:URL是唯一資源定位符,用來描述網(wǎng)絡(luò)上的資源的)
HTTP/1.1 :版本號
RFC標準文檔,TCP,UDP,IP,HTTP等網(wǎng)絡(luò)協(xié)議,RFC標準文檔有更精準的細節(jié)內(nèi)容
http://user:pass@www.example.jp:80/dir/index.html?uid=1#ch1 (URL的完整細節(jié))
簡單來說 協(xié)議名://IP地址:端口號/路徑?querystring ->(querystring是鍵值對的數(shù)據(jù),k=uid這個東西,value則是uid等于的那個東西
http:協(xié)議名字(協(xié)議方案名)
user:pass@ :大部分現(xiàn)在這個地方是不用的,所以也不用多介紹
www.example.jp:可以是IP地址,也可以是域名,也可是外網(wǎng)IP(本身唯一),也可以是內(nèi)網(wǎng)(訪問局域網(wǎng)中的設(shè)備)還可以是環(huán)回IP(訪問自己)
80:服務(wù)器端口號
dir/index.html?:訪問服務(wù)器上哪個資源
uid=1:查詢字符串(訪問資源,帶上啥樣的參數(shù))
ch1:片段標識符 (不常見,主要文檔類文件)
這個東西就如同賣烤冷面
http://bhu:18/烤冷面?蔥花=正常&香菜=苦苦放&醋=必須多放
->針對訪問資源進行的補充說明,查詢字符串,是鍵值對的格式,鍵值對之間用&分隔,鍵和值之間,用&分隔,鍵與值之間,使用=分隔,查詢字符串以?開始。
實踐上,URL來說,上述的幾個部分,都是可以省略的~不是說哪個部分必須得保存,IP地址/域省略,此時相當于是訪問當前服務(wù)器的地址。
訪問B站主頁,必須帶有bilibili主頁的html這個html又回觸發(fā)一些其他的http請求,這些后續(xù)觸發(fā)的http請求,就可以省略ip,省略IP就相當于用bilibili一樣的IP。
四、URL的各部分詳細介紹
端口號其實也可以省略(常見),省略時,瀏覽器會自動加上端口(這個端口號表示的是訪問目標服務(wù)器的是哪個端口)
http:端口號80
https:端口號443
知名端口號:1-1024,都被一些常用的服務(wù)器(知名的老東西服務(wù)器瓜分了),因此一個網(wǎng)頁部署于服務(wù)器的時候,往往遵守上述規(guī)則,把http綁定到8080,https綁定到443,瀏覽器訪問你的服務(wù)器,就不必去多余指定窗口。
其實帶層次的路徑也能夠省略
https://sogou.com/
如果省略相當于訪問的是/
/稱為根目錄(目錄是一個樹形結(jié)構(gòu),根目錄,就相當于樹根一樣,服務(wù)器提供的資源,也是類似于目錄結(jié)構(gòu)一樣的,樹形結(jié)構(gòu)來組織的,有樹,那么就會有樹根,/就是樹根->通常根節(jié)點就會對立服務(wù)器的對應(yīng)主頁(約定的規(guī)則)
查詢字符串也可以沒有(有和沒有是看我們后端程序員們決定的)
query string中帶有一些特殊符號,這些特殊符號,可能在url本身就有一定含義,就導(dǎo)致瀏覽器/服務(wù)器解析失?。。ㄔ赾++中+就屬于特殊符號,+是%2B,假如加號不去切換,就可能導(dǎo)致瀏覽器/服務(wù)器解析失敗
/,?,&,=,#同理,都要轉(zhuǎn)換,url的encode的本質(zhì)轉(zhuǎn)義字符(和我們的/n還不一樣這種有自己的規(guī)則)
如:c++你好
把轉(zhuǎn)換的內(nèi)容的二進制的每字節(jié),都用十六進制表示出來,然后每字節(jié)前面加一個%
你:十六進制是:E4BDA0
好:十六進制是:E5A5BD
最后會C%2B%2B%E4%BD%A0%E5%A5%BD文章來源:http://www.zghlxwxcb.cn/news/detail-716110.html
經(jīng)過URL的encode之后,此時querystring就不會出現(xiàn)特殊含義的符號,瀏覽器和服務(wù)器才可以正常識別~文章來源地址http://www.zghlxwxcb.cn/news/detail-716110.html
到了這里,關(guān)于HTTP初識,fiddler的使用,URL各部分介紹,QueryString的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!