
عميل Python لموقع dnsdumpster.com لاسترجاع سجلات DNS والنطاقات الفرعية وخرائط الشبكة لأغراض الاستطلاع والبحث الأمني.
⚠️ إخلاء مسؤولية مهم: هذه غلاف غير رسمي لواجهة برمجة تطبيقات dnsdumpster.com يقوم بجمع البيانات من الموقع العام.
يقدم DNSDumpster.com خطة واجهة برمجة تطبيقات رسمية للاستخدام التجاري والثقيل. إذا كنت بحاجة إلى وصول موثوق ومناسب للإنتاج، يرجى النظر في واجهتهم الرسمية: https://dnsdumpster.com/
يجب استخدام هذا الغلاف غير الرسمي بمسؤولية ووفقًا لشروط خدمة DNSDumpster.
مكتبة عميل بلغة Python للتفاعل مع dnsdumpster.com لاسترجاع سجلات DNS ومعلومات النطاقات الفرعية. هذه الأداة مفيدة لباحثي الأمن، ومختبري الاختراق، ومسؤولي الشبكات لأغراض الاستطلاع.
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 = DNSDumpsterAPI(verbose=True)
# البحث عن نطاق
results = api.search('example.com')
# الوصول إلى النتائج
print(f"Domain: {results['domain']}")
print(f"DNS Records: {results['dns_records']['dns']}")
print(f"MX Records: {results['dns_records']['mx']}")
print(f"NS Records: {results['dns_records']['ns']}")
print(f"TXT Records: {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"Network map saved! 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 file saved!")
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"Network error: {e}")
except DNSDumpsterParseError as e:
print(f"Parsing error: {e}")
except DNSDumpsterAPIError as e:
print(f"API error: {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
# تثبيت خطافات ما قبل الالتزام (اختياري)
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_example.py # مثال الاستخدام
│ └── requirements.txt
├── tests/ # مجموعة الاختبارات
│ ├── __init__.py
│ ├── conftest.py # أدوات pytest
│ ├── 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 محاكاة:
pytest tests/test_integration.py -v
pytest --cov=dnsdumpster --cov-report=term-missing
يستخدم المشروع GitHub Actions من أجل:
هذا المشروع مرخص بموجب رخصة MIT - راجع ملف LICENSE للتفاصيل.
هذه أداة غير رسمية وليست تابعة أو معتمدة من dnsdumpster.com. استخدمها بمسؤولية ووفقًا لشروط خدمة الموقع المستهدف و robots.txt. المؤلفون غير مسؤولين عن سوء استخدام هذه الأداة.
راجع CHANGELOG.md لتاريخ الإصدارات الكامل.