1.簡介
我們從小接受的教育就是不要撒謊,要做一個誠實的孩子,但是在現實生活中有時候說一個善意的謊言也不是可以的。這裡由於伺服器各種安全機制的限制和校驗,因此我們不得不欺騙一下伺服器,今天巨集哥就給大家分享Jmeter之IP欺騙。
2.什麼是IP欺騙
巨集哥這裡所說的是在Jmeter使用時候IP欺騙的定義。更專業的定義和巨集哥說的是不一樣的。ip欺騙就是模擬ip。什麼意思呢,一個電腦就只有一個ip地址,當然如果有多塊網路卡的話,會有多個ip地址,一般伺服器上有個網路卡,我們們自己的電腦一般都只有一個ip地址,但是你做壓測的時候有的系統為了防止惡意刷請求,服務端會判斷每個請求過來的ip是不是同一個,如果同一個ip地址在一段時間內頻繁請求的話,就把這個ip給封了。這樣的情況下你做壓測的時候就會受到影響了,因為你的電腦就只有一個ip地址,所有的請求發過去都只是一個ip地址,這種情況下就需要用到ip欺騙了,這樣請求發過去的ip地址就不是同一個了,就能解決這樣的問題了。ip欺騙就是在這種情況下使用的。
3.ip欺騙真的有用嗎?
ip欺騙,叫ip欺騙,欺騙那就是假的。分兩種情況,一種情況下ip欺騙有用,另一種情況下,ip欺騙沒用,就只是欺騙自己罷了。
第一種情況,內網壓測:
內網壓測的話,ip欺騙是有用的,ip欺騙是在區域網裡面找一些沒有被使用過的ip地址,然後以這些ip地址發請求過去,這樣的話,服務端接收到的ip地址,都是你區域網裡面的ip,它的確是模擬了其他ip的。
第二種情況,外網壓測:
外網壓測,外網壓測的話,就是把我們們的系統部署到外網上了,所有的人都可以訪問,那這樣的話,ip欺騙模擬的ip還是區域網裡面的那些ip,你公司裡面整個網路的出口都是一樣的,比如說你們公司是聯通的網路,拉了一條網線,那麼整個公司的人,發出去的請求都是一個出口,就是這一個網線的出口出去的,就只有一個外網的ip地址了,那麼你再怎麼ip欺騙都是區域網裡面可以隨便搞,出口始終是一個,就模擬不了了,這種就是自己欺騙自己咯。
4.為什麼要偽裝和欺騙
巨集哥簡單的列舉幾點原因:
(1)由於現在絕大多數的伺服器出於安全考慮會對同一IP地址做過濾,例如:百度同一IP短時間內發出大量的請求,這個IP就會被封禁一段時間。所以如果想要達到正常的壓測效果,我們需要在發請求時偽造出不同的IP地址。
(2)我們在做壓力測試時,有這樣的場景和需求,希望模擬的批量使用者來自不同的IP地址。
首先看一下巨集哥的環境。
5.巨集哥環境
Jmeter版本:5.1.1,如下圖所示:
系統:Windows 10版本 64位系統(32位的同學自己想辦法哦),如下圖所示:
然後,跟隨巨集哥看一下大致步驟。
6.大致步驟
主要步驟分為以下3步:
第一步:在負載機上繫結IP地址。
第二步:對繫結的IP地址儲存到txt檔案中。
第三步:在jmeter測試計劃中新增配置元件 並配置IP引數。
第四步:在要欺騙的http請求中,修改Implementation為httpclient模式,修改Source Address,指定請求要用到的本地地址(引數化)。
第五步:新增察看結果樹。
最後按照大致步驟,實戰一下。
7.實戰
第一步:在負載機上繫結IP地址:
a、開始選單 -> 設定 -> 網路和Internet -> 更改介面卡選項 -> 乙太網
b、右鍵乙太網(找到你正在使用的連線有線或無線) -> 屬性,選擇Internet 協議版本4(雙擊開啟視窗),如果是採用自動獲取IP,得通過手工設定IP
c、在屬性視窗中選擇高階按鈕,選擇IP設定,點選新增,輸入新的IP地址(須要注意在區域網內不要有IP衝突,可以事先ping一下找沒有使用的IP),但子網掩碼必須一致。
說明:負載機需要是固定的IP地址
首先開啟負載機上的網路配置,將IP地址更改為固定IP ,如下圖所示:
然後點選高階項手動新增你要偽造的IP地址 ,如下圖所示:
此處新增的地址需要注意是否已被佔用,可以先ping下你要偽造的地址,如果提示無法訪問目標主機則意味著該地址未被佔用,可正常新增。
第二步:IP繫結後,你需要將剛才的IP地址記錄在一個txt文件中,以便之後的請求時引數化呼叫你偽造你的IP.。如下圖所示:
第三步:負載機上的IP繫結完成後,需要在jmeter中設定變數來呼叫 ,在jmeter測試計劃中新增配置元件 並配置IP引數。如下圖所示:
第四步:在要欺騙的http請求中,修改Implementation為httpclient模式,修改Source IP Address,指定請求要用到的本地地址(引數化)
在sample-http請求中修改Implementation為httpclient模式,Source IP Address中呼叫設定的引數(CSV Data Set config中設定的變數名字:IP),如下圖所示:
第五步:新增察看結果樹,執行Jmeter,檢視結果樹。如下圖所示:
都傻眼了吧,沒有看到請求的IP地址,那你就加一個可以顯示你IP地址的方法。巨集哥這裡新增了一個加了一個BeanShell 取樣器 內容:log.info("${ip}"),如下圖所示:
再次執行檢視,如下圖所示:
8.小結
說明:我看有的部落格說官方文件是在jmeter2.5以上的版本有此功能的實現~但是有人在以下的版本也實現了,巨集哥沒有親自操作,有興趣的小夥伴可以看一下。
我們已經實現了請求來自不同的IP地址,也就實現我們的IP欺騙的技術注意事項:
(1) 我們新增的IP地址一定是未被使用的,這部分需要手動驗證,這點和LR是有區別;
(2) 我們新增的地址需要複製到文字檔案,然後進行引數化;
(3) 在壓力測試指令碼中需要引用引數化變數,不要忘記。
細心的小夥伴們會注意到巨集哥前後截圖不一樣,那是因為在實踐過程中,巨集哥開始在本地實戰時,直接把網給乾沒有了,所以巨集哥後來直接就在伺服器上實戰了,有線網沒有了不要著急,在裝置管理器中將網路卡解除安裝,切記不要勾選刪除解除安裝項的那個按鈕,然後重啟電腦,電腦會自動載入網路卡,有線網路恢復。這個針對巨集哥的現象可能不適合你們,但是遇到了也可以試一下。
好了,今天就到這裡吧,這篇寫的挺費勁。
您的肯定就是我進步的動力。如果你感覺還不錯,就請鼓勵一下吧!記得隨手點波 推薦 不要忘記哦!!!
別忘了點 推薦 留下您來過的痕跡