现在的位置: 首页 > wordpress > 正文
wordpress屏蔽反向代理恶意镜像,网站被恶意镜像怎么办?
2018年09月25日 wordpress, 黑客 ⁄ 共 2822字 暂无评论

如果想通过禁止某些User Agent特征,同时达成防主流采集、垃圾爬虫、部分SQL注入和防网站被恶意镜像,可以通过以下方法实现。

PS:以下三个方法只能二选一,不能同时使用。

特别声明:以下三个方法的代码来自(或修改自)张戈博客的《服务器反爬虫攻略:Apache/Nginx/PHP禁止某些User Agent抓取网站》。

1Ngnix代码

进入到nginx安装目录下的conf目录,将如下代码保存为agent_deny.conf。

cd /usr/local/nginx/conf

vim agent_deny.conf

  1. #禁止Scrapy等工具的抓取
  2. if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
  3.      return 403;
  4. }
  5. #禁止指定UA及UA为空的访问
  6. if ($http_user_agent ~ " PHP|FeedDemon|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|^$" ) {
  7.      return 403;
  8. }
  9. #禁止非GET|HEAD|POST方式的抓取
  10. if ($request_method !~ ^(GET|HEAD|POST)$) {
  11.     return 403;
  12. }

然后,在网站相关配置中的location / { 之后插入如下代码:

  1. include agent_deny.conf;

如张戈博客的配置:

  1. [marsge@Mars_Server ~]$ cat /usr/local/nginx/conf/zhangge.conf
  2. location / {
  3.         try_files $uri $uri/ /index.php?$args;
  4.         #这个位置新增1行:
  5.         include agent_deny.conf;
  6.         rewrite ^/sitemap_360_sp.txt$ /sitemap_360_sp.php last;

保存后,执行如下命令,平滑重启nginx即可:

  1. /usr/local/nginx/sbin/nginx -s reload

2PHP代码

将如下代码放到PHP网站根目录index.php中的第一个 <?php 之后即可:

  1. //获取UA信息
  2. $ua = $_SERVER['HTTP_USER_AGENT'];
  3. //将恶意USER_AGENT存入数组
  4. $now_ua = array('PHP','FeedDemon ','BOT/0.1 (BOT for JCE)','CrawlDaddy ','Java','Feedly','UniversalFeedParser','ApacheBench','Swiftbot','ZmEu','Indy Library','oBot','jaunty','YandexBot','AhrefsBot','MJ12bot','WinHttp','EasouSpider','HttpClient','Microsoft URL Control','YYSpider','jaunty','Python-urllib','lightDeckReports Bot');
  5. //禁止空USER_AGENT,dedecms等主流采集程序都是空USER_AGENT,部分sql注入工具也是空USER_AGENT
  6. if(!$ua) {
  7. header("Content-type: text/html; charset=utf-8");
  8. wp_die('请勿采集本站,因为采集的站长木有小JJ!');
  9. }else{
  10.     foreach($now_ua as $value )
  11. //判断是否是数组中存在的UA
  12.     if(eregi($value,$ua)) {
  13.     header("Content-type: text/html; charset=utf-8");
  14.     wp_die('请勿采集本站,因为采集的站长木有小JJ!');
  15.     }
  16. }

3WordPress专用版

将以下代码添加到主题functions.php文件最后一个?>即可。

  1. if(!is_admin()) {
  2.     add_action('init', 'deny_mirrored_request', 0);
  3. }
  4. function deny_mirrored_request()
  5. {
  6.    //获取UA信息
  7. $ua = $_SERVER['HTTP_USER_AGENT'];
  8. //将恶意USER_AGENT存入数组
  9. $now_ua = array('PHP','FeedDemon ','BOT/0.1 (BOT for JCE)','CrawlDaddy ','Java','Feedly','UniversalFeedParser','ApacheBench','Swiftbot','ZmEu','Indy Library','oBot','jaunty','YandexBot','AhrefsBot','MJ12bot','WinHttp','EasouSpider','HttpClient','Microsoft URL Control','YYSpider','jaunty','Python-urllib','lightDeckReports Bot');
  10. //禁止空USER_AGENT,dedecms等主流采集程序都是空USER_AGENT,部分sql注入工具也是空USER_AGENT
  11. if(!$ua) {
  12. header("Content-type: text/html; charset=utf-8");
  13. wp_die('请勿采集本站,因为采集的站长木有小JJ!');
  14. }else{
  15.     foreach($now_ua as $value )
  16. //判断是否是数组中存在的UA
  17.     if(eregi($value,$ua)) {
  18.     header("Content-type: text/html; charset=utf-8");
  19.     wp_die('请勿采集本站,因为采集的站长木有小JJ!');
  20.     }
  21. }
  22. }

 

 

如果觉得代码麻烦可以安装 wp-ban插件来解决 反向代理恶意镜像

WP-Ban

建伟

给我留言

留言无头像?



×