web_fuzz.go 784 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package getter
  2. import (
  3. "io/ioutil"
  4. "net/http"
  5. "sync"
  6. "github.com/zu1k/proxypool/tool"
  7. "github.com/zu1k/proxypool/proxy"
  8. )
  9. func init() {
  10. Register("webfuzz", NewWebFuzzGetter)
  11. }
  12. type WebFuzz struct {
  13. Url string
  14. }
  15. func (w *WebFuzz) Get() []proxy.Proxy {
  16. resp, err := http.Get(w.Url)
  17. if err != nil {
  18. return nil
  19. }
  20. defer resp.Body.Close()
  21. body, err := ioutil.ReadAll(resp.Body)
  22. if err != nil {
  23. return nil
  24. }
  25. return FuzzParseProxyFromString(string(body))
  26. }
  27. func (w *WebFuzz) Get2Chan(pc chan proxy.Proxy, wg *sync.WaitGroup) {
  28. wg.Add(1)
  29. nodes := w.Get()
  30. for _, node := range nodes {
  31. pc <- node
  32. }
  33. wg.Done()
  34. }
  35. func NewWebFuzzGetter(options tool.Options) Getter {
  36. url, found := options["url"]
  37. if found {
  38. return &WebFuzz{Url: url.(string)}
  39. }
  40. return nil
  41. }