服务器被挂黑链,教你批量清除并防护

服务器被挂黑链是新手站长最常见的噩梦之一。
黑链通常藏在网页源文件的隐藏区域,用户看不到但搜索引擎能爬取,轻则降权,重则被封。
这篇文章我用自己的清理经验,教你用最直接的方法批量查找、清除黑链,并做好防护,保证零基础也能照做。

## 第一步:先做两件保护自己的事

登录服务器后别急着扫文件,先做备份和检查是否有后门,避免删掉关键文件后找不到恢复点。

1. **全站文件备份**:如果用宝塔,进后台点击左侧“文件”,选中网站根目录(例如 `/www/wwwroot/你的域名`),压缩成 zip 下载到本地。不用宝塔的话,用命令:
```bash
zip -r /tmp/backup_$(date +%Y%m%d).zip /www/wwwroot/你的域名
```
2. **检查是否有恶意后台**:查看 `/tmp`、`/var/tmp` 以及网站上传目录下的 `.php`、`.asp` 文件,重点关注近期修改过的文件。可以用命令 `find /www/wwwroot -name "*.php" -mtime -3` 查找最近三天内修改的 PHP 文件。

## 第二步:批量查找黑链藏身之处

黑链常见写法是 `display:none` 或 `visibility:hidden` 的隐藏代码,也可能藏在 JS 文件或数据库里。
这里我推荐最直接的方法:搜索关键词。

### 方式一:命令行 grep 搜索(推荐)

如果网站是纯静态 HTML 或者 PHP 模板,直接 SSH 到服务器,在网站根目录执行:
```bash
grep -rn "display:none" /www/wwwroot/你的域名/
```
还可以搜更具体的黑链特征,比如链接关键词 `http://` 和 `href=` 组合:
```bash
grep -rn -E "(href|src)=['\"]?http://[^'\" ]*" /www/wwwroot/你的域名/ --include="*.php" --include="*.html" --include="*.htm"
```
找到可疑文件后用 `cat` 或 `less` 查看具体行号,确认是黑链。

### 方式二:宝塔面板可视化查找

在宝塔后台左侧“文件”中进入网站目录,点击右上角“搜索”,输入 `display:none` 或 `visibility:hidden`,选择“文件内容”,就可以看到所有包含此字符串的文件。
点文件名可以快速查看并编辑。

## 第三步:批量清除黑链

确认后不要手动一个一个删,用 sed 批量替换效率最高。

### 方法一:用 sed 删除包含黑链的整行

如果黑链单独成行,直接删除该行:
```bash
sed -i '/display:none/d' /www/wwwroot/你的域名/*.php
```
如果黑链是内联样式或会被其他正常内容混杂,建议先备份,再手动编辑确认。可以用 `grep -rn` 输出精确行号,然后一个个修正。

### 方法二:替换恶意 URL 为空白

假设黑链是 `http://bad-site.com`,执行:
```bash
find /www/wwwroot/你的域名 -type f \( -name "*.php" -o -name "*.html" -o -name "*.js" \) -exec sed -i 's|http://bad-site.com||g' {} \;
```
**注意**:替换前最好先在测试环境验证,或者先在一个文件上试运行(去掉 -i 参数)。

### 方法三:在宝塔面板操作

在文件列表中找到被黑的文件,双击编辑,手动删除黑链代码。
如果文件太多,建议下载到本地用 Notepad++ 的批量查找替换功能,再上传覆盖。

## 第四步:扎好防护篱笆,防再次被挂黑链

清理只是第一步,如果不堵住入口,黑链很快会卷土重来。
新手最容易忽略以下三点:

1. **修改文件权限**。把网站目录设置为 644 或 755,避免 www 用户有写权限。用命令:
```bash
find /www/wwwroot -type d -exec chmod 755 {} \;
find /www/wwwroot -type f -exec chmod 644 {} \;
```
2. **禁用上传目录的执行权限**。如果上传目录(如 `/uploads`)不需要执行 PHP,在宝塔中选中该目录,点“权限”,去掉“执行”打钩。或者在 Nginx 配置里加:
```nginx
location /uploads {
location ~ \.php$ { deny all; }
}
```
重新加载 Nginx 生效。
3. **设置定时扫描任务**。在宝塔计划任务中添加每天凌晨执行一次:
```bash
find /www/wwwroot -name "*.php" -mtime -1 > /tmp/new_php_files.txt
```
然后检查新增 PHP 文件是否异常。

## 第五步:效果验证与常见问题

### 如何确认黑链已清除干净?

1. 用浏览器打开网站,按 F12 打开开发者工具,切换到“元素”面板,全文搜索 `display:none`、`visibility:hidden`,如果没有结果说明已清除。
2. 或者用搜索引擎的“site:你的域名”检查收录中是否还有黑链链接。

### 常见问题

Q:黑链清除后谷歌还是显示不良内容?
A:强制谷歌重新抓取:在 Google Search Console 提交“请求索引”或“验证站点”。通常需要 1-3 天更新。

Q:清理后没几天又出现黑链?
A:说明有未修复的后门。请检查数据库(如 WordPress 的 `wp_options` 表)、插件漏洞,或者 FTP 密码被泄露。建议修改所有密码并升级 CMS 到最新版。

Q:用 grep 搜不到黑链怎么办?
A:黑链可能被 base64 编码或放在数据库里。查看脚本文件底部的 eval 或 base64_decode 函数,或者使用 phpMyAdmin 导出数据库,用 `LIKE '%

分享到:
上一篇
本地部署大模型,如何限制访问防止滥用?
下一篇
宝塔面板 Nginx 反向代理配置错误,网站无法访问
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意