Skip to content

Commit cefa100

Browse files
authored
Merge pull request #396 from lovelyjuice/master
增加空间测绘引擎最大查询数量限制,允许用户不使用 tldextract 提取主域名,升级exrex版本,修复`No module named 'distutils.util'`的bug
2 parents bb5d5fc + 202f0c3 commit cefa100

File tree

7 files changed

+16
-7
lines changed

7 files changed

+16
-7
lines changed

common/domain.py

+2
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ def registered(self):
5555
5656
:return: registered domain result
5757
"""
58+
if not settings.use_tld_extract:
59+
return self.string
5860
result = self.extract()
5961
if result:
6062
return result.registered_domain

config/setting.py

+6
Original file line numberDiff line numberDiff line change
@@ -100,3 +100,9 @@
100100
# 搜索模块设置
101101
enable_recursive_search = False # 递归搜索子域
102102
search_recursive_times = 2 # 递归搜索层数
103+
104+
# 网络空间测绘引擎设置
105+
cam_records_maximum_per_domain = 1000 # 对于单个主域名,在测绘引擎中的最多查询多少条记录,防止泛解析和CDN浪费积分,对 fofa, hunter, quake, zoomeye 生效,最低为100
106+
107+
# 是否从输入的数据中使用tldextract提取主域名。若设为 False,OneForAll会直接将输入的域名作为主域名,比如北京分公司的域名 beijing.10086.com 就不会被解析成母公司的域名 10086.com
108+
use_tld_extract = True

modules/search/fofa_api.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def search(self):
2323
self.page_num = 1
2424
subdomain_encode = f'domain="{self.domain}"'.encode('utf-8')
2525
query_data = base64.b64encode(subdomain_encode)
26-
while True:
26+
while 100 * self.page_num < settings.cam_records_maximum_per_domain:
2727
time.sleep(self.delay)
2828
self.header = self.get_header()
2929
self.proxy = self.get_proxy(self.source)
@@ -32,7 +32,7 @@ def search(self):
3232
'qbase64': query_data,
3333
'page': self.page_num,
3434
'full': 'true',
35-
'size': 1000}
35+
'size': min(1000, settings.cam_records_maximum_per_domain)}
3636
resp = self.get(self.addr, query)
3737
if not resp:
3838
return
@@ -42,7 +42,7 @@ def search(self):
4242
break
4343
self.subdomains.update(subdomains)
4444
size = resp_json.get('size')
45-
if size < 1000:
45+
if size < min(1000, settings.cam_records_maximum_per_domain):
4646
break
4747
self.page_num += 1
4848

modules/search/hunter_api.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def search(self):
2222
self.page_num = 1
2323
subdomain_encode = f'domain_suffix="{self.domain}"'.encode('utf-8')
2424
query_data = base64.b64encode(subdomain_encode)
25-
while True:
25+
while 100 * self.page_num < settings.cam_records_maximum_per_domain:
2626
time.sleep(self.delay)
2727
self.header = self.get_header()
2828
self.proxy = self.get_proxy(self.source)

modules/search/quake_api.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def search(self):
2020
"""
2121
self.per_page_num = 100
2222
self.page_num = 0
23-
while True:
23+
while self.per_page_num * self.page_num < settings.cam_records_maximum_per_domain:
2424
time.sleep(self.delay)
2525
self.header = self.get_header()
2626
self.header.update({'Content-Type': 'application/json'})

modules/search/zoomeye_api.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ def search(self):
1919
"""
2020
self.per_page_num = 30
2121
self.page_num = 1
22-
while True:
22+
while self.per_page_num * self.page_num < settings.cam_records_maximum_per_domain:
2323
time.sleep(self.delay)
2424
self.header = self.get_header()
2525
self.header.update({'API-KEY': self.key})

requirements.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ certifi==2022.06.15
44
chardet==5.0.0
55
colorama==0.4.4
66
dnspython==2.2.1
7-
exrex==0.10.5
7+
exrex==0.11.0
88
fire==0.4.0
99
future==0.18.2
1010
idna==3.3
@@ -20,3 +20,4 @@ tqdm==4.64.0
2020
treelib==1.6.1
2121
urllib3==1.26.9
2222
win32-setctime==1.1.0
23+
setuptools

0 commit comments

Comments
 (0)