ここ一ヶ月間で我が家のサーバに届いた迷惑メール約 1 万通について、本文に含まれる URL を解析した。
解析の対象は mbox 形式のファイルとした。なお,今回は日本語かそうでないかは区別していない。
まずメール本文に含まれる URL を抽出する Perl スクリプト (geturl.pl) を作成した。
$ vi geturl.pl
#!/usr/bin/perl
use strict;
my ($flag, $url, $host);
my (%hosts);
$flag = 0;
while (<stdin>) {
# 改行を除去
$_ =~ s/\n|\r//g;
# ヘッダをスキップ
if ($_ =~ /^From /) { $flag = 1; }
elsif ($flag == 1 && $_ eq '') { $flag = 2; }
elsif ($flag != 2) { next; }
# URLを抽出
if ($_ !~ /(https?:\/\/[a-zA-Z0-9\-\.]+(\/[a-zA-Z0-9\-_\.\/%\?=~]+)?)/) { next; }
$url = $1;
if ($url !~ /https?:\/\/([a-zA-Z0-9\-\.]+)/) { next; }
print $url . "\n";
}
これは,次のように標準入力にリダイレクトして使用する。
$ cat Junk | perl ./geturl.pl
このスクリプトにより、次のようなリストが出力される。
http://partlofty.com
http://partlofty.com
Deze website is op dit moment niet bereikbaar.Deze website is op dit moment niet bereikbaar.
http://986.browninch.com
http://833.toclock.com/hsag34.jpg
Deze website is op dit moment niet bereikbaar.Deze website is op dit moment niet bereikbaar.
Deze website is op dit moment niet bereikbaar.Deze website is op dit moment niet bereikbaar.
Deze website is op dit moment niet bereikbaar.Deze website is op dit moment niet bereikbaar.
http://ninjamao.com/viva/
http://partlofty.com
:
続いて,生成した URL のリストから,ドメイン名 (とその TLD) と登場回数を求める Perl スクリプト (getdomain.pl) を作成した。なお,今回はセカンドレベルドメインまでしか考慮していない。また,ぱっと目についた,明らかに SPAM ではないドメイン名 (w3c.org とか) は取り除いた。
$ vi getdomain.pl
#!/usr/bin/perl
use strict;
my ($host, $domain, $tld);
my (%domains);
while (<STDIN>) {
if ($_ !~ /^https?:\/\/([a-zA-Z0-9\-\.]+)/) { next; }
$host = lc($1);
if ($host =~ /([a-z0-9\-]+\.[a-z]+)$/) {
$domain = $1;
$domains{$domain}++;
}
}
foreach $domain (sort {$domains{$b} <=> $domains{$a}} keys %domains) {
# SPAM じゃないのは除外
if ($domain =~ /(w3\.org|microsoft\.com|passport\.com)/) { next; }
$tld = '';
if ($domain !~ /\.([a-zA-Z]{2,6})$/) { next; }
$tld = $1;
print $domains{$domain} . ',' . $domain . ',' . $tld . "\n";
}
上記の 2 つのスクリプトを組み合わせて,次のように実行する。
$ cat thunderbird/Junk | perl ./geturl.pl | perl ./getdomain.pl > domain.csv
すると,次のような csv ファイルが生成される。
1311,icontact.com,com
501,imageshack.us,us
450,imageshost.ru,ru
433,app.icon,icon
336,thingensure.com,com
336,grandgrass.com,com
333,extolbell.com,com
320,hopedesert.com,com
310,felthim.com,com
299,myimg.de,de
:
これを TLD ごとに集計して,グラフにしてみたところ,ロシアの ccTLD (.ru) が過半数超えの圧勝であった。
とりあえず今日はここまで。次は発信元の国でも調べてみようか。
コメント
[…] 参考:迷惑メールの本文に含まれる URL を分析する : あかぎメモ カテゴリー: 未分類 タグ: CGI, Perl, TLD, Whois, 抽出 コメント (0) トラックバック (0) コメントをどうぞ トラックバックU […]