从0到1掌握OneForAll搜索引擎子域挖掘:Google/Bing/百度实战指南

从0到1掌握OneForAll搜索引擎子域挖掘:Google/Bing/百度实战指南

【免费下载链接】OneForAll OneForAll是一款功能强大的子域收集工具 【免费下载链接】OneForAll 项目地址: https://gitcode.com/gh_mirrors/on/OneForAll

子域名收集是信息安全与域名管理的基础工作,但传统方法常面临效率低、覆盖不全的问题。OneForAll作为功能强大的子域收集工具,通过集成Google、Bing、百度等主流搜索引擎,实现了高效自动化的子域发现。本文将系统讲解搜索引擎模块的工作原理与实战技巧,帮助你快速掌握高质量子域挖掘方法。

搜索引擎模块架构解析

OneForAll的搜索引擎模块位于modules/search/目录下,包含Google、Bing、百度等16种搜索引擎实现。核心通过统一的搜索接口封装不同引擎的查询逻辑,实现标准化子域提取流程。

子域收集流程图

核心实现原理

每个搜索引擎模块继承自common/search.py基类,实现三个关键功能:

  1. 请求构造:生成符合引擎语法的搜索查询(如site:.example.com
  2. 结果解析:从HTML响应中提取子域名(通过match_subdomains方法)
  3. 反反爬机制:实现随机延迟、代理轮换和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
Bing1000条技术站点覆盖广modules/search/bing.py
Google无限制全球覆盖+递归搜索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

典型结果展示

子域收集结果展示

常见问题与解决方案

搜索结果为空

  1. 检查网络连接与代理配置
  2. 尝试减少per_page_num参数值
  3. 确认目标域名是否存在子域

频繁触发反爬

  1. 增加config/default.py中的delay
  2. 配置更高质量的代理池
  3. 减少并发请求数

模块启用/禁用

通过docs/collection_modules.md了解各模块详情,在config/api.py中配置:

enable_partial_module = [('modules.search', 'baidu'), ('modules.search', 'bing')]

总结与进阶方向

OneForAll的搜索引擎模块通过标准化接口与灵活配置,实现了子域收集的自动化与智能化。结合三大引擎的优势特性,配合递归搜索与结果过滤,可高效完成企业级域名资产梳理。

进阶学习建议:

  1. 深入研究common/search.py的核心匹配算法
  2. 扩展自定义搜索引擎模块(参考现有模块实现)
  3. 结合brute.py爆破模块实现全方位子域发现

完整使用文档请参考docs/usage_help.md,更多高级技巧可关注项目更新日志docs/changes.md

提示:定期更新工具至最新版本以获取更多搜索引擎支持与功能优化。

【免费下载链接】OneForAll OneForAll是一款功能强大的子域收集工具 【免费下载链接】OneForAll 项目地址: https://gitcode.com/gh_mirrors/on/OneForAll

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值