导出csv
(out string)
| 103 | |
| 104 | // 导出csv |
| 105 | func OutFileCsv(out string) { |
| 106 | //获取域名 |
| 107 | var host string |
| 108 | re := regexp.MustCompile("([a-z0-9\\-]+\\.)*([a-z0-9\\-]+\\.[a-z0-9\\-]+)(:[0-9]+)?") |
| 109 | hosts := re.FindAllString(cmd.U, 1) |
| 110 | if len(hosts) == 0 { |
| 111 | host = cmd.U |
| 112 | } else { |
| 113 | host = hosts[0] |
| 114 | } |
| 115 | |
| 116 | //抓取的域名优先排序 |
| 117 | if cmd.S != "" { |
| 118 | ResultUrl = util.SelectSort(ResultUrl) |
| 119 | ResultJs = util.SelectSort(ResultJs) |
| 120 | } |
| 121 | ResultJsHost, ResultJsOther := util.UrlDispose(ResultJs, host, util.GetHost(cmd.U)) |
| 122 | ResultUrlHost, ResultUrlOther := util.UrlDispose(ResultUrl, host, util.GetHost(cmd.U)) |
| 123 | Domains = util.GetDomains(util.MergeArray(ResultJs, ResultUrl)) |
| 124 | var fileName string |
| 125 | if out != "" { |
| 126 | fileName = out |
| 127 | } else { |
| 128 | //输出到文件 |
| 129 | if strings.Contains(host, ":") { |
| 130 | host = strings.Replace(host, ":", ":", -1) |
| 131 | } |
| 132 | //在当前文件夹创建文件夹 |
| 133 | err := os.MkdirAll(cmd.O+"/"+host, 0755) |
| 134 | if err != nil { |
| 135 | fmt.Printf(cmd.O+"/"+host+" 目录创建失败 :%s", err) |
| 136 | return |
| 137 | } |
| 138 | //多相同url处理 |
| 139 | fileName = cmd.O + "/" + host + "/" + host + ".csv" |
| 140 | for fileNum := 1; util.Exists(fileName); fileNum++ { |
| 141 | fileName = cmd.O + "/" + host + "/" + host + "(" + strconv.Itoa(fileNum) + ").csv" |
| 142 | } |
| 143 | } |
| 144 | file, err := os.OpenFile(fileName, os.O_CREATE|os.O_WRONLY, 0644) |
| 145 | |
| 146 | resultWriter := csv.NewWriter(file) |
| 147 | // 写数据到文件 |
| 148 | if err != nil { |
| 149 | fmt.Println("open file error:", err) |
| 150 | return |
| 151 | } |
| 152 | if cmd.S == "" { |
| 153 | resultWriter.Write([]string{"url", "Source"}) |
| 154 | } else { |
| 155 | resultWriter.Write([]string{"url", "Status", "Size", "Title", "Redirect", "Source"}) |
| 156 | } |
| 157 | if cmd.D == "" { |
| 158 | resultWriter.Write([]string{strconv.Itoa(len(ResultJsHost)) + " JS to " + util.GetHost(cmd.U)}) |
| 159 | } else { |
| 160 | resultWriter.Write([]string{strconv.Itoa(len(ResultJsHost)+len(ResultJsOther)) + " JS to " + cmd.D}) |
| 161 | } |
| 162 |
no test coverage detected