以下是将原 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)

代码说明

  1. 域名列表配置

    • domain_list 列表中,您可以添加您需要检测的域名,格式为字符串列表。
  2. API URL 模板

    • api_url_template 中存储了接口请求的模板,在构造请求 URL 时,利用 format() 将域名插入 URL 中。
  3. send_request 函数

    • 使用 requests.get() 发送 HTTP 请求,并捕获任何异常(如网络问题或请求失败)。该函数返回 requests 对象,如果请求失败,则返回 None
  4. check_domain_status 函数

    • 该函数接受一个域名,构造请求 URL 并调用 send_request() 函数发送请求。它通过检查响应的状态码和返回内容来判断域名是否被封禁。
    • 如果接口响应中包含 "域名被封",则返回 "可能已被封禁";否则,返回 "状态正常"。
  5. check_multiple_domains 函数

    • 这个函数用于批量检查多个域名的封禁状态,遍历 domain_list 中的每个域名,并调用 check_domain_status() 函数输出结果。

使用说明

  1. 安装依赖
    如果您没有安装 requests 库,请先运行以下命令安装:

    pip install requests
  2. 修改域名列表
    domain_list 列表中,您可以添加您需要检测的域名。示例:

    domain_list = ['example.com', 'yourdomain.com', 'somedomain.com']
  3. 运行脚本

    • 将此 Python 脚本保存为 .py 文件(例如 check_domain_status.py),然后通过命令行运行:

      python check_domain_status.py
  4. 查看输出结果
    脚本运行后,它会输出每个域名的封禁状态。如果域名被封禁,会显示:

    域名 example.com 可能已被封禁

    如果域名状态正常,会显示:

    域名 anotherdomain.com 状态正常

常见问题和解决方案

  1. 请求失败
    如果接口请求失败或返回异常,可以检查 API URL 是否正确,或者检查是否存在网络问题。
  2. 请求超时
    如果脚本频繁遇到超时错误,您可以尝试增加 timeout 参数的值,或者检查网络连接和 API 服务器的稳定性。
  3. SSL 验证问题
    如果遇到 SSL 证书验证问题,您可以通过 requests.get(url, verify=False) 来禁用 SSL 验证,但这不推荐在生产环境中使用。

1 声望2 粉丝

引用和评论

0 条评论