@@ -9,7 +9,7 @@ def __init__(self, domain):
9
9
self .domain = domain
10
10
self .module = 'Certificate'
11
11
self .source = "CensysAPIQuery"
12
- self .addr = 'https://search.censys.io/api/v1/search/ certificates'
12
+ self .addr = 'https://search.censys.io/api/v2/ certificates/search '
13
13
self .id = settings .censys_api_id
14
14
self .secret = settings .censys_api_secret
15
15
self .delay = 3.0 # Censys 接口查询速率限制 最快2.5秒查1次
@@ -20,26 +20,30 @@ def query(self):
20
20
"""
21
21
self .header = self .get_header ()
22
22
self .proxy = self .get_proxy (self .source )
23
- data = {
24
- 'query' : f'parsed.names: { self .domain } ' ,
25
- 'page' : 1 ,
26
- 'fields' : ['parsed.subject_dn' , 'parsed.names' ],
27
- 'flatten' : True }
28
- resp = self .post (self .addr , json = data , auth = (self .id , self .secret ))
23
+ params = {
24
+ 'q' : f'names: { self .domain } ' ,
25
+ 'per_page' : 100 ,
26
+ }
27
+ resp = self .get (self .addr , params = params , auth = (self .id , self .secret ))
29
28
if not resp :
30
29
return
31
30
json = resp .json ()
32
31
status = json .get ('status' )
33
- if status != 'ok ' :
32
+ if status != 'OK ' :
34
33
logger .log ('ALERT' , f'{ self .source } module { status } ' )
35
34
return
36
35
subdomains = self .match_subdomains (resp .text )
37
36
self .subdomains .update (subdomains )
38
- pages = json .get ('metadata' ).get ('pages' )
39
- for page in range (2 , pages + 1 ):
40
- data ['page' ] = page
41
- resp = self .post (self .addr , json = data , auth = (self .id , self .secret ))
42
- self .subdomains = self .collect_subdomains (resp )
37
+ next_cursor = json .get ("result" ).get ("links" ).get ("next" )
38
+ while next_cursor :
39
+ tmp_params = {
40
+ 'q' : f'names: { self .domain } ' ,
41
+ 'per_page' : 100 ,
42
+ "cursor" : next_cursor
43
+ }
44
+ tmp_resp = self .get (self .addr , params = tmp_params , auth = (self .id , self .secret ))
45
+ self .subdomains = self .collect_subdomains (tmp_resp )
46
+ next_cursor = tmp_resp .json ().get ("result" ).get ("links" ).get ("next" )
43
47
44
48
def run (self ):
45
49
"""
0 commit comments