想要写代码实现同IP站点查询,先要理清底层数据源。最简单的方式是反向DNS查询,读取PTR记录,但这种方式能获取的域名数量很少,单个IP一般只有一两条PTR记录,大量服务器根本不会配置PTR记录。能够列出同一个IP下几十上百个域名,依靠被动DNS数据库,这类数据库持续记录域名解析到IP的历史记录,输入IP反向检索,就能拿到当前或者曾经解析到该IP的域名。
自建被动DNS数据库工作量巨大,实际开发时,绝大多数方案调用第三方现成接口。下面梳理不同技术路线,提供可以直接运行的代码。
Python 调用第三方 API

调用公开API是最简单的方案。WebScan提供免费反查接口,返回JSON格式域名列表,代码简短:
import requests
def query_domains_by_ip(ip_address):
url = f"https://api.webscan.cc/?action=query&ip={ip_address}"
response = requests.get(url)
if response.status_code == 200:
data = response.json()
for item in data:
print(item.get('domain'))
else:
print("查询失败")
query_domains_by_ip("1.1.1.1")
APIVoid 同样提供 Reverse IP API,注册账号获取 API Key,免费调用额度有限,返回数据规整,支持分页,单页最多返回 250 个域名。采用 POST 请求,请求体携带 IP,请求头附加 Key:python运行
import requests
def apivoid_reverse_ip(ip, api_key):
url = "https://api.apivoid.com/v2/reverse-ip"
headers = {
"Content-Type": "application/json",
"X-API-Key": api_key
}
data = {"ip": ip, "page_num": 1}
resp = requests.post(url, headers=headers, json=data)
if resp.status_code == 200:
result = resp.json()
for domain in result.get("domains", []):
print(domain["name"])
国内可选站长工具 chinaz、聚合数据的 IP 反查域名接口,托管在阿里云 API 市场或是聚合开放平台,调用逻辑和上面示例一致,只需要更换接口地址和参数。站长工具接口地址https://openapi.chinaz.net/v1/1001/sameip,传递 IP 和页码参数。Python 爬取公开查询页面不想调用 API,可以直接抓取公开查询站点页面。ip138、爱站都有同 IP 网站查询页面,输入 IP 返回域名列表。优势是免费,缺点是页面改版之后代码需要同步修改,高频请求容易被封禁 IP。python运行
import requests
from bs4 import BeautifulSoup
def scrape_ip138_sameip(ip):
url = f"https://site.ip138.com/{ip}/"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}
resp = requests.get(url, headers=headers)
soup = BeautifulSoup(resp.text, "html.parser")
# 根据页面实际结构定位域名列表
for link in soup.select("ul.list li a"):
print(link.get_text())
这段代码仅作为基础框架,实际使用打开目标页面查看 HTML 结构,调整 soup.select 选择器。爬虫请求控制频率,增加time.sleep(1)延时,避免给目标服务器造成压力。PHP 实现PHP 在国内站长群体使用广泛,网上流传的同 IP 站点查询源码大多基于 PHP 开发。核心逻辑和 Python 方案相同,调用 API 或者抓取网页。典型方案对接爱站接口,AJAX 向前端返回查询结果。页面放置输入框与查询按钮,用户输入 IP 或者域名,PHP 后端调用爱站同 IP 查询接口,解析返回 JSON 中的域名列表,展示到页面。这类源码在 CSDN、各类源码站都能找到,代码质量参差不齐,部分使用老旧失效接口,拿到源码第一件事校验接口可用性。现成工具直接拿来用不想编写代码,可以选用开源工具直接运行。ip2domain是 Python 编写批量反查工具,读取 IP 文本列表,逐个查询 IP 绑定域名,额外获取百度权重、ICP 备案信息,结果导出 CSV。使用方式简单,txt 文件一行填写一个 IP,执行python ip2domain.py -f targets.txt -s 2 -r 1,-s代表请求间隔秒,-r为百度权重阈值。适合一次性批量查询几十上百个 IP。RRev是另一款 Python 工具,数据源对接 RapidDNS,支持多线程提升查询速度。Same-as-IP-website-query-tool图形化工具,提供 exe 程序双击运行,输入 IP 或者域名查询,结果自动保存 Excel。该工具 2020 年后停止更新,基础查询功能依旧可用。自己从 DNS 层面挖想要底层检索,可以从证书透明日志(Certificate Transparency)提取线索。服务器共用 SSL 证书时,证书文件会记录绑定域名。crt.sh 公开 CT 日志平台,使用 IP 检索证书,能够提取一批关联域名。这种方式获取结果不完全等同于严格意义同 IP 站点,但可以作为补充手段。命令行执行curl -s "https://crt.sh/?q=IP地址&output=json"查看返回数据,crt.sh 针对 IP 查询支持不稳定,很多场景检索不到内容。一个需要注意的地方所有方式返回的反查结果仅作为参考。共享 IP 环境,单个 IP 承载几百个域名属于常态,大量域名已经停止运营。被动 DNS 数据库存在延迟,新绑定域名需要数天甚至数周才会入库。已经删除的域名记录,还会在数据库留存很久。拿到域名列表之后,最好逐个验证域名当前解析目标 IP,使用dig +short 域名或者nslookup 域名核验,过滤失效记录。