如何写一个脚本禁止访问网站

wen 实用脚本 2

本文目录导读:

如何写一个脚本禁止访问网站

  1. Windows Hosts文件屏蔽(最简单)
  2. Python脚本(跨平台)
  3. Linux/Unix iptables防火墙
  4. 浏览器扩展脚本(Chrome)
  5. PowerShell脚本(Windows)
  6. Node.js代理屏蔽脚本
  7. 使用建议:

Windows Hosts文件屏蔽(最简单)

@echo off
:: 以管理员身份运行
echo 127.0.0.1 www.example.com >> %SystemRoot%\System32\drivers\etc\hosts
echo 127.0.0.1 example.com >> %SystemRoot%\System32\drivers\etc\hosts
echo 已屏蔽指定网站
pause

Python脚本(跨平台)

import socket
import sys
def block_website(website):
    try:
        # 获取网站IP
        ip = socket.gethostbyname(website)
        # 这里可以添加到防火墙规则
        print(f"网站 {website} 的IP为: {ip}")
        # Windows防火墙示例
        import subprocess
        cmd = f'netsh advfirewall firewall add rule name="Block {website}" dir=out action=block remoteip={ip}'
        subprocess.run(cmd, shell=True)
        print(f"已屏蔽 {website}")
    except Exception as e:
        print(f"错误: {e}")
if __name__ == "__main__":
    sites = ["www.example.com", "example.com"]
    for site in sites:
        block_website(site)

Linux/Unix iptables防火墙

#!/bin/bash
# 屏蔽单个网站
iptables -A OUTPUT -d www.example.com -j DROP
# 批量屏蔽
for site in "example.com" "test.com" "blocked.com"; do
    iptables -A OUTPUT -d $site -j DROP
done
# 保存规则
iptables-save > /etc/iptables/rules.v4

浏览器扩展脚本(Chrome)

// manifest.json
{
  "manifest_version": 3,
  "name": "网站屏蔽器",
  "version": "1.0",
  "permissions": ["webRequest", "webRequestBlocking"],
  "host_permissions": ["*://*/*"],
  "background": {
    "service_worker": "background.js"
  }
}
// background.js
chrome.webRequest.onBeforeRequest.addListener(
  function(details) {
    const blockedSites = ["example.com", "bad-site.com"];
    const url = new URL(details.url);
    if (blockedSites.some(site => url.hostname.includes(site))) {
      return {cancel: true};
    }
    return {cancel: false};
  },
  {urls: ["<all_urls>"]},
  ["blocking"]
);

PowerShell脚本(Windows)

# 需要管理员权限
$sitesToBlock = @("www.example.com", "example.com", "blocked-site.com")
foreach ($site in $sitesToBlock) {
    $ip = [System.Net.Dns]::GetHostAddresses($site)[0].IPAddressToString
    $ruleName = "Block $site"
    # 创建出站规则
    netsh advfirewall firewall add rule name="$ruleName" dir=out action=block remoteip="$ip"
    Write-Host "已屏蔽: $site ($ip)"
}

Node.js代理屏蔽脚本

const http = require('http');
const url = require('url');
const blockedSites = ['example.com', 'blocked-site.com'];
const server = http.createServer((req, res) => {
    const hostname = url.parse(req.url).hostname;
    if (blockedSites.some(site => hostname && hostname.includes(site))) {
        res.writeHead(403);
        res.end('该网站已被屏蔽');
    } else {
        // 正常转发请求
    }
});
server.listen(8080);

使用建议:

  • 家庭/教育场景:推荐使用Hosts文件或浏览器扩展
  • 企业网络:推荐使用防火墙规则或代理服务器
  • 开发者测试:推荐使用Python或Node.js脚本

选择适合你的场景的方法,记得以管理员/root权限运行脚本才能生效。

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