⚠️ 重要声明:这是一个非官方的 dnsdumpster.com API 封装库,通过抓取公共网站实现。
DNSDumpster.com 提供官方 API 套餐,适用于商业及高频使用场景。如果您需要可靠的生产级访问,请考虑其官方 API:https://dnsdumpster.com/
此非官方封装库应负责任地使用,并遵守 DNSDumpster 的服务条款。
一个用于与 dnsdumpster.com 交互以获取 DNS 记录和子域信息的 Python 客户端库。该工具适用于安全研究人员、渗透测试人员和网络管理员进行信息收集。
pip install dnsdumpster
pip install git+https://github.com/PaulSec/API-dnsdumpster.com.git
# 克隆仓库
git clone https://github.com/PaulSec/API-dnsdumpster.com
cd API-dnsdumpster.com
# 以开发模式安装
pip install -e .
# 安装开发依赖
pip install -r requirements-dev.txt
from dnsdumpster.DNSDumpsterAPI import DNSDumpsterAPI
# 初始化 API
api = DNSDumpsterAPI(verbose=True)
# 搜索域名
results = api.search('example.com')
# 访问结果
print(f"域名: {results['domain']}")
print(f"DNS 记录: {results['dns_records']['dns']}")
print(f"MX 记录: {results['dns_records']['mx']}")
print(f"NS 记录: {results['dns_records']['ns']}")
print(f"TXT 记录: {results['dns_records']['txt']}")
from dnsdumpster.DNSDumpsterAPI import DNSDumpsterAPI
api = DNSDumpsterAPI()
results = api.search('microsoft.com')
# 打印所有 A 记录(子域)
for record in results['dns_records']['dns']:
print(f"{record['host']} - {record['ip']} - {record['country']}")
import base64
results = api.search('example.com')
if results['image_data']:
with open('network_map.png', 'wb') as f:
f.write(base64.b64decode(results['image_data']))
print(f"网络拓扑图已保存!URL: {results['image_url']}")
import base64
results = api.search('example.com')
if results['xls_data']:
with open('results.xlsx', 'wb') as f:
f.write(base64.b64decode(results['xls_data']))
print("Excel 文件已保存!")
import requests
from dnsdumpster.DNSDumpsterAPI import DNSDumpsterAPI
# 创建带代理的自定义会话
session = requests.Session()
session.proxies = {
'http': 'http://proxy.example.com:8080',
'https': 'https://proxy.example.com:8080',
}
api = DNSDumpsterAPI(session=session)
results = api.search('example.com')
from dnsdumpster.DNSDumpsterAPI import (
DNSDumpsterAPI,
DNSDumpsterAPIError,
DNSDumpsterRequestError,
DNSDumpsterParseError
)
api = DNSDumpsterAPI()
try:
results = api.search('example.com')
except DNSDumpsterRequestError as e:
print(f"网络错误: {e}")
except DNSDumpsterParseError as e:
print(f"解析错误: {e}")
except DNSDumpsterAPIError as e:
print(f"API 错误: {e}")
search() 方法返回一个字典,结构如下:
{
'domain': 'example.com',
'dns_records': {
'dns': [ # A 记录(子域)
{
'host': 'subdomain.example.com',
'ip': '192.0.2.1',
'reverse_dns': 'reverse.dns.com',
'asn': 'ASN:12345',
'asn_name': 'Provider Name',
'country': 'United States',
'subnet': '192.0.2.0/24',
'open_services': '80, 443',
# 向后兼容键:
'domain': 'subdomain.example.com',
'as': 'ASN:12345',
'provider': 'Provider Name'
}
],
'mx': [ # MX 记录
{
'priority': '10',
'server': 'mail.example.com',
'ip': '198.51.100.1',
'reverse_dns': 'mail.reverse.com',
'asn': 'ASN:23456',
'asn_name': 'Mail Provider',
'country': 'Germany',
'subnet': '198.51.100.0/24'
}
],
'ns': [ # NS 记录
{
'nameserver': 'ns1.example.com',
'ip': '203.0.113.1',
'reverse_dns': 'ns1.reverse.com',
'asn': 'ASN:34567',
'asn_name': 'DNS Provider',
'country': 'United Kingdom',
'subnet': '203.0.113.0/24'
}
],
'txt': [ # TXT 记录
'v=spf1 include:_spf.example.com ~all',
'google-site-verification=abcdef123456'
],
'host': [] # NS 记录的别名(向后兼容)
},
'image_data': b'base64_encoded_image_bytes', # 或 None
'image_url': 'https://dnsdumpster.com/static/map/example.com.png',
'xls_data': b'base64_encoded_excel_bytes', # 或 None
'xls_url': 'https://dnsdumpster.com/static/xlsx/example-uuid.xlsx'
}
# 克隆仓库
git clone https://github.com/PaulSec/API-dnsdumpster.com
cd API-dnsdumpster.com
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # Windows 系统: venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt
pip install -r requirements-dev.txt
# 安装 pre-commit 钩子(可选)
pip install pre-commit
pre-commit install
# 运行所有测试
pytest
# 带覆盖率运行
pytest --cov=dnsdumpster --cov-report=html
# 运行特定测试文件
pytest tests/test_parsing.py
# 带详细输出运行
pytest -v
# 运行特定测试
pytest tests/test_parsing.py::TestRetrieveResults::test_retrieve_results_basic
# 使用 black 格式化代码
black dnsdumpster/ tests/
# 排序导入
isort dnsdumpster/ tests/
# 使用 flake8 进行代码检查
flake8 dnsdumpster/ tests/
# 使用 mypy 进行类型检查
mypy dnsdumpster/
# 运行所有质量检查
black dnsdumpster/ tests/ && isort dnsdumpster/ tests/ && flake8 dnsdumpster/ tests/ && mypy dnsdumpster/
API-dnsdumpster.com/
├── dnsdumpster/ # 主包
│ ├── __init__.py
│ ├── DNSDumpsterAPI.py # 主 API 类
│ ├── API_example.py # 使用示例
│ └── requirements.txt
├── tests/ # 测试套件
│ ├── __init__.py
│ ├── conftest.py # Pytest fixtures
│ ├── test_parsing.py # 单元测试
│ └── test_integration.py # 集成测试
├── .github/
│ └── workflows/ # CI/CD 工作流
│ ├── tests.yml
│ └── publish.yml
├── requirements.txt # 生产依赖
├── requirements-dev.txt # 开发依赖
├── setup.py # 包配置
├── README.md
└── LICENSE
我们欢迎贡献!以下是您可以提供帮助的方式:
git checkout -b feature/amazing-feature)pytest)black、flake8、mypy)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)测试单个解析方法,无需网络调用:
pytest tests/test_parsing.py -v
使用模拟 HTTP 响应测试完整 API 工作流:
pytest tests/test_integration.py -v
pytest --cov=dnsdumpster --cov-report=term-missing
该项目使用 GitHub Actions 实现:
本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。
这是一个非官方工具,与 dnsdumpster.com 无关联且未经其认可。请负责任地使用,并遵守目标网站的服务条款和 robots.txt。作者不对该工具的滥用负责。
完整版本历史请参阅 CHANGELOG.md。