-u 允许添加多个

调整stat文件名生成方式
This commit is contained in:
M09Ic 2023-01-05 14:40:20 +08:00
parent 38c73d350a
commit c64467a588
2 changed files with 19 additions and 17 deletions

View File

@ -67,4 +67,7 @@ go build .
3. [x] 简易爬虫 3. [x] 简易爬虫
4. [ ] 支持http2 4. [ ] 支持http2
5. [ ] auto-tune, 自动调整并发数量 5. [ ] auto-tune, 自动调整并发数量
6. [x] 可自定义的递归配置 6. [x] 可自定义的递归配置
7. [ ] 参考[fuzzuli](https://github.com/musana/fuzzuli), 实现备份文件字典生成器
8. [ ] 支持socks/http代理, 不建议使用, 优先级较低. 代理的keep-alive会带来严重的性能下降
9. [ ] 云函数化, chainreactors工具链的通用分布式解决方案.

View File

@ -31,7 +31,7 @@ type Option struct {
type InputOptions struct { type InputOptions struct {
ResumeFrom string `long:"resume"` ResumeFrom string `long:"resume"`
URL string `short:"u" long:"url" description:"String, input baseurl (separated by commas), e.g.: http://google.com, http://baidu.com"` URL []string `short:"u" long:"url" description:"String, input baseurl, e.g.: http://google.com"`
URLFile string `short:"l" long:"list" description:"File, input filename"` URLFile string `short:"l" long:"list" description:"File, input filename"`
Raw string `long:"raw" description:"File, input raw request filename"` Raw string `long:"raw" description:"File, input raw request filename"`
Offset int `long:"offset" description:"Int, wordlist offset"` Offset int `long:"offset" description:"Int, wordlist offset"`
@ -292,13 +292,6 @@ func (opt *Option) PrepareRunner() (*Runner, error) {
} }
// prepare task // prepare task
var u *url.URL
if opt.URL != "" {
u, err = url.Parse(opt.URL)
if err != nil {
u, _ = url.Parse("http://" + opt.URL)
}
}
var tasks []*Task var tasks []*Task
var taskfrom string var taskfrom string
if opt.ResumeFrom != "" { if opt.ResumeFrom != "" {
@ -314,9 +307,19 @@ func (opt *Option) PrepareRunner() (*Runner, error) {
} else { } else {
var file *os.File var file *os.File
var urls []string var urls []string
if u != nil { if len(opt.URL) == 1 {
u, err := url.Parse(opt.URL[0])
if err != nil {
u, _ = url.Parse("http://" + opt.URL[0])
}
urls = append(urls, u.String()) urls = append(urls, u.String())
tasks = append(tasks, &Task{baseUrl: opt.URL}) tasks = append(tasks, &Task{baseUrl: opt.URL[0]})
taskfrom = u.Host
} else if len(opt.URL) > 1 {
for _, u := range opt.URL {
urls = append(urls, u)
tasks = append(tasks, &Task{baseUrl: u})
}
taskfrom = "cmd" taskfrom = "cmd"
} else if opt.URLFile != "" { } else if opt.URLFile != "" {
file, err = os.Open(opt.URLFile) file, err = os.Open(opt.URLFile)
@ -471,12 +474,8 @@ func (opt *Option) PrepareRunner() (*Runner, error) {
} }
if opt.ResumeFrom != "" { if opt.ResumeFrom != "" {
r.StatFile, err = files.NewFile(opt.ResumeFrom, false, true, true) r.StatFile, err = files.NewFile(opt.ResumeFrom, false, true, true)
} else if opt.URLFile != "" { } else {
r.StatFile, err = files.NewFile(opt.URLFile+".stat", false, true, true) r.StatFile, err = files.NewFile(taskfrom+".stat", false, true, true)
} else if taskfrom == "stdin" {
r.StatFile, err = files.NewFile("stdin.stat", false, true, true)
} else if u != nil {
r.StatFile, err = files.NewFile(u.Host+".stat", false, true, true)
} }
if err != nil { if err != nil {
return nil, err return nil, err