本文目录导读:

- Windows Hosts文件屏蔽(最简单)
- Python脚本(跨平台)
- Linux/Unix iptables防火墙
- 浏览器扩展脚本(Chrome)
- PowerShell脚本(Windows)
- Node.js代理屏蔽脚本
- 使用建议:
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权限运行脚本才能生效。