Skip to content
This repository was archived by the owner on Jul 27, 2023. It is now read-only.

Commit 8131d44

Browse files
author
rootphantomer
committed
新增默认输入的body为ip:port
1 parent d5866c9 commit 8131d44

File tree

4 files changed

+149
-18
lines changed

4 files changed

+149
-18
lines changed

Diff for: main.go

+6-4
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* @Author: ph4nt0mer
33
* @Date: 2022-08-31 17:03:03
44
* @LastEditors: rootphantomer
5-
* @LastEditTime: 2022-09-06 15:56:53
5+
* @LastEditTime: 2022-09-06 16:39:06
66
* @FilePath: /quake_go/main.go
77
* @Description:
88
*
@@ -34,7 +34,9 @@ Usage of ./quake:
3434
info
3535
person infomation
3636
query <string>
37-
query string
37+
query string value
38+
-t <string,string>
39+
field string value(example:./quake query port:8088 -t ip,port)
3840
-size string
3941
size String value (default "10")
4042
-start string
@@ -55,7 +57,7 @@ Usage of ./quake:
5557
fmt.Println("!!!!please ./quake init token!!!!")
5658
return
5759
}
58-
start, size, _ := flaginit()
60+
start, size, field := flaginit()
5961
switch strings.ToLower(os.Args[1]) {
6062
case "info":
6163
apis.InfoGet(token.Token)
@@ -64,7 +66,7 @@ Usage of ./quake:
6466
fmt.Println("!!!!query is empty !!!!")
6567
return
6668
}
67-
apis.SearchServicePost(os.Args[2], start, size, token.Token)
69+
apis.SearchServicePost(os.Args[2], start, size, token.Token, field)
6870
case "host":
6971
fmt.Println("主机数据接口待完成。。。")
7072
case "favicon":

Diff for: src/apis/api.go

+20-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* @Author: ph4nt0mer
33
* @Date: 2022-09-01 15:36:10
44
* @LastEditors: rootphantomer
5-
* @LastEditTime: 2022-09-06 15:41:39
5+
* @LastEditTime: 2022-09-06 16:41:22
66
* @FilePath: /quake_go/src/apis/api.go
77
* @Description:
88
*
@@ -14,6 +14,8 @@ import (
1414
"fmt"
1515
"quake/src/setting"
1616
"quake/src/tools"
17+
"quake/src/utils"
18+
"strconv"
1719
)
1820

1921
func FilterableServiceGET(token string) {
@@ -22,7 +24,7 @@ func FilterableServiceGET(token string) {
2224
uri := "/filterable/field/quake_service"
2325
tools.ApisGet(setting.URL+uri, token)
2426
}
25-
func SearchServicePost(query string, start string, size string, token string) {
27+
func SearchServicePost(query string, start string, size string, token string, field string) {
2628
// 服务数据实时查询接口
2729
// curl -X POST "https://quake.360.cn/api/v3/search/quake_service" -H "X-QuakeToken: d17140ae-xxxx-xxx-xxxx-c0818b2bbxxx" -H "Content-Type: application/json" -d '{
2830
// "query": "service: http",
@@ -40,7 +42,22 @@ func SearchServicePost(query string, start string, size string, token string) {
4042
payload := "{\"query\":\"" + query +
4143
"\",\"start\":\"" + start + "\",\"size\":\"" + size +
4244
"\"}"
43-
tools.ApisPost(setting.URL+uri, payload, start, size, token)
45+
46+
body := tools.ApisPost(setting.URL+uri, payload, start, size, token)
47+
resut := utils.SeriveLoadJson(body)
48+
data := resut.Data
49+
// if field != "" {
50+
// fields := strings.Split(field, ",")
51+
// for _, fields_value := range fields {
52+
// for _, value := range data {
53+
// fmt.Println(value.fields_value)
54+
// }
55+
// }
56+
// }
57+
for _, value := range data {
58+
fmt.Println(value.IP + ":" + strconv.Itoa(value.Port))
59+
}
60+
4461
}
4562
func ScrollServicePost(query string, start string, size string, token string) {
4663
// 服务数据深度查询接口

Diff for: src/tools/commond.go

+13-11
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* @Author: ph4nt0mer
33
* @Date: 2022-09-01 10:49:31
44
* @LastEditors: rootphantomer
5-
* @LastEditTime: 2022-09-06 15:59:42
5+
* @LastEditTime: 2022-09-06 16:22:21
66
* @FilePath: /quake_go/src/tools/commond.go
77
* @Description:
88
*
@@ -18,60 +18,62 @@ import (
1818
"strings"
1919
)
2020

21-
func ApisPost(url string, payload string, start string, size string, token string) {
21+
func ApisPost(url string, payload string, start string, size string, token string) string {
2222
var jsonStr = []byte(payload)
2323
client := &http.Client{}
2424
req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr))
2525
if err != nil {
2626
fmt.Println(err)
27-
return
27+
return err.Error()
2828
}
2929
req.Header.Add("X-QuakeToken", token)
3030
req.Header.Add("Content-Type", "application/json")
3131

3232
res, err := client.Do(req)
3333
if err != nil {
3434
fmt.Println(err)
35-
return
35+
return err.Error()
3636
}
3737
defer res.Body.Close()
3838

3939
body, err := ioutil.ReadAll(res.Body)
4040
if err != nil {
4141
fmt.Println(err)
42-
return
42+
return err.Error()
4343
}
4444
fmt.Println("result:")
45-
fmt.Println(string(body))
45+
// fmt.Println(string(body))
4646
if strings.Contains(string(body), "quake/login") {
4747
fmt.Println("token expired,please init new token")
4848
}
49+
return string(body)
4950
}
50-
func ApisGet(url string, token string) {
51+
func ApisGet(url string, token string) string {
5152
client := &http.Client{}
5253
req, err := http.NewRequest("GET", url, nil)
5354
if err != nil {
5455
fmt.Println(err)
55-
return
56+
return err.Error()
5657
}
5758
req.Header.Add("X-QuakeToken", token)
5859
req.Header.Add("Content-Type", "application/json")
5960

6061
res, err := client.Do(req)
6162
if err != nil {
6263
fmt.Println(err)
63-
return
64+
return err.Error()
6465
}
6566
defer res.Body.Close()
6667

6768
body, err := ioutil.ReadAll(res.Body)
6869
if err != nil {
6970
fmt.Println(err)
70-
return
71+
return err.Error()
7172
}
7273
fmt.Println("result:")
73-
fmt.Println(string(body))
74+
// fmt.Println(string(body))
7475
if strings.Contains(string(body), "quake/login") {
7576
fmt.Println("token expired,please init new token")
7677
}
78+
return string(body)
7779
}

Diff for: src/utils/LoadJson.go

+110
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
/*
2+
* @Author: rootphantomer [email protected]
3+
* @Date: 2022-09-06 16:04:43
4+
* @LastEditors: rootphantomer
5+
* @LastEditTime: 2022-09-06 16:42:24
6+
* @FilePath: /quake_go/src/utils/LoadJson.go
7+
* @Description:
8+
*
9+
* Copyright (c) 2022 by rootphantomer, All Rights Reserved.
10+
*/
11+
package utils
12+
13+
import (
14+
"encoding/json"
15+
"fmt"
16+
)
17+
18+
type ServiceJson struct {
19+
Code int64 `json:"code"`
20+
Data []struct {
21+
Asn int64 `json:"asn"`
22+
Cdn struct {
23+
Domain string `json:"domain"`
24+
IsCdn bool `json:"is_cdn"`
25+
} `json:"cdn"`
26+
Components []struct {
27+
ID string `json:"id"`
28+
ProductCatalog []string `json:"product_catalog"`
29+
ProductLevel string `json:"product_level"`
30+
ProductNameCn string `json:"product_name_cn"`
31+
ProductNameEn string `json:"product_name_en"`
32+
ProductType []string `json:"product_type"`
33+
ProductVendor string `json:"product_vendor"`
34+
Version string `json:"version"`
35+
} `json:"components"`
36+
Hostname string `json:"hostname"`
37+
ID string `json:"id"`
38+
Images []interface{} `json:"images"`
39+
IP string `json:"ip"`
40+
IsIpv6 bool `json:"is_ipv6"`
41+
Location struct {
42+
CityCn string `json:"city_cn"`
43+
CityEn string `json:"city_en"`
44+
CountryCn string `json:"country_cn"`
45+
CountryCode string `json:"country_code"`
46+
CountryEn string `json:"country_en"`
47+
DistrictCn string `json:"district_cn"`
48+
DistrictEn string `json:"district_en"`
49+
Isp string `json:"isp"`
50+
ProvinceCn string `json:"province_cn"`
51+
ProvinceEn string `json:"province_en"`
52+
Radius float64 `json:"radius"`
53+
SceneCn string `json:"scene_cn"`
54+
SceneEn string `json:"scene_en"`
55+
} `json:"location"`
56+
Org string `json:"org"`
57+
OsName string `json:"os_name"`
58+
OsVersion string `json:"os_version"`
59+
Port int `json:"port"`
60+
Service struct {
61+
Banner string `json:"banner"`
62+
Cert string `json:"cert"`
63+
HTTP struct {
64+
Body string `json:"body"`
65+
Favicon struct {
66+
Data string `json:"data"`
67+
Hash string `json:"hash"`
68+
Location string `json:"location"`
69+
} `json:"favicon"`
70+
Host string `json:"host"`
71+
HTMLHash string `json:"html_hash"`
72+
MetaKeywords string `json:"meta_keywords"`
73+
Path string `json:"path"`
74+
ResponseHeaders string `json:"response_headers"`
75+
Server string `json:"server"`
76+
StatusCode int64 `json:"status_code"`
77+
Title string `json:"title"`
78+
XPoweredBy string `json:"x_powered_by"`
79+
} `json:"http"`
80+
Name string `json:"name"`
81+
Product string `json:"product"`
82+
Response string `json:"response"`
83+
Version string `json:"version"`
84+
} `json:"service"`
85+
SysTag []string `json:"sys_tag"`
86+
Time string `json:"time"`
87+
Transport string `json:"transport"`
88+
} `json:"data"`
89+
Message string `json:"message"`
90+
Meta struct {
91+
Pagination struct {
92+
Count int64 `json:"count"`
93+
PageIndex int64 `json:"page_index"`
94+
PageSize int64 `json:"page_size"`
95+
Total int64 `json:"total"`
96+
} `json:"pagination"`
97+
} `json:"meta"`
98+
}
99+
100+
func SeriveLoadJson(body string) (result ServiceJson) {
101+
var serivejson ServiceJson
102+
if err := json.Unmarshal([]byte(body), &serivejson); err == nil {
103+
// fmt.Println(serivejson.Data)
104+
// data := serivejson.Data
105+
result = serivejson
106+
} else {
107+
fmt.Println(err)
108+
}
109+
return
110+
}

0 commit comments

Comments
 (0)