Golang简易版 网站路径扫描demo


package main

import (
	"bufio"
	"fmt"
	"net/http"
	"os"
	"regexp"
	"runtime"
	"strconv"
	"sync"
	"time"
)

var wg sync.WaitGroup
var cpunum = runtime.NumCPU()

func main() {
	starttime := time.Now()
	defer testtime(starttime)
	baseurl := "http://xxxx.com/"
	urls := make(chan string)
	file,err := os.Open("PHP.txt")
	if err != nil {
		fmt.Println("字典打开失败: ",err)
		return
	}
	defer file.Close()
	//开启一个携程,用来向urls通道中写入完整的url
	go func() {
		scaner := bufio.NewScanner(file)
		for scaner.Scan() {
			urls<- fmt.Sprintf("%s/%s",baseurl,scaner.Text())
		}
		if err := scaner.Err();err != nil {
			fmt.Println("读取字典错误: ",err)
		}
		close(urls)
		fmt.Println("字典读取完毕。")
	}()

	//开启多个携程,通过http的head请求方式,进行验证
	worknum := (cpunum-1)*20
	for i:=0; i

通过bufio.NewScanner( 方式获取到文件中的数据,不会加上最后的标识符 \n

通过resp.Body.Close() 关闭Body体,在for循环中不能使用defer resp.Body.Close()的形式。

用Golang写的一个简易版网站路径扫描,高并发,访问超时时间为10s。练手造轮子,就自己用用还行。*~*