怎么用脚本获取网页状态码

wen 实用脚本 2

本文目录导读:

怎么用脚本获取网页状态码

  1. 使用 curl(命令行)
  2. Python 脚本
  3. Node.js 脚本
  4. Bash 脚本(批量检测)
  5. PowerShell 脚本(Windows)
  6. 快速在线检测(使用 curl 一行命令)
  7. 注意事项

使用 curl(命令行)

# 只获取状态码
curl -s -o /dev/null -w "%{http_code}" https://example.com
# 更详细的输出
curl -I https://example.com 2>/dev/null | head -n 1

Python 脚本

import requests
from urllib.request import urlopen
import urllib.error
# 方法1:使用 requests 库
def get_status_code_requests(url):
    try:
        response = requests.get(url, timeout=5)
        return response.status_code
    except requests.exceptions.RequestException as e:
        return f"Error: {e}"
# 方法2:使用 urllib
def get_status_code_urllib(url):
    try:
        conn = urlopen(url, timeout=5)
        return conn.getcode()
    except urllib.error.HTTPError as e:
        return e.code
    except urllib.error.URLError as e:
        return f"Error: {e.reason}"
# 批量检测
urls = [
    "https://www.google.com",
    "https://www.github.com",
    "https://www.nonexistent.com"
]
for url in urls:
    status = get_status_code_requests(url)
    print(f"{url}: {status}")

Node.js 脚本

const https = require('https');
const http = require('http');
// 获取状态码
function getStatusCode(url) {
    return new Promise((resolve, reject) => {
        const protocol = url.startsWith('https') ? https : http;
        protocol.get(url, (response) => {
            resolve(response.statusCode);
        }).on('error', (err) => {
            reject(err.message);
        });
    });
}
// 使用 async/await
async function checkUrls() {
    const urls = [
        'https://www.google.com',
        'https://www.github.com'
    ];
    for (const url of urls) {
        try {
            const status = await getStatusCode(url);
            console.log(`${url}: ${status}`);
        } catch (error) {
            console.log(`${url}: Error - ${error}`);
        }
    }
}
checkUrls();

Bash 脚本(批量检测)

#!/bin/bash
# 检查单个URL
check_url() {
    local url=$1
    local status=$(curl -s -o /dev/null -w "%{http_code}" --connect-timeout 5 "$url")
    echo "$url -> $status"
}
# 批量检查
urls=(
    "https://www.google.com"
    "https://www.github.com"
    "https://www.nonexistent.com"
)
for url in "${urls[@]}"; do
    check_url "$url"
done

PowerShell 脚本(Windows)

# 检查单个URL
function Get-StatusCode {
    param($url)
    try {
        $response = Invoke-WebRequest -Uri $url -Method Head -TimeoutSec 5
        return $response.StatusCode
    }
    catch {
        if ($_.Exception.Response) {
            return $_.Exception.Response.StatusCode.value__
        }
        return "Error: $($_.Exception.Message)"
    }
}
# 批量检查
$urls = @(
    "https://www.google.com",
    "https://www.github.com"
)
foreach ($url in $urls) {
    $status = Get-StatusCode $url
    Write-Host "$url : $status"
}

快速在线检测(使用 curl 一行命令)

# 检测单个
curl -s -o /dev/null -w "%{http_code}" URL
# 检测多个并输出
for url in https://google.com https://github.com; do 
    echo "$url: $(curl -s -o /dev/null -w '%{http_code}' $url)"
done

注意事项

  1. 常用状态码

    • 200:成功
    • 301/302:重定向
    • 403:禁止访问
    • 404:未找到
    • 500:服务器错误
    • 503:服务不可用
  2. 超时设置:建议设置超时时间,避免脚本卡住

  3. 错误处理:考虑网络问题、DNS解析失败等情况

  4. 请求限制:大量请求时注意添加延迟,避免被封IP

最简单的方案是使用 curl 命令,一行代码就能获取状态码,如果需要编程集成,Python 的 requests 库最为方便。

抱歉,评论功能暂时关闭!