欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

go語言自動化測試框架,go語言自動化測試框架圖

golang性能測試框架k6源碼分析

k6是新興的性能測試框架,比肩jmeter,另外測試腳本使用js,更加適合自動化的架構(gòu)。

創(chuàng)新互聯(lián)公司于2013年開始,先為榮成等服務建站,榮成等地企業(yè),進行企業(yè)商務咨詢服務。為榮成企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。

k6啟動的框架是使用golang的cli標準框架cobra,入口函數(shù)

進入cobra框架后,我們直接查看getRunCmd,這個是命令run的入口,主要工作都是從這里開始。

重點關(guān)注初始化Runner,這個是通過js腳本,使用goja庫解析后,生成的實際執(zhí)行單元。

進入js目錄,查看Runner的結(jié)構(gòu),runner.go

Runner有一些配置屬性,另外還有方法,方法用lib.Runner的接口進行規(guī)范。

Runner有一個NewVU方法,里面定義了連接參數(shù),實現(xiàn)api測試

返回主函數(shù),在初始化完成Runner后,啟動調(diào)度器,以及做結(jié)果收集

最終封裝成一個engine

啟動測試

golang有沒有好的開源游戲框架

Go作為近兩年迅速流行起來的編程語言始終致力于使事情簡單化。它并未引入很多新概念,而是聚焦于打造一門簡單的語言,讓開發(fā)者使用起來感覺異常快速且簡單。相信有意向深入學習Go語言的小伙伴都在研究Go的開源項目,今天我就把自己覺得不錯的6個Go開源項目推薦給大家,希望大家能獲得收獲和成長。

推薦一:kubernetes 【Star:44418】

Kubernetes基于Docker,其目的是讓用戶通過Kubernetes集群來進行云端容器集群的管理,而無需用戶進行復雜的設置工作。系統(tǒng)會自動選取合適的工作節(jié)點來執(zhí)行具體的容器集群調(diào)度處理工作。

推薦二:etcd 【Star:21408】

etcd是由CoreOS開發(fā)并維護鍵值存儲系統(tǒng),它使用Go語言編寫,并通過Raft一致性算法處理日志復制以保證強一致性。目前,Google的容器集群管理系統(tǒng)Kubernetes、開源PaaS平臺Cloud Foundry和CoreOS的Fleet都廣泛使用了etcd。

推薦三:deis 【Star:6093】

Deis是一個基于Docker和CoreOS的開源PaaS平臺,旨在讓部屬和管理服務器上的應用變得輕松容易。它可以運行在AWS、GCE以及Openstack平臺下。

推薦四:flynn 【Star:6936】

Flynn是一個使用Go語言編寫的開源PaaS平臺,可自動構(gòu)建部署任何應用到Docker容器集群上運行。Flynn項目受到Y(jié) Combinator的支持,目前仍在開發(fā)中,被稱為是下一代的開源PaaS平臺。

推薦五:lime 【Star:13775】

相對上面的幾款Go語言在云端和服務器端之外,Lime則顯得比較特殊。Lime,則是一款用Go語言寫的桌面編輯器程序,被看做是著名編輯器Sublime Text的開源實現(xiàn)。

六:revel 【Star:10508】

Revel是一個高生產(chǎn)力的Go語言Web框架。Revel框架支持熱編譯,當編輯、保存和刷新源碼時,Revel會自動編譯代碼和模板;全棧特性,支持路由、參數(shù)解析、緩存、測試、國際化等功能。

打造自己的滲透測試框架—溯光

TrackRay簡介

溯光,英文名“TrackRay”,意為逆光而行,追溯光源。同時致敬安全圈前輩開發(fā)的“溯雪”,“流光”。

溯光是一個開源的插件化滲透測試框架,框架自身實現(xiàn)了漏洞掃描功能,集成了知名安全工具:Metasploit、Nmap、Sqlmap、AWVS等。

溯光使用 Java 編寫,SpringBoot 作為基礎框架,JPA + HSQLDB嵌入式數(shù)據(jù)庫做持久化,Maven 管理依賴,Jython 實現(xiàn) Python 插件調(diào)用,quartz 做任務調(diào)度,freemarker + thymeleaf 做視圖層,Websocket 實現(xiàn)命令行式插件交互。

框架可擴展性高,支持 Java、Python、JSON 等方式編寫插件,有“漏洞掃描插件”、“爬蟲插件”、“MVC插件”、“內(nèi)部插件”、“無交互插件”和“可交互插件” 等插件類型。

功能展示

主頁

登錄

任務創(chuàng)建

任務列表

任務詳情

無交互接口插件調(diào)用

MVC插件示例

交互式插件控制臺

MSF 控制臺

依賴環(huán)境

JDK 1.8

Python 2.7

Maven

Git

Metasploit

Nmap(建議安裝)

SQLMAP(建議安裝)

AWVS

**加粗為必須環(huán)境,沒有安裝程序則無法正常編譯運行

不論是 Windows 還是 linux 一定需要先安裝 JDK1.8 和 Maven。安裝過程這里不做演示。保證 JDK 和 Maven 都在系統(tǒng)環(huán)境變量,能執(zhí)行java -version 和 mvn --version即可。

安裝過程

第一步

手動啟動 AWVS 服務

登錄后臺,生成一個API密匙。

復制密匙和 AWVS 的地址。

找到web/src/main/resources/application.properties配置文件。

修改如下部分

第二步

找到你 python 的第三方庫目錄。

Windows 的一般在 python 安裝目錄下的/Lib/site-packages

Linux 下可以通過輸出 sys.path 來找第三方包路徑

我的是 D:/Python2/Lib/site-packages

同樣找到web/src/main/resources/application.properties配置文件。

修改python.package.path參數(shù)

第三步

安裝 Maven 后找到倉庫位置。

如果沒有在 settings.xml 里配置指定倉庫目錄,默認會在當前用戶目錄中生成一個 .m2的目錄

找到倉庫目錄后修改 application.properties 的 maven.repository.path參數(shù)

第四步

這個是 DNSLOG 回顯檢測漏洞時需要的。

去 ceye.io 注冊一個賬號,拿到給你分配的域名和 TOKEN。

修改配置文件

第五步

啟動 msf 和 sqlmapapi。

如果你是 kali 操作系統(tǒng),可以直接運行startdep.sh。

如果是其他系統(tǒng),則要找到 metasploit 和 sqlmap 的目錄分別執(zhí)行

啟動成功后修改配置文件

第六步

編譯打包程序

等待依賴下載完成和編譯完成,如果以上操作都沒有出現(xiàn)問題則會提示 BUILD SUCCESS

編譯成功后會在當前目錄打包一個trackray.jar就是溯光的主程序。

然后直接執(zhí)行startup.bat或startup.sh溯光就會啟動服務。

沒有拋出異常或ERROR日志,訪問 8080 端口正常。

服務啟動正常后,登錄 iZone 社區(qū)賬號。

**開發(fā)插件建議使用 Intellij IDEA IDE,需要安裝 lombok 插件。

目錄結(jié)構(gòu)

插件

AbstractPlugin

這是交互式插件和非交互式插件的父類。

BASE常量

其中的靜態(tài)常量 BASE 是 /resources/include/ 的所在目錄。

如果你的插件需要額外的靜態(tài)資源,那么你可以在 /resources/include 目錄里創(chuàng)建一個和插件 KEY 相同的文件夾,便于識別,如果沒有在 @Plugin 注解中設置 value 則默認的插件 KEY 就是當前類名首字母小寫。

如 Typecho001 = typecho001

check(Map param)

這是用于檢驗是否合規(guī)的方法,需要被強制重寫,當返回 true 時才會調(diào)用 start() 方法

param 參數(shù)是從前臺傳過來的參數(shù)鍵值對。

常被用于檢驗參數(shù)格式是否正確或漏洞是否存在。

after()

在 start() 方法之前調(diào)用

before()

在 start() 方法之后調(diào)用

start()

這是一個抽象方法,所有繼承了該類的子類都需要重寫這個方法。

在 check 方法 通過后會調(diào)用 start() 方法

start() 方法返回值最終會會當做插件結(jié)果,響應給前臺。

shell()

調(diào)用當前系統(tǒng) shell 來輔助完成插件功能。

executor()

插件執(zhí)行的主方法

crawlerPage

http請求對象(不推薦使用)

fetcher

執(zhí)行 http 請求對象(不推薦使用)

errorMsg

當校驗不通過時,返回給前臺的信息。

param

前臺傳過來的參數(shù)鍵值對

requests

HTTP 發(fā)包工具(推薦使用)

hackKit

hack 常用工具包

無交互插件

無交互插件需要你填寫好所有要填寫的參數(shù),直接請求接口來執(zhí)行插件。

默認需要去繼承 CommonPlugin類。

這是一個抽象類,繼承了 AbstractPlugin

主要多出來兩個屬性:request 和 response。

繼承了 CommonPlugin 的類可以通過調(diào)用這兩個屬性來控制請求和響應內(nèi)容。

無交互插件同時也需要使用 @Rule 和 @Plugin 插件,這兩個注解后面會講到。

在 ,找到相應的插件填寫好參數(shù)提交即可完成調(diào)用。

或直接調(diào)用接口。

交互式插件

交互式插件一般在命令行控制臺中調(diào)用,可以允許你通過命令行交互來完成插件的調(diào)用。

交互式插件由 Websocket 實現(xiàn),想要寫一個交互式插件,首先要繼承 WebSocketPlugin 類。

同時設置 @Rule 注解的 websocket 參數(shù)為 true ,如果需要異步交互需要將 sync 也設置為 true。

內(nèi)部插件

內(nèi)部插件是不可以通過外部去調(diào)用的,需要繼承 InnerPlugin 并使用 @Plugin 注解,通常在漏洞掃描時時會調(diào)用。

例如 “網(wǎng)頁爬蟲”,“指紋識別”,“端口掃描” 等,都是通過調(diào)用內(nèi)部插件實現(xiàn)的。

還有用于檢測 SSRF 等漏洞用的 FuckCeye 插件也屬于內(nèi)部插件。

通過 spring 的自動注入,來注入內(nèi)部插件到當前對象。

例子可參考 WebLogicWLSRCE.java

爬蟲插件

爬蟲插件會在掃描任務被勾選“網(wǎng)頁爬蟲”時調(diào)用,每爬取一條請求就會調(diào)用一次爬蟲插件。

爬蟲插件需要繼承 CrawlerPlugin,繼承該類必須重寫 check 和 process 方法。

check 方法用于檢驗請求是否符合插件規(guī)則,以免產(chǎn)生多余請求。

當 check 方法 返回為 true 時會調(diào)用 process 方法。

process 方法里寫插件主要檢測代碼。

addVulnerable()

當插件檢測出漏洞時,可以通過調(diào)用 addVulnerable() 方法來向數(shù)據(jù)庫插入一條漏洞。

requests

requests 屬性為請求工具包,處理 https 和 http 都很方便。

response

response 屬性為當前爬蟲得到的 HTTP 響應。

task

task 屬性為當前任務對象,如果你的爬蟲插件不是檢測漏洞而希望是檢測一些敏感信息的話可以修改 task.getResult() 里的屬性。

參考 FingerProbe.java 或 InfoProbe.java。

target

爬蟲爬取到的 URL 對象。

fetcher crawlerPage

http 請求對象(不建議使用)。

漏洞掃描插件

漏洞掃描插件會在,掃描任務中勾選“漏洞攻擊模塊”時調(diào)用。

漏洞掃描插件分為三種

1.獨立插件

獨立的漏洞掃描插件需要繼承 AbstractExploit 并使用 @Plugin 或 @Exploit

AbstractExploit 中有以下需要了解的方法和屬性。

requests

http / https 發(fā)包工具

target 當前掃描任務的地址。

task

當前掃描任務對象。

check()

check 是一個抽象方法,需要被子類強制重寫。

該方法一般用于檢驗是否符合當前漏洞掃描插件的規(guī)則,以免產(chǎn)生多與請求。

attack()

attack 也是一個抽象方法,需要被子類強制重寫。

該方法是檢測漏洞的主方法。

before()

在 attack 方法前執(zhí)行

after()

在 attack 方法后執(zhí)行

addVulnerable()

當插件檢測出漏洞時,可以通過調(diào)用 addVulnerable() 方法來向數(shù)據(jù)庫插入一條漏洞。

fetcher crawlerPage

http 請求對象(不建議使用)。

2.漏洞規(guī)則

位于

實際上這是一個“內(nèi)部插件”,會在勾選漏洞模塊攻擊時調(diào)用。

有一些漏洞檢測方法很簡單,只通過簡單的判斷響應體就能識別出來,也就沒有必要再去寫一個獨立的插件而占用空間了。

在 doSwitch() 方法中會先去根據(jù)當前任務的指紋識別結(jié)果走一遍 switch 流程。

swtich 的每一個 case 都是 WEB 指紋的枚舉對象。

當 switch 找到當前任務 WEB 指紋對應的 case 后,case 內(nèi)的代碼會通過構(gòu)建一個漏洞規(guī)則添加到 loaders 集合里。

如果規(guī)則是通用的,可以寫在 switch 的外面。

3.kunpeng JSON插件

kunpeng 是一個 go 語言編寫的 poc 測試框架,這里我對 kunpeng 的 JSON 插件做了一個支持。

只需要按照 kunpeng json 插件的格式規(guī)范創(chuàng)建一個 json 文件到 /resources/json 目錄。

在掃描任務勾選“漏洞攻擊模塊”時會被調(diào)用,或通過 MVC 插件調(diào)用 。

MVC 插件

位于

MVC 插件的特點在于,他可以像是在寫一個功能一樣,而非簡單的接口式調(diào)用。

MVC 插件需要繼承 MVCPlugin 類,并使用 @Rule,@Plugin 注解。

MVCPlugin 內(nèi)置了一個 ModelAndView 對象, 是 SpringMVC 提供的。

可以通過 setViewName() 來指定視圖層的網(wǎng)頁模板。

通過 addObject(key,value) 向視圖層網(wǎng)頁模板注入?yún)?shù)。

這里的視圖層是使用 thymeleaf 實現(xiàn)的,需要懂 thymeleaf 的語法。

例子可以參考:com.trackray.module.inner.JSONPlugin

繼承 MVCPlugin 必須要重寫一個 index 方法,這是插件的入口。

如果需要寫其他的功能,就得再創(chuàng)建一個 public 返回值為 void 的無參方法。

并且要在該方法上使用 @Function 注解,該注解的 value 參數(shù)如果不填寫的話則默認的 requestMapping 地址為方法名。

例如

最后還需要在 /module/src/main/resources/templates 創(chuàng)建一個目錄名為插件 KEY 的目錄。

里面存放擴展名為 .html 的模板文件。

Python 插件

python 插件有兩種實現(xiàn)方式。

1.通過命令行實現(xiàn)

這種方式最為簡單,通過在 include 里寫一個 python 腳本。

然后在插件里調(diào)用 shell() 方法來執(zhí)行系統(tǒng)命令。

案例可參考 com.trackray.module.plugin.windows.smb.MS17010

但這樣還需要再寫 java 的代碼,對于沒有學過 java 的人來說很不友好。

2.通過jython實現(xiàn)

jython 是一個 Python 語言在 Java 中的完全實現(xiàn)。

我將它的調(diào)用過程寫成了一個交互式插件。

你可以通過在 /resources/python/ 目錄下安裝如下規(guī)范去創(chuàng)建一個 python 文件。

在這個 python 文件中需要寫兩個方法。

關(guān)于注解

@Rule

一般用在“可交互插件”和“無交互插件”類上。

@Plugin

WEB指紋

這里順便再說一下如何添加指紋庫。

指紋庫位于 base 模塊,是一個枚舉類。

可以在首部或尾部添加一條新的枚舉,盡量使用 $ 開頭。

第一個參數(shù)是 指紋的名稱,如果第二個參數(shù)是 String 類型則是該指紋的說明。

FingerBean 類是指紋匹配對象。

golang從入門到精通,搭建本地selenium自動化測試環(huán)境

用Golang做爬蟲,當面對頁面存在復雜的JS的情況,使用普通的http.get或者http.post,如不做特殊處理,將無法解析頁面源代碼。

在使用python的過程中,可以使用selenium進行爬取數(shù)據(jù),或使用selenium自動化測試,那么用Golang怎么處理這個問題呢?

其實Golang中也有selenium,Selenium 作為一個用于 Web 應用程序測試的工具,可以模擬真實瀏覽器進行操作,也可以實現(xiàn)鼠標點擊、滾輪、輸入等用戶日常操作。

我們通過2節(jié)課的學習,實現(xiàn)1、本地啟動selenium服務;2、遠程啟動selenium服務。

GoLang -- Gin框架

? 何為框架:

框架一直是敏捷開發(fā)中的利器,能讓開發(fā)者很快的上手并做出應用,甚至有的時候,脫離了框架,一些開發(fā)者都不會寫程序了。成長總不會一蹴而就,從寫出程序獲取成就感,再到精通框架,快速構(gòu)造應用,當這些方面都得心應手的時候,可以嘗試改造一些框架,或是自己創(chuàng)造一個。

Gin是一個golang的微框架,封裝比較優(yōu)雅,API友好,源碼注釋比較明確,已經(jīng)發(fā)布了1.0版本。具有快速靈活,容錯方便等特點。其實對于golang而言,web框架的依賴要遠比Python,Java之類的要小。自身的net/http足夠簡單,性能也非常不錯。框架更像是一些常用函數(shù)或者工具的集合。借助框架開發(fā),不僅可以省去很多常用的封裝帶來的時間,也有助于團隊的編碼風格和形成規(guī)范。

(1)首先需要安裝,安裝比較簡單,使用go get即可

go get github.com/gin-gonic/gin

如果安裝失敗,直接去Github clone下來,放置到對應的目錄即可。

(2)代碼中使用:

下面是一個使用Gin的簡單例子:

package main

import (

"github.com/gin-gonic/gin"

)

func main() {

router := gin.Default()

router.GET("/ping", func(c *gin.Context) {

c.JSON(200, gin.H{

"message": "pong",

})

})

router.Run(":8080") // listen and serve on 0.0.0.0:8080

}

簡單幾行代碼,就能實現(xiàn)一個web服務。使用gin的Default方法創(chuàng)建一個路由handler。然后通過HTTP方法綁定路由規(guī)則和路由函數(shù)。不同于net/http庫的路由函數(shù),gin進行了封裝,把request和response都封裝到gin.Context的上下文環(huán)境。最后是啟動路由的Run方法監(jiān)聽端口。麻雀雖小,五臟俱全。當然,除了GET方法,gin也支持POST,PUT,DELETE,OPTION等常用的restful方法。

Gin可以很方便的支持各種HTTP請求方法以及返回各種類型的數(shù)據(jù),詳情可以前往查看。

2.1 匹配參數(shù)

我們可以使用Gin框架快速的匹配參數(shù),如下代碼所示:

冒號:加上一個參數(shù)名組成路由參數(shù)。可以使用c.Param的方法讀取其值。當然這個值是字串string。諸如/user/rsj217,和/user/hello都可以匹配,而/user/和/user/rsj217/不會被匹配。

瀏覽器輸入以下測試:

返回結(jié)果為:

其中c.String是gin.Context下提供的方法,用來返回字符串。

其中c.Json是gin.Context下提供的方法,用來返回Json。

下面我們使用以下gin提供的Group函數(shù),方便的為不同的API進行分類。

我們創(chuàng)建了一個gin的默認路由,并為其分配了一個組 v1,監(jiān)聽hello請求并將其路由到視圖函數(shù)HelloPage,最后綁定到 0.0.0.0:8000

C.JSON是Gin實現(xiàn)的返回json數(shù)據(jù)的內(nèi)置方法,包含了2個參數(shù),狀態(tài)碼和返回的內(nèi)容。http.StatusOK代表返回狀態(tài)碼為200,正文為{"message": “welcome"}。

注:Gin還包含更多的返回方法如c.String, c.HTML, c.XML等,請自行了解。可以方便的返回HTML數(shù)據(jù)

我們在之前的組v1路由下新定義一個路由:

下面我們訪問

可以看到,通過c.Param(“key”)方法,Gin成功捕獲了url請求路徑中的參數(shù)。同理,gin也可以捕獲常規(guī)參數(shù),如下代碼所示:

在瀏覽器輸入以下代碼:

通過c.Query(“key”)可以成功接收到url參數(shù),c.DefaultQuery在參數(shù)不存在的情況下,會由其默認值代替。

我們還可以為Gin定義一些默認路由:

這時候,我們訪問一個不存在的頁面:

返回如下所示:

下面我們測試在Gin里面使用Post

在測試端輸入:

附帶發(fā)送的數(shù)據(jù),測試即可。記住需要使用POST方法.

繼續(xù)修改,將PostHandler的函數(shù)修改如下

測試工具輸入:

發(fā)送的內(nèi)容輸入:

返回結(jié)果如下:

備注:此處需要指定Content-Type為application/x-www-form-urlencoded,否則識別不出來。

一定要選擇對應的PUT或者DELETE方法。

Gin框架快速的創(chuàng)建路由

能夠方便的創(chuàng)建分組

支持url正則表達式

支持參數(shù)查找(c.Param c.Query c.PostForm)

請求方法精準匹配

支持404處理

快速的返回給客戶端數(shù)據(jù),常用的c.String c.JSON c.Data

level1編程項目是什么

開發(fā)框架。level1編程項目這是一個基于go語言編寫的,自動化測試以太坊智能合約的開發(fā)框架,使用此框架,可以自動化的部署合約,自動測試合約內(nèi)的功能函數(shù)。

網(wǎng)頁題目:go語言自動化測試框架,go語言自動化測試框架圖
分享路徑:http://chinadenli.net/article3/dsgiiis.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站ChatGPTApp開發(fā)外貿(mào)建站用戶體驗搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務器托管