以下是将原 PHP 脚本转换为 Python 版本的代码。我们将使用 requests
库来处理 HTTP 请求,urllib.parse
用于 URL 编码。
Python 代码实现
import requests
from urllib.parse import quote
# 配置项:待检测的域名列表
domain_list = [
'example.com', # 请替换为实际的域名
'anotherdomain.com', # 请替换为实际的域名
# 添加更多需要检查的域名
]
# 配置 API 请求的 URL 模板
api_url_template = "https://down.ychengsnsm.com/wx/?url={}"
# 发送 HTTP 请求并获取响应
def send_request(url):
try:
response = requests.get(url, timeout=30)
return response
except requests.RequestException as e:
return None
# 检查单个域名的封禁状态
def check_domain_status(domain):
# 构建 API 请求 URL
api_url = api_url_template.format(quote(domain))
# 发送请求并获取响应
response = send_request(api_url)
if response and response.status_code == 200:
# 判断响应内容是否包含 "域名被封"
if "域名被封" in response.text:
return f"域名 {domain} 可能已被封禁"
else:
return f"域名 {domain} 状态正常"
else:
return f"域名 {domain} 请求失败或无法访问"
# 批量检测域名状态
def check_multiple_domains(domains):
for domain in domains:
status = check_domain_status(domain)
print(status)
# 执行检测
check_multiple_domains(domain_list)
代码说明
域名列表配置:
- 在
domain_list
列表中,您可以添加您需要检测的域名,格式为字符串列表。
- 在
API URL 模板:
api_url_template
中存储了接口请求的模板,在构造请求 URL 时,利用format()
将域名插入 URL 中。
send_request 函数:
- 使用
requests.get()
发送 HTTP 请求,并捕获任何异常(如网络问题或请求失败)。该函数返回requests
对象,如果请求失败,则返回None
。
- 使用
check_domain_status 函数:
- 该函数接受一个域名,构造请求 URL 并调用
send_request()
函数发送请求。它通过检查响应的状态码和返回内容来判断域名是否被封禁。 - 如果接口响应中包含 "域名被封",则返回 "可能已被封禁";否则,返回 "状态正常"。
- 该函数接受一个域名,构造请求 URL 并调用
check_multiple_domains 函数:
- 这个函数用于批量检查多个域名的封禁状态,遍历
domain_list
中的每个域名,并调用check_domain_status()
函数输出结果。
- 这个函数用于批量检查多个域名的封禁状态,遍历
使用说明
安装依赖:
如果您没有安装requests
库,请先运行以下命令安装:pip install requests
修改域名列表:
在domain_list
列表中,您可以添加您需要检测的域名。示例:domain_list = ['example.com', 'yourdomain.com', 'somedomain.com']
运行脚本:
将此 Python 脚本保存为
.py
文件(例如check_domain_status.py
),然后通过命令行运行:python check_domain_status.py
查看输出结果:
脚本运行后,它会输出每个域名的封禁状态。如果域名被封禁,会显示:域名 example.com 可能已被封禁
如果域名状态正常,会显示:
域名 anotherdomain.com 状态正常
常见问题和解决方案
- 请求失败:
如果接口请求失败或返回异常,可以检查 API URL 是否正确,或者检查是否存在网络问题。 - 请求超时:
如果脚本频繁遇到超时错误,您可以尝试增加timeout
参数的值,或者检查网络连接和 API 服务器的稳定性。 - SSL 验证问题:
如果遇到 SSL 证书验证问题,您可以通过requests.get(url, verify=False)
来禁用 SSL 验证,但这不推荐在生产环境中使用。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。