2.7 Futaki invariant and K-stability
2.7.2 Donaldson-Futaki invariant and asymptotic slope of K-energy along one
Anti-Spams baseados em conte´udo, ou seja, aqueles que analisam o conte´udo dos e-mails para classific´a-los, s˜ao frequentemente enganados por spammers, com o uso de t´ecnicas que visam tornar leg´ıtimos seus e-mails spam. Assim, o m´odulo Pr´e- Filtro detecta, no corpo do e-mail, muitas das t´ecnicas utilizadas pelos spammers, marcando-as, se necess´ario, com marcadores espec´ıficos, de forma a aumentar a probabilidade do e-mail ser classificado como spam.
Os marcadores podem ser adicionados ao e-mail segundo duas formas — por substitui¸c˜ao e por adi¸c˜ao — de acordo com a t´ecnica empregada pelo spammer. Na primeira, a t´ecnica encontrada ´e substitu´ıda por sua marca correspondente. Na segunda forma, o marcador ´e simplesmente adicionado quando a t´ecnica ´e encontrada. As subse¸c˜oes4.2.2 e 4.2.1descrevem as marca¸c˜oes utilizadas.
O m´odulo Pr´e-Filtro tamb´em “limpa” os e-mails, removendo informa¸c˜oes irrele- vantes para a classifica¸c˜ao, como cabe¸calhos e outras partes n˜ao process´aveis, como imagens. Processa somente texto em formato HTML ou texto simples. Caso o e-mail n˜ao contenha nenhum dos dois, uma mensagem de erro ´e gravada em um
arquivo de registro (log).
O m´odulo Pr´e-Filtro manipula cada e-mail transformando-o em um conjunto de tokens (palavras e marcadores). O conjunto ´e salvo em um arquivo. O m´odulo foi implementado de forma a ser facilmente expans´ıvel, permitindo a inclus˜ao de novos marcadores.
4.2.1
PROCESSAMENTO DE TEXTO EM FORMATO HTML
O m´odulo Pr´e-Filtro faz uso da biblioteca jsoup para processar texto em formato HTML. A jsoup extrai e manipula o c´odigo HTML do e-mail. Cada tag HTML ´e processada pelos filtros HTML. Cada filtro trata uma t´ecnica empregada por spammers. Os filtros s˜ao ativados previamente, antes da inicializa¸c˜ao do SASCA, em um arquivo de configura¸c˜ao, pelo administrador.
Os filtros HTML dispon´ıveis no SASCA s˜ao descritos a seguir. O nome do filtro no c´odigo do SASCA encontra-se entre parˆenteses.
1. Detector de tags ignoradas (IgnoreTagFilter).
O filtro recebe como parˆametro tags a serem ignoradas pelo m´odulo. Assim, quando a tag ´e encontrada, o filtro ignora-a e a substitui pelo marcador !_ignore_tag, onde tag ´e o nome da respectiva tag. Por exemplo, ao se passar ao filtro, como parˆametro, a tag “script ”, ela ´e ignorada, isto ´e, n˜ao ´e processada, e todo o conte´udo contido dentro de si ´e removido. Em seu lugar ´e inserido o marcador !_ignore_script.
2. Detector de links (UrlTagFilter).
Um link, neste contexto, faz referˆencia a uma p´agina da Internet. Links podem estar dentro de e-mails leg´ıtimos. Entretanto, encontram-se em maior n´umero em e-mails spam. Spammers usam links para desviar o leitor do e-mail para, por exemplo, uma p´agina clonada, de forma a coletar suas
informa¸c˜oes pessoais ou a instalar malwares em seu computador.
O filtro analisa todos os atributos de todas as tags em busca do atributo href, que ´e usado para referenciar uma p´agina de Internet. Se encontr´a-lo, a tag ´e substitu´ıda pelo marcador !_URL.
3. Detector de imagens (ImageTagFilter).
O filtro detecta tags de imagem. Se for, substitui a tag e a imagem pelo marcador !_IMAGE.
Usu´arios leg´ıtimos importam-se, normalmente, com o conte´udo do e-mail. Spammers, por´em, preocupam-se com o estilo do e-mail, fazendo uso dos atributos de tags HTML. Assim, o filtro extrai todos os atributos de cada tag encontrada e, para cada um destes, adiciona o marcador !_in_atributo, onde “atributo” refere-se a seu respectivo identificador. Por exemplo, se o filtro encontrar o atributo style, adiciona o marcador !_in_style.
4.2.2
PROCESSAMENTO DE TEXTO SIMPLES
O m´odulo Pr´e-Filtro processa texto simples em duas situa¸c˜oes — ou quando o e-mail cont´em apenas texto simples ou logo ap´os o processamento de texto em formato HTML. Os filtros de texto s˜ao similares aos filtros HTML.
Os filtros de texto processam os tokens segundo uma de trˆes formas de opera¸c˜ao — modificando-o, substituindo-o por um marcador ou mantendo-o inalterado. Os filtros de texto dispon´ıveis no SASCA s˜ao descritos a seguir. O nome do filtro no c´odigo do SASCA encontra-se entre parˆenteses.
1. Valor monet´ario (MonetaryTextFilter).
O filtro procura por padr˜oes comuns em textos com teor financeiro, ou seja, procura pelos tokens $ e %. Se algum destes for encontrado, o token ´e substitu´ıdo pelo marcador !_MONETARY.
2. Links (UrlFilter).
O filtro procura por tokens “http” e “www”. Se encontr´a-los, os substitui pelo marcador !_URL.
3. N´umeros (NumberFilter).
O filtro verifica se o token cont´em pelo menos um algarismo. Se contiver, substitui o token por !_NUMBER.
4. S´ımbolos (PunctuationTextFilter).
O filtro remove s´ımbolos encontrados. Os s´ımbolos removidos s˜ao:
Por exemplo, o filtro substitui a palavra vi@gra por vigra e dia! (de “bom dia!”) por dia.
O filtro deve ser executado ap´os outros filtros que fazem uso destes s´ımbolos para detectar algum padr˜ao. Isto evita, por exemplo, a remo¸c˜ao do s´ımbolo $ antes que o valor monet´ario seja processado pelo filtro.
5. Palavras curtas e compridas (SmallBigWordTextFilter).
Se a quantidade de caracteres de uma palavra for menor ou igual a um valor predeterminado, a palavra ´e substitu´ıda pelo marcador !_SMALL_WORD. Caso seja maior ou igual a um outro valor predeterminado, ´e substitu´ıda pelo marcador !_BIG_WORD. Por padr˜ao, o SASCA considera palavras pequenas as que contˆem 3 ou menos caracteres, e grandes as que contˆem 20 ou mais caracteres.
6. Normalizador (NormalizerTextFilter).
O filtro substitui cada car´acter especial encontrado por seu equivalente n˜ao- especial min´usculo. Por exemplo, a letra ´e (e com acento agudo) ´e substitu´ıda pela letra e. Letras gregas, como a letra alfa, s˜ao removidas, bem como outros caracteres especiais que n˜ao contenham equivalentes n˜ao-especiais.
Como exemplo, tem-se a frase “T^h¨ı^s ~ıˇs ^a f˚uˇnk,^y ˇSt´r˘ı´ng” que ser´a conver- tida para “This is a funky String”.
7. Corre¸c˜ao da codifica¸c˜ao dos caracteres (UnescapeTextFilter).
Conforme descrito na se¸c˜ao2.4, o e-mail pode codificar caracteres espec´ıficos de outros charsets no charset ASCII. Por exemplo, a letra ¸c (c com cedilha) pode ser codificada como ç. A biblioteca JavaMail converte estes caracteres para o charset UTF-8 (padr˜ao do Java). Alguns e-mails, por´em, podem estar corrompidos, impedindo a codifica¸c˜ao.
O filtro corrige este problema, realizando a corre¸c˜ao da codifica¸c˜ao dos caracteres corrompidos.