CodeIgniter会话由机器人发送垃圾邮件

Sut*_*ala 4 php session bots codeigniter codeigniter-2

我有一个每天大约有2000名访问者的网站,该网站被各种搜索引擎机器人发送垃圾邮件.我尝试将会话过期时间减少到20分钟,但仍然有很多mysql_slow_queries.所以我在查看文章,Google crawler,cron和codeigniter会话,完全忽略会话表中的机器人,但他们的方式是,忽略了IPs,但是当我分析数据库时,我看到同样的机器人使用不同IPs.我注意到机器人每次都使用相同的用户代理,因此忽略用户代理是否安全?可以采取哪些必要步骤来避免慢速查询并忽略机器人?

一些SLOW查询

INSERT INTO `ci_sessions` (`session_id`, `ip_address`, `user_agent`, `last_activity`, `user_data`) VALUES ('619bfd8ef4171480645feb17a15323ee', '219.92.135.144', 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15', 1384875135, '')

INSERT INTO `ci_sessions` (`session_id`, `ip_address`, `user_agent`, `last_activity`, `user_data`) VALUES ('fa48b5168b8e84d90dc9b87ce65dfc89', '66.249.74.112', 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)', 1384875522, '')
Run Code Online (Sandbox Code Playgroud)

Jak*_*kub 9

编辑您的user_agent.php输入/config,并添加您在会话中看到的机器人,将它们添加到机器人部分应该消除会话记录.

// There are hundreds of bots but these are the most common.
$robots = array(
    'googlebot'     => 'Googlebot',
    'msnbot'        => 'MSNBot',
    'baiduspider'   => 'Baiduspider',
    'bingbot'       => 'Bing',
    'slurp'         => 'Inktomi Slurp',
    'yahoo'         => 'Yahoo',
    'askjeeves'     => 'AskJeeves',
    'fastcrawler'   => 'FastCrawler',
    'infoseek'      => 'InfoSeek Robot 1.0',
    'lycos'         => 'Lycos',
    'yandex'        => 'YandexBot'
);
Run Code Online (Sandbox Code Playgroud)

你可以减少机器人的数量,但不会消除它们.此用户代理进程可用于MY_session.php为与机器人匹配的代理创建然后排除会话创建.

编辑:
我继续在github上创建了这个并记录在这里:http:
//blog.biernacki.ca/2014/01/codeigniter-keeping-bots-out-of-your-sessions-table-or-how-i-清理后,我的会话/

请享用