
本文介绍如何绕过前端 javascript 渲染限制,使用 requests 直接获取 whois.com 等动态站点的真实 whois 数据,避免依赖浏览器自动化工具,兼顾效率与稳定性。
本文介绍如何绕过前端 javascript 渲染限制,使用 requests 直接获取 whois.com 等动态站点的真实 whois 数据,避免依赖浏览器自动化工具,兼顾效率与稳定性。
在实际网络数据采集场景中,许多 WHOIS 查询网站(如 whois.com)看似“动态加载”,实则采用服务端渲染(SSR)或静态 HTML 注入方式——即目标数据早已存在于初始 HTML 响应中,并非由前端 JavaScript 异步拉取。用户误以为需 Selenium 是因未区分“视觉动态”与“真实异步请求”。以查询 tinymail.com 为例:https://www.php.cn/link/576fe2a764389ae05931dd1f11ab6566tinymail.com 的完整 WHOIS 内容在服务器返回的 HTML 中已存在,仅需正确发起 HTTP 请求并解析即可。
以下为推荐实践方案:
✅ 正确做法:用 requests 直接请求目标 URL
import requests
from bs4 import BeautifulSoup
domain = "tinymail.com"
url = f"https://www.php.cn/link/576fe2a764389ae05931dd1f11ab6566{domain}"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}
try:
r = requests.get(url, headers=headers, timeout=10)
r.raise_for_status() # 检查 HTTP 错误状态码
# 解析 HTML 获取 WHOIS 数据块(通常在 <pre class="brush:php;toolbar:false;"> 或 .whois-result 标签内)
soup = BeautifulSoup(r.text, "html.parser")
whois_pre = soup.find("pre", class_="df-raw") or soup.find("pre")
if whois_pre:
print(whois_pre.get_text(strip=True))
else:
print("⚠️ 未找到 WHOIS 数据区域,请检查页面结构是否变更")
except requests.exceptions.RequestException as e:
print(f"请求失败:{e}")? 关键提示:
- whois.com 实际采用服务端生成 HTML,
标签内即为原始 WHOIS 文本; </li><li>务必添加合理的 User-Agent 头,否则可能被拒绝访问(返回 403); </li><li>不要尝试解析 <div id="resultData"> 等空容器——其内容由 JS 注入,但 requests 获取的是初始 HTML,<strong>真实数据已在 <pre class="brush:php;toolbar:false;"> 中</strong>。</li></ul></blockquote><h3>⚠️ 注意事项与替代建议</h3><ul><li><strong>反爬策略变化风险</strong>:whois.com 可能升级为纯客户端渲染(CSR),此时 requests 将失效。若发现 <pre class="brush:php;toolbar:false;"> 标签消失或内容为空,应优先检查网页源码(Ctrl+U),确认数据是否存在;</li><li><strong>更稳定方案:使用官方 WHOIS API</strong><br /> whois.com 提供 <a href="https://www.php.cn/link/5e45ee43ad4c583428f4381f141c836d" rel="nofollow" target="_blank" >API 服务</a>(含免费层),返回结构化 JSON,无渲染干扰且支持批量查询:<pre class="brush:php;toolbar:false;"># 示例(需注册获取 API Key) api_key = "YOUR_API_KEY" api_url = f"https://www.php.cn/link/5e45ee43ad4c583428f4381f141c836dwhoisserver/WhoisService?apiKey={api_key}&domainName={domain}&outputFormat=JSON"- 法律与合规提醒:批量抓取需遵守 robots.txt(https://www.php.cn/link/3657c03dc0858448ac7cb3099d4c1d3b)、服务条款及 GDPR/CCPA 等隐私法规,建议控制请求频率(≥2s 间隔)并注明合理 User-Agent。
综上,面对“看似动态实则静态”的 WHOIS 页面,优先用 requests + BeautifulSoup 直接解析原始 HTML,既轻量又高效;仅当页面彻底转向 CSR 或遭遇强反爬时,再考虑 API 或无头浏览器方案。










