MCPcopy
hub / github.com/zu1k/proxypool / CrawlGo

Function CrawlGo

internal/app/task.go:16–80  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

14var location, _ = time.LoadLocation("PRC")
15
16func CrawlGo() {
17 wg := &sync.WaitGroup{}
18 var pc = make(chan proxy.Proxy)
19 for _, g := range Getters {
20 wg.Add(1)
21 go g.Get2Chan(pc, wg)
22 }
23 proxies := cache.GetProxies("allproxies")
24 proxies = append(proxies, database.GetAllProxies()...)
25 go func() {
26 wg.Wait()
27 close(pc)
28 }()
29 for node := range pc {
30 if node != nil {
31 proxies = append(proxies, node)
32 }
33 }
34 // 节点去重
35 proxies = proxies.Deduplication()
36 log.Println("CrawlGo node count:", len(proxies))
37 proxies = provider.Clash{
38 provider.Base{
39 Proxies: &proxies,
40 },
41 }.CleanProxies()
42 log.Println("CrawlGo cleaned node count:", len(proxies))
43 proxies.NameAddCounrty().Sort().NameAddIndex().NameAddTG()
44 log.Println("Proxy rename DONE!")
45
46 // 全节点存储到数据库
47 database.SaveProxyList(proxies)
48
49 cache.SetProxies("allproxies", proxies)
50 cache.AllProxiesCount = proxies.Len()
51 log.Println("AllProxiesCount:", cache.AllProxiesCount)
52 cache.SSProxiesCount = proxies.TypeLen("ss")
53 log.Println("SSProxiesCount:", cache.SSProxiesCount)
54 cache.SSRProxiesCount = proxies.TypeLen("ssr")
55 log.Println("SSRProxiesCount:", cache.SSRProxiesCount)
56 cache.VmessProxiesCount = proxies.TypeLen("vmess")
57 log.Println("VmessProxiesCount:", cache.VmessProxiesCount)
58 cache.TrojanProxiesCount = proxies.TypeLen("trojan")
59 log.Println("TrojanProxiesCount:", cache.TrojanProxiesCount)
60 cache.LastCrawlTime = time.Now().In(location).Format("2006-01-02 15:04:05")
61
62 // 可用性检测
63 log.Println("Now proceed proxy health check...")
64 proxies = proxy.CleanBadProxiesWithGrpool(proxies)
65 log.Println("CrawlGo clash usable node count:", len(proxies))
66 proxies.NameReIndex()
67 cache.SetProxies("proxies", proxies)
68 cache.UsefullProxiesCount = proxies.Len()
69
70 cache.SetString("clashproxies", provider.Clash{
71 provider.Base{
72 Proxies: &proxies,
73 },

Callers 2

mainFunction · 0.92
crawlTaskFunction · 0.92

Calls 15

GetProxiesFunction · 0.92
GetAllProxiesFunction · 0.92
SaveProxyListFunction · 0.92
SetProxiesFunction · 0.92
SetStringFunction · 0.92
DeduplicationMethod · 0.80
CleanProxiesMethod · 0.80
NameAddTGMethod · 0.80
NameAddIndexMethod · 0.80
SortMethod · 0.80
NameAddCounrtyMethod · 0.80

Tested by

no test coverage detected