如何用Python区分返回404与200状态码的子域名?
筛选返回404状态码的子域名
我来帮你搞定这个需求——从你的子域名列表里挑出返回404状态码的条目其实很简单,咱们一步步来实现:
核心思路
我们需要遍历每个子域名,发送HTTP请求获取它的响应状态码,然后筛选出状态码等于404的条目。为了避免请求失败导致程序崩溃,还要加上异常处理逻辑。
完整代码实现
首先确保你已经安装了requests库(用来发送HTTP请求),如果没装的话,先执行:
pip install requests
然后用下面的代码来筛选:
import requests # 你的子域名列表(可以继续添加更多条目) subdomains = [ "https://teyrtguhigkfjn.s3.amazonaws.com/", "http://google.com", # 这里补充你的其他子域名 ] # 存储筛选出的404子域名 found_404 = [] for domain in subdomains: try: # 用HEAD请求更高效,只获取响应头不下载内容 resp = requests.head(domain, timeout=5) if resp.status_code == 404: found_404.append(domain) except requests.exceptions.RequestException as err: # 捕获请求异常,比如超时、域名不存在等 print(f"处理 {domain} 时出错: {err}") # 输出结果 print("\n返回404状态码的子域名:") for item in found_404: print(item)
一些优化说明
- 为什么用
HEAD请求?因为我们只需要状态码,HEAD请求不需要下载响应体,速度更快,也能节省带宽资源。 - 如果遇到某些服务器不支持HEAD请求的情况,你可以把
requests.head()换成requests.get(),同时加上stream=True来避免下载大体积的响应内容:resp = requests.get(domain, timeout=5, stream=True) timeout=5是设置请求超时时间,避免某个域名卡住整个程序。
内容的提问来源于stack exchange,提问作者Utkarsh Agrawal
相关产品推荐
相关产品推荐

