从0到1掌握OneForAll搜索引擎子域挖掘:Google/Bing/百度实战指南
【免费下载链接】OneForAll OneForAll是一款功能强大的子域收集工具 项目地址: https://gitcode.com/gh_mirrors/on/OneForAll
子域名收集是信息安全与域名管理的基础工作,但传统方法常面临效率低、覆盖不全的问题。OneForAll作为功能强大的子域收集工具,通过集成Google、Bing、百度等主流搜索引擎,实现了高效自动化的子域发现。本文将系统讲解搜索引擎模块的工作原理与实战技巧,帮助你快速掌握高质量子域挖掘方法。
搜索引擎模块架构解析
OneForAll的搜索引擎模块位于modules/search/目录下,包含Google、Bing、百度等16种搜索引擎实现。核心通过统一的搜索接口封装不同引擎的查询逻辑,实现标准化子域提取流程。
核心实现原理
每个搜索引擎模块继承自common/search.py基类,实现三个关键功能:
- 请求构造:生成符合引擎语法的搜索查询(如
site:.example.com) - 结果解析:从HTML响应中提取子域名(通过match_subdomains方法)
- 反反爬机制:实现随机延迟、代理轮换和Cookie维持
以Google搜索模块为例,其核心代码展示了典型实现:
def search(self, domain, filtered_subdomain=''):
word = 'site:.' + domain + filtered_subdomain # 构造搜索语法
payload = {'q': word, 'start': page_num, 'num': per_page_num} # 分页参数
resp = self.get(url=self.addr, params=payload) # 发送请求
subdomains = self.match_subdomains(resp, fuzzy=False) # 提取子域
三大引擎实战配置与对比
百度搜索模块深度解析
百度模块针对中文域名优化了特殊处理逻辑,解决了长域名显示不全问题:
if len(domain) > 12: # 长域名处理
subdomains = self.redirect_match(resp.text) # 获取跳转URL的Location
else:
subdomains = self.match_subdomains(resp, fuzzy=False)
百度搜索无需代理,直接配置即可使用,适合国内用户快速收集本土域名的子域信息。
Bing搜索高效配置
Bing模块支持高达1000条结果的深度搜索,通过limit_num参数控制:
self.limit_num = 1000 # 限制搜索条数
params = {'q': query, 'first': self.page_num, 'count': self.per_page_num}
Bing搜索结果通常包含较多样本,且对技术类网站覆盖全面,是Google的理想替代方案。
Google搜索高级配置
使用Google搜索需在config/api.py配置代理:
enable_proxy = True
proxy_partial_module = ['GoogleSearch'] # 仅代理Google模块
Google模块通过recursive_search参数支持子域递归挖掘,可发现更深层级的子域名:
if self.recursive_search:
for subdomain in self.recursive_subdomain():
self.search(subdomain) # 递归搜索下一层子域
引擎特性对比表
| 搜索引擎 | 代理需求 | 结果数量 | 特色优势 | 核心配置文件 |
|---|---|---|---|---|
| 百度 | 否 | 750条 | 中文域名优化 | modules/search/baidu.py |
| Bing | 否 | 1000条 | 技术站点覆盖广 | modules/search/bing.py |
| 是 | 无限制 | 全球覆盖+递归搜索 | modules/search/google.py |
高级搜索技巧与最佳实践
精准过滤语法
通过filtered_subdomain参数排除冗余结果,提升搜索效率:
# 排除包含blog的子域
for statement in self.filter(self.domain, self.subdomains):
self.search(self.domain, filtered_subdomain=statement)
多引擎协同策略
在config/api.py中配置多引擎组合:
enable_all_module = False
enable_partial_module = [('modules.search', 'baidu'),
('modules.search', 'bing'),
('modules.search', 'google')]
性能优化参数
调整并发与延迟参数平衡速度与反爬(位于config/default.py):
delay = 3 # 搜索间隔(秒)
per_page_num = 50 # 每页结果数
实战案例:企业级子域收集流程
标准执行命令
# 基础用法
python oneforall.py --target example.com run
# 高级配置:多引擎+递归搜索
python oneforall.py --target example.com --engine baidu,bing,google --recursive True run
结果导出与分析
默认结果存储于数据库,可通过export.py导出为CSV格式:
python export.py --target example.com --format csv --path ./result.csv
典型结果展示
常见问题与解决方案
搜索结果为空
- 检查网络连接与代理配置
- 尝试减少
per_page_num参数值 - 确认目标域名是否存在子域
频繁触发反爬
- 增加config/default.py中的
delay值 - 配置更高质量的代理池
- 减少并发请求数
模块启用/禁用
通过docs/collection_modules.md了解各模块详情,在config/api.py中配置:
enable_partial_module = [('modules.search', 'baidu'), ('modules.search', 'bing')]
总结与进阶方向
OneForAll的搜索引擎模块通过标准化接口与灵活配置,实现了子域收集的自动化与智能化。结合三大引擎的优势特性,配合递归搜索与结果过滤,可高效完成企业级域名资产梳理。
进阶学习建议:
- 深入研究common/search.py的核心匹配算法
- 扩展自定义搜索引擎模块(参考现有模块实现)
- 结合brute.py爆破模块实现全方位子域发现
完整使用文档请参考docs/usage_help.md,更多高级技巧可关注项目更新日志docs/changes.md。
提示:定期更新工具至最新版本以获取更多搜索引擎支持与功能优化。
【免费下载链接】OneForAll OneForAll是一款功能强大的子域收集工具 项目地址: https://gitcode.com/gh_mirrors/on/OneForAll
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




