aliases:
tags:
author: Aura Service
created: 2025-07-21T14:10:26
updated: 2025-07-21T14:10:26
域名批量打标分类工具
一、工具概述
本工具是一款用于批量处理域名的自动化脚本,支持域名有效性检测、IP解析、ICP备案信息查询、页面内容抓取及分类打标等功能,并将处理结果存储至数据库,同时提供进度监控与邮件通知能力。工具基于Python开发,通过多线程并发提升处理效率,适用于域名信息采集、合规检测、分类归档等场景。
二、核心功能
- 工具通过可配置的功能开关,灵活支持以下核心能力:
功能类别 | 具体能力 |
---|---|
域名基础信息获取 | 检测域名有效性(支持HTTP/HTTPS协议判断)、解析域名对应IP地址 |
网络信息查询 | 获取IP归属地及运营商信息、查询域名ICP备案信息(单位名称、备案号、时间等) |
页面内容处理 | 抓取页面HTML内容、提取纯文本及JS代码、基于关键词自动分类打标 |
自动化与监控 | 多线程并发处理、数据库存储结果、定时进度汇报、异常邮件通知 |
- 根据接口不同所以内置了纯json解析、HTML解析、chromedrive解析几种形式,以解决接口频繁等问题。
三、核心配置说明
工具通过配置参数控制运行逻辑,核心参数如下(位于代码开头):
1. 功能开关配置
用于控制是否启用特定功能,按需设置True/False
:
复制代码 隐藏代码
resolve_ip_flag = False # 解析域名IP地址
get_ip_info_flag = False # 获取IP归属地信息
get_icp_info_flag = True # 获取ICP备案信息
is_valid_falg = False # 检测域名有效性及协议
get_page_flag = False # 页面内容抓取及解析
get_page_chrome_flag = True # 是否用ChromeDriver抓取页面(反爬友好)
2. 数据库与邮件配置
复制代码 隐藏代码
# 数据库连接地址(格式:mysql+pymysql://用户名:密码@地址:端口/数据库名)
DATABASE_URI = 'mysql+pymysql://databasename:username@ipordomain:3306/domain?charset=utf8mb4'
# 邮件通知配置(用于进度汇报、错误提醒)
email_sender = 'senderemail@163.com' # 发送邮箱
email_sender_pwd = 'senderpwd' # 邮箱授权码(非登录密码)
email_to_reciver = 'xxx@qq.com,yyy@qq.com' # 接收邮箱(多个用逗号分隔)
3. 并发与监控配置
复制代码 隐藏代码
MAX_THREADS = 20 # 最大并发线程数(根据服务器性能调整)
wathc_dog_flag = False # 是否启用进度监控(定时邮件汇报)
watch_dog_time = 1800 # 监控间隔时间(秒,默认30分钟)
skip_wait_time = 300 # API超时后跳过请求的时间(秒,避免频繁失败)
四、核心逻辑与流程
工具运行流程清晰,基于多线程并发处理域名,核心步骤如下:
-
初始化准备
建立数据库连接(通过SQLAlchemy),创建会话用于读取待处理域名和存储结果;启动进度监控线程(若启用)。 -
域名获取
从数据库中筛选待处理域名,默认条件为:已验证有效(validity≠invalid
)且ICP备案信息缺失(licence_num
为None/暂无/未知
)。 -
并发处理
通过线程池(ThreadPoolExecutor
)调用process_domain
函数,按配置开关依次执行:复制代码 隐藏代码
graph LR A[域名有效性检测] --> B[IP解析] B --> C[IP归属地获取] C --> D[ICP备案信息查询] D --> E[页面内容抓取] E --> F[分类打标] F --> G[结果存储至数据库]
-
结果存储与监控
处理结果(IP、ICP信息、页面内容、分类标签等)实时更新至数据库;监控线程定时统计处理进度,通过邮件发送汇报。
五、使用指南
1. 环境准备
- 依赖安装:
执行以下命令安装所需库:复制代码 隐藏代码
pip install requests beautifulsoup4 sqlalchemy fake_useragent selenium chromedriver-autoinstaller pymysql
- 数据库准备:
需提前创建MySQL数据库,表结构需与代码中Domain
类匹配(至少包含domain
、ip
、licence_num
、page_type
等字段)。 - 浏览器配置:
若启用get_page_chrome_flag
,需安装Chrome浏览器(chromedriver-autoinstaller
会自动匹配驱动)。
2. 配置修改
- 功能开关:根据需求开启所需功能(例如仅需ICP备案查询则设
get_icp_info_flag=True
)。 - 数据库连接:修改
DATABASE_URI
为实际数据库地址,格式为:mysql+pymysql://用户名:密码@数据库IP:端口/数据库名?charset=utf8mb4
。 - 邮件配置:
email_sender
:填写发送邮箱(如163邮箱);email_sender_pwd
:填写邮箱授权码(需在邮箱设置中开启SMTP服务);email_to_reciver
:填写接收通知的邮箱(多个用逗号分隔)。
3. 运行步骤
- 导入域名数据:
向数据库domain
表中导入待处理域名,示例SQL:复制代码 隐藏代码
INSERT INTO domain (domain) VALUES ('example.com'), ('test.gov.cn');
- 启动工具:
执行脚本:复制代码 隐藏代码
python main.py
- 查看结果:
处理完成后,数据库中domain
表将更新字段:ip
(IP地址)、licence_num
(ICP备案号)、page_type
(分类标签)等。
4. 注意事项
- API稳定性:工具依赖第三方免费API获取ICP/IP信息,可能存在不稳定或限流,建议避免高频次请求。
- 线程控制:
MAX_THREADS
需根据服务器性能调整(建议≤50),避免数据库连接溢出。 - 反爬规避:页面抓取启用
get_page_chrome_flag
可降低被反爬概率,若仍失败可延长请求间隔。
六、域名来源说明
工具默认从数据库获取待处理域名,具体逻辑如下:
- 查询条件:通过
session.query(Domain).filter(...)
筛选满足以下条件的域名:- 已验证为有效(
validity≠invalid
); - ICP备案信息缺失(
licence_num
为None/暂无/未知
)。
- 已验证为有效(
- 扩展来源:若需从其他渠道获取域名(如文本文件),可扩展代码:
复制代码 隐藏代码
# 从文本文件读取域名 def read_domains_from_file(file_path): with open(file_path, 'r') as f: return [line.strip() for line in f if line.strip()] domains = read_domains_from_file('domains.txt') # 替换数据库查询逻辑
七、免责声明
- 本代码为个人编写,仅供学习研究使用,不保证完整性或准确性。
- 工具中使用的第三方API来源于网络收集,其可用性、数据准确性无法保证,可能存在随时失效风险,作者不承担责任。
- 功能实现基于作者当时需求,可能存在逻辑漏洞,生产环境使用前需全面测试,并替换为稳定API服务。
- 使用本工具需遵守相关法律法规,不得用于非法用途,用户自行承担使用风险。
通过本工具,可高效完成域名批量信息采集与分类,助力域名管理、合规检测等场景。如需扩展功能(如新增分类标签、对接其他API),可基于现有框架进行二次开发。
八、代码下载地址
下载:https://wwcy.lanzouq.com/ivD1H31hrkfe 密码:52pj 解压密码:52pj
暂无评论内容