... che molti SPAM-bot che inviano commenti e trackback di SPAM si affidano alla libreria Jakarta
.
Con qualche riga nell'.htaccess
è possibile alleggerire notevolmente il carico della vostra installazione di MovableType, impedendo l'accesso ai crawler.
# Block some user agents from posting TBs and CMs RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^(Jakarta\sCommons\-HttpClient) [NC] RewriteCond %{REQUEST_METHOD} ^POST$ RewriteRule (.*) - [F,L]
... il bot di BlogBabel continua a macinare post, con una frequenza di almeno 1 volta ogni 3 ore.
[weppos]$ grep 'blogbabel' access.log 212.35.215.114 - - [26/May/2008:02:28:12 -0700] "GET /blog/index.xml HTTP/1.1" 302 546 "-" "BlogBabel +http://it.blogbabel.com/" 212.35.215.114 - - [26/May/2008:04:25:07 -0700] "GET /blog/index.xml HTTP/1.1" 302 546 "-" "BlogBabel +http://it.blogbabel.com/" 212.35.215.114 - - [26/May/2008:06:28:52 -0700] "GET /blog/index.xml HTTP/1.1" 302 546 "-" "BlogBabel +http://it.blogbabel.com/" 212.35.215.114 - - [26/May/2008:08:32:02 -0700] "GET /blog/index.xml HTTP/1.1" 302 546 "-" "BlogBabel +http://it.blogbabel.com/" 212.35.215.114 - - [26/May/2008:12:28:26 -0700] "GET /blog/index.xml HTTP/1.1" 302 546 "-" "BlogBabel +http://it.blogbabel.com/"
... che mentre pensavo a questo post, in meno di due ore, l'idea numero 1 ha fermato 1399 commenti/trackback di SPAM.
[weppos]$ grep 'Jakarta Commons-HttpClient' -c access.log 1399
... che quando ho eseguito l'upgrade di MovableType, ho scordato di inserire un redirect 301 e quindi ho perso tutte le posizioni sui motori di ricerca acquisite grazie ai tag ed alle categorie!
82.146.52.98 - - [26/May/2008:11:59:39 -0700] "POST /mt/mt-search.cgi?tag=trackback&blog_id=1 HTTP/1.1" 404 589 "-" "-" 209.85.238.12 - - [26/May/2008:12:05:30 -0700] "GET /mt/mt-search.cgi?tag=trenitalia HTTP/1.1" 404 587 "-" "Feedfetcher-Google; (+http://www.google.com/feedfetcher.html)" 209.85.238.12 - - [26/May/2008:12:24:12 -0700] "GET /mt/mt-search.cgi?tag=chuck%20norris&Template=feed&IncludeBlogs=1 HTTP/1.1" 404 587 "-" "Feedfetcher-Google; (+http://www.google.com/feedfetcher.html; 1 subscribers; feed-id=988241075584828268)"
Meglio tardi che mai, ora c'è un bellissimo RedirectMatch.
# Old versions redirect RedirectMatch 301 ^/mt/(.*) /mt4/$1
... la scorsa settimana è passato a trovarmi Robozilla. In totale, in un anno Robozilla ha controllato lo status del mio sito 3 volte. Dite che è un po' poco?
[weppos]$ zgrep 'Robozilla' access.log.*.gz access.log.2007-08-11.gz:207.200.81.166 - - [11/Aug/2007:15:37:00 -0700] "GET /blog/ HTTP/1.0" 200 12292 "http://directory.mozilla.org" "Robozilla/1.0" access.log.2007-12-13.gz:207.200.81.166 - - [13/Dec/2007:01:36:25 -0800] "GET /blog/ HTTP/1.0" 200 10733 "http://directory.mozilla.org" "Robozilla/1.0" access.log.2008-05-14.gz:207.200.81.166 - - [14/May/2008:17:18:19 -0700] "GET /blog/ HTTP/1.0" 200 11559 "http://directory.mozilla.org" "Robozilla/1.0"
... in totale le righe di log accumulate in un anno per questo sito corrispondono a 7.229.578. Il giorno che ha generato più log è stato 2007-06-18.gz (40620), il giorno con meno log il 2007-12-25 (11400).
Volete scoprirlo anche voi? Create un file log_total_lines.rb
e piazzateci dentro il seguente script Ruby
<pre <pre class="code-ruby">>#!/usr/bin/env ruby -wKU
log_pattern = ARGV.shift || (raise ‘Missing search pattern’) log_files_with_nof_lines = %x(zgrep ‘HTTP/’ -c #{log_pattern}).split(“\n”)
puts “Found #{log_files_with_nof_lines.length} log files matching pattern #{log_pattern}:”
total = log_files_with_nof_lines.inject(0) do |sum, line| log_file, nof_lines = line.split(‘:’) sum + nof_lines.to_i end puts “Total nof log lines: #{total}”</pre>
poi eseguitelo da shell
[weppos]$ ruby log_total_lines.rb "access.log.*.gz" Found 365 log files matching pattern access.log.*.gz: Total nof log lines: 7229578
Per conoscere invece i log con maggiore/minore righe create un file log_sort_lines.rb
con il seguente script.
<pre <pre class="code-ruby">>#!/usr/bin/env ruby -wKU
log_pattern = ARGV.shift || (raise ‘Missing search pattern’) log_files_with_nof_lines = %x(zgrep ‘HTTP/’ -c #{log_pattern}).split(“\n”)
puts “Found #{log_files_with_nof_lines.length} log files matching pattern #{log_pattern}:”
log_files = log_files_with_nof_lines.collect do |line| log_file, nof_lines = line.split(‘:’) [nof_lines.to_i, log_file] end.sort { |a,b| a.first <=> b.first }
puts “Log with the lowest nof lines: #{log_files.first.inspect}” puts “Log with the highest nof lines: #{log_files.last.inspect}”</pre>
ed eseguitelo
[weppos]$ ruby log_sort_lines.rb "access.log.*.gz" Found 365 log files matching pattern access.log.*.gz: Log with the lowest nof lines: [11400, "access.log.2007-12-25.gz"] Log with the highest nof lines: [40620, "access.log.2007-06-18.gz"]
Quante cose che si scoprono dai log. E voi ogni tanto li leggete?