run.go:

創(chuàng)新互聯(lián)專注于嵩縣網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供嵩縣營銷型網(wǎng)站建設(shè),嵩縣網(wǎng)站制作、嵩縣網(wǎng)頁設(shè)計、嵩縣網(wǎng)站官網(wǎng)定制、小程序制作服務(wù),打造嵩縣網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供嵩縣網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
package main
import (
"./uas"
"flag"
"math/rand"
"net/url"
"os"
"strconv"
"strings"
"time"
)
type resource struct {
url string
target string
start int
end int
}
func ruleResource() []resource{
var res []resource
//首頁
r1 := resource{
url: "http://localhost/",
target: "",
start: 0,
end: 0,
}
//列表頁
r2 := resource{
url: "http://localhost/list/{$id}.html",
target: "{$id}",
start: 1,
end: 21,
}
//詳情頁
r3 := resource{
url: "http://localhost/movie/{$id}.html",
target: "{$id}",
start: 1,
end: 12924,
}
res = append(res, r1, r2, r3)
return res
}
func buildUrl(res []resource) []string {
var list []string
for _, resItem := range res {
if len(resItem.target) == 0 {
list = append(list, resItem.url)
}else {
for i := resItem.start; i <= resItem.end; i++ {
urlStr := strings.Replace(resItem.url, resItem.target, strconv.Itoa(i), -1)
list = append(list, urlStr)
}
}
}
return list
}
func makeLog(current, refer, ua string) string {
u := url.Values{}
u.Set("time", "1")
u.Set("url", current)
u.Set("refer", refer)
u.Set("ua", ua)
paramsStr := u.Encode()
logTemplate := "127.0.0.1 - - [14/Apr/2019:20:07:42 +0800] \"OPTIONS /dig?{$paramsStr} HTTP/1.1\" 499 0 \"-\" \"{$ua}\" \"-\""
log := strings.Replace(logTemplate, "{$paramsStr}", paramsStr, -1)
log = strings.Replace(log, "{$ua}", ua, -1)
return log
}
//隨機
func randInt(min, max int) int {
r := rand.New(rand.NewSource(time.Now().UnixNano()))
if min > max {
return max
}
return r.Intn(max-min) + min
}
func main() {
total := flag.Int("total", 100, "創(chuàng)建多少行日志")
filePath := flag.String("filePath", "F:/phpStudy/PHPTutorial/nginx/logs/access.log", "日志文件路徑")
//想生效還要調(diào)用解析方法
flag.Parse()
//fmt.Println(*total, *filePath)
//構(gòu)造出真實的網(wǎng)站url集合
res := ruleResource()
list := buildUrl(res)
//按照要求,生成$total行日志內(nèi)容
logStr := ""
for i := 1; i <= *total; i++ {
//隨機選
currentUrl := list[randInt(0, len(list)-1)]
referUrl := list[randInt(0, len(list)-1)]
ua := uas.UaList[randInt(0, len(uas.UaList)-1)]
logStr = logStr + makeLog(currentUrl, referUrl, ua) + "\n"
//和隨機種子一樣的間隔,盡可能保證隨機性
time.Sleep(time.Nanosecond)
}
//放到循環(huán)外一次寫入
fd, _ := os.OpenFile(*filePath, os.O_RDWR|os.O_APPEND, 0644 )
fd.Write([]byte(logStr))
fd.Close()
}uas.go(各種瀏覽器信息):
package uas
var UaList = []string {
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36",
"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50",
"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;",
" Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv,2.0.1) Gecko/20100101 Firefox/4.0.1",
"Mozilla/5.0 (Windows NT 6.1; rv,2.0.1) Gecko/20100101 Firefox/4.0.1",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.4094.1 Safari/537.36",
"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50",
"Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5",
" Opera/9.80 (Android 2.3.4; Linux; Opera Mobi/build-1107180945; U; en-GB) Presto/2.8.149 Version/11.10",
}
運行程序(隨機生成10000條日志):
go run run.go --total=10000 --filePath="F:/phpStudy/PHPTutorial/nginx/logs/access.log"
網(wǎng)頁題目:打點統(tǒng)計——2(批量生成隨機日志樣本)
文章轉(zhuǎn)載:http://www.chinadenli.net/article20/pesdjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計、面包屑導(dǎo)航、外貿(mào)建站、網(wǎng)站建設(shè)、虛擬主機、云服務(wù)器
聲明:本網(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)