首页 > 代码

Nginx服务器限制蜘蛛爬虫\过度分页\阻止执行 uploads 里的 php

【拒绝恶意蜘蛛爬虫】
/www/server/panel/vhost/nginx下找到如wenxian8.com.conf
(也可以:在宝塔-网站-设置-设置文件内) 加上下面代码防恶意蜘蛛爬虫,
注意:在server { 内, 且在location之前,


# 拒绝常见恶意爬虫、采集器、扫描器
if ($http_user_agent ~* "(amazonbot|ClaudeBot|AhrefsBot|SemrushBot|DotBot|MJ12bot|PetalBot|YandexBot|spbot|Bytespider|ClaudeBot|Exabot|MegaIndex|SeznamBot|Trendictionbot|ZoominfoBot|python-requests|Go-http-client|curl|wget|httpclient|libwww-perl|Java|DataForSeoBot|Applebot|dataforseo-bot|gptbot)") {
    return 403;
}

注意千万别拦截:AppleWebKit ,一栏就全部打不开,4个小时的教训


【Nginx端 拒绝大量高页码访问】
如 /page/582、/page/685
很可能是爬虫在试图穷举所有分页地址,属于“伪静态深度爬虫”行为,这种行为会给数据库和服务器带来极大负载。
建议的防护措施:
一、限制分页深度,防止无限翻页导致数据库崩溃。
Nginx 限制分页最大页数(如超过 30 页直接返回 404)适用于 Nginx 伪静态规则(推荐)
在你每个站点的 Nginx 配置文件(如 /www/server/panel/vhost/nginx/shu29.com.conf)中,server{} 块内添加:
(这个很有可能至伪静态失效)


# 只限制 /page/xxx 分页路径(排除 /tag/... 或 /category/...)
if ($request_uri ~ "^/page/([3-9][0-9]|[1-9][0-9]{2,})/?$") {
    return 404;
}

# 禁止列目录
autoindex off;

# 阻止执行 uploads 里的 php(强烈建议)
location ~* ^/wp-content/uploads/.*\.php$ {
    deny all;
}

二、在wordpress内的functions.php加入


// 限制前台分页最大为 30 页(首页、归档、搜索)
add_action('template_redirect', function () {
  if (is_admin()) return;
  $max_page = 30;
  $paged = (int) get_query_var('paged');
  if ((is_home() || is_archive() || is_search()) && $paged > $max_page) {
    wp_redirect(home_url());
    exit;
  }
});

// 阻止大分页查询执行,节省数据库资源
add_action('pre_get_posts', function($query) {
  if (!is_admin() && $query->is_main_query()) {
    $paged = (int) get_query_var('paged');
    if ($paged > 30) {
      // 可替换为 404 页面
      wp_redirect(home_url());
      exit;
    }
  }
});

  • Nginx_遇到疯狂蜘蛛爬网站,拉崩服务器
  • 遇到疯狂蜘蛛爬网站,拉崩服务器;可以通过下面的限速方式, 【第一步】在主 nginx.conf 文件的 htt […]

  • Nginx为每个网站单独创建独立的 PHP-FPM 池(pool)
  • 为每个网站单独创建独立的 PHP-FPM 池(pool),例如:wenxian8.com。这是中高级服务器性能 […]

  • 用了cloudeflare域名解析,如何在Nginx 批量 IP 屏蔽
  • 【Nginx 批量 IP 屏蔽】 注意,如果你用了cloudeflare域名解析,那就要注意先找到真实攻击者I […]

  • Rufus是什么?为什么很多人推荐
  • Rufus 是一个非常流行的Windows 平台下用于创建启动U盘(Bootable USB)的免费工具。官网 […]

  • 批量设置wordpress文章分类,把文章 ID 区间为 1256869 到 1257421批量设置分类为 ID =5
  • 将 cuwen.wp_posts 中 文章 ID 区间为 1256869 到 1257421(含) 的文章批量 […]

  • 同一台服务器里的两个wordpress数据库文章内容叠加复制
  • 问题:同一台服务器里的两个wordpress数据库,我要把名为temp数据库里的wp_posts的所有文章 全 […]