mirror of
https://github.com/chainreactors/spray.git
synced 2025-09-15 19:50:18 +00:00
-u 允许添加多个
调整stat文件名生成方式
This commit is contained in:
parent
38c73d350a
commit
c64467a588
@ -68,3 +68,6 @@ go build .
|
|||||||
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工具链的通用分布式解决方案.
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user