Script para baixar e-mails de sites automaticamente
Publicado por Iago Lira (última atualização em 11/08/2016)
[ Hits: 12.161 ]
Homepage: https://notabug.org/iagolira/
Download autoC 2.4.sh (versão 2)
Olá pessoal, depois de se deparar com altos preços de lista de e-mails, decidi criar meu próprio programa ou script para criar minhas lista de e-mails. Para que o script funcione, o lynx ou wget devem estar instalados. Claro, deve estar conectado a internet.
Versão 2 - Enviado por Iago Lira em 26/07/2016
Changelog: Algumas melhorias, mas ainda considero o script como uma "gambiarra". :p
#!/bin/bash
#+---------------------------------+
#|Script: autoC 2.3 |
#|Autor: Francisco Iago Lira Pasos |
#|Localidade: Teresina - PI |
#+---------------------------------+
export version
export pathdir
export dirsite
export total
export totalloop
export totalmail
export totalsite
export totalp
export objeto
export regiao
export codel
export codew
export ci
export fimloop
version="1.2"
padrao="lynx" #Padrão para acessar conteúdos
echo "============================================================"
read -p 'Deseja manter o lynx como padrão sim(s) ou não(n)?' wl
[ "$wl" = "s" ] && echo "Ok! Proseguindo" || padrao="wget"
echo "============================================================"
#Verificando se o wget ou lynz estão instalados:
codew=$(which wget | echo $?)
codel=$(which lynx | echo $?)
if [ $codel -ne 0 ] && [ $codew -ne 0 ]; then
echo "Instale o lynx ou wget!!!!"
read -p 'Deseja instalá-los agora? ' snwl
[ "$snwl" = "s" ] && su -c "apt-get install wget lynx"
else
#Encontrando o total de páginas encontradas
# pathdir="www.bing.com"
# if [ -d $pathdir ]; then
# rm -rf $pathdir;
# else
# echo "O arquivo $pathdir não existe!";
# fi
while :
do
echo "======================================================================"
clear
echo "======================================================================"
read -p 'Digite o objeto de pesquisa (ex: estamparia, calçados, pizzaria e etc):' obj
objeto="$(echo $obj | sed 's/ /%20/g')"
echo "======================================================================"
clear
echo "======================================================================"
read -p 'Digite a região de pesquisa (ex: "teresina" "piaui"):' reg
regiao="$(echo $reg | sed 's/ /%20/g')"
echo "======================================================================"
if [ "$objeto" = "" ] && [ "$regiao" = "" ]
then
echo "Alerta: Digite pelo menos um objeto de pesquisa!"
sleep 2
continue
fi
#Atalho
if [ "$objeto" = "" ]; then
dirsite=$(echo "contato%22email%22"$regiao)
elif [ "$regiao" = "" ]; then
dirsite=$(echo "contato%22email%22"$objeto)
elif [ -n $regiao ] && [ -n $regiao ]; then
dirsite=$(echo "contato+email%22"$objeto"%22"$regiao)
fi
if [ -n $objeto ] || [ -n $regiao ]
then
break
fi
done
# #Deletar a pasta www...
# if [ -d $pathdir ]; then
# rm -rf $pathdir
# fi
#Testando conexão
clear
echo "======================================="
echo "Testando sua conexão..."
echo "======================================="
tmili=$(ping -c 3 www.bing.com | grep time | sed 's/.*time//' | sed '/=/d' | sed 's/ms//g')
tseg=$(printf '%.*f\n' 0 $(echo $(echo "$tmili/1000" | bc) | sed "s/\./,/g") | sed "s/,/./g")
[ $tseg -ge 2 ] && echo "Alerta: Sua conexão está lenta!"
sleep 3
echo "======================================="
echo "Fim do teste..."
echo "======================================="
sleep 2
#Baixando a página do buscador bing
# wget -E -H -k -K -p https://www.bing.com/search?q=$(echo $dirsite)&first=0
# [ $tseg -lt 2 ] && sleep 18 || sleep 20
echo "======================================="
clear
echo "======================================="
#Total de páginas
dirtotal=www.bing.com/search?q=$(echo $dirsite).html
totalp=$(cat $dirtotal | \
sed 's/^[^>]*[>]//; s/[<][^>]*[>]/\n/g; s/[<].*$//' | grep resultados | \
sed 's/[^0-9]*//g' | sed '/^\s*$/d')
clear
echo "============================================================"
echo "Alerta: Digite múltiplos de 9!"
read -p "Quantos sites você quer na sua busca?" totalloop
echo "============================================================"
clear
echo "==========================================="
read -p "Quantos e-mails você deseja? " totalmail
echo "==========================================="
if [ $totalloop -gt $totalp ]; then
echo "==========================================="
echo "O número de sites que deseja é invalido!"
echo "==========================================="
totalloop=$totalp
fi
echo "======================================="
clear
echo "======================================="
echo "======================================="
clear
echo "================================================"
read -p "Deseja continuar script de onde parou (s/n)? " sn1
echo "================================================"
clear
echo "======================================="
echo "Criando lista de sites..."
echo "======================================="
if [ "$sn1" = "n" ]; then
ci=0
echo "" > .csite
else
[ -f site.txt ] && rm site.txt
ci=$(cat .csite)
fi
# calcloop=$(echo "288*$totalloop/500" | bc) #Regra de três simples (minha conveniência)
# fimloop=$(printf '%.*f\n' 0 $(echo $(echo "$totalloop/9" | bc) | sed "s/\./,/g") | sed "s/,/./g") #Arredonda valor para inteiro
i=$ci
if [ "$padrao" = "lynx" ]; then
INICIO1=$(date +%s)
for (( i = 0; i <= $totalloop; i++ ))
do
totalsite=`cat site.txt | sort | uniq | wc -l`
if [ $totalsite -gt $totalloop ]; then
break
fi
clear
echo "======================================="
echo "Criando lista de sites..."
echo "Sites processados: $totalsite"
echo "======================================="
echo "Número de tentativs: $i"
echo "SUCCESS: Extracted `wc -l site.txt` and listed them in '`pwd`/urls' file for reference."
echo $i > .csite
#Usando o bing para vasculhar a NET
lynx -dump $(echo "https://www.bing.com/search?q=`echo $dirsite`&first="$i) > gone.tmp
sed 's/http/\^http/g' gone.tmp | tr -s "^" "\n" | grep http| sed 's/\ .*//g' > gtwo.tmp
rm gone.tmp
cat gtwo.tmp | sed '/bing/d;/microsoft/d;/youtube/d;/google/d' | sort | uniq >> site.txt
rm gtwo.tmp
sleep 1
done
FIM1=$(date +%s)
tempsite=$(( $FIM1 - $INICIO1 ))
elif [ "$padrao" = "wget" ]; then
INICIO1=$(date +%s)
for (( ; ; ))
do
totalsite=`cat site.txt | sort | uniq | wc -l`
if [ $totalsite -gt $totalloop ]; then
break
fi
clear
echo "======================================="
echo "Criando lista de sites..."
echo "Sites processados: $totalsite"
echo "======================================="
echo "Número de tentativs: $i"
echo $i > .csite
#Usando o bing para vasculhar a NET
wget "$(echo "https://www.bing.com/search?q=`echo $dirsite`&first="$i)" -q -O - | sed 's/h="/\n/g;s/href="/\n/g;s/"//g' | grep "http" | sed -n "s/^http:\/\///p" | sed "s/\/$//" | sed '/bing/d;/microsoft/d;/facebook.com/d;/whatsapp/d;/outlook/d;/msn/d' | grep $objeto | sort | uniq >> site.txt
let i=$i+1
timebegin=`find site.txt -mtime -1 -type f -exec ls -l {} \; | awk '{print $8}' | sed 's/://g'`
timefinal=`date +%H%M`
[ $timebegin -ne $timefinal ] && break
[ $i -gt 900 ] && break
done
FIM1=$(date +%s)
tempsite=$(( $FIM1 - $INICIO1 ))
fi
clear
echo "======================================="
clear
echo "======================================="
if [ -f e-mail.txt ]; then
rm e-mail.txt;
else
echo "O arquivo e-mail.txt não existe!";
fi
clear
echo "======================================="
echo "Coletando e-mails..."
echo "======================================="
#Extrai contatos e-mail dos sites
if [ "$sn1" = "s" ]; then
lineNumber=$(cat .cmail)
let cont=$lineNumber
else
let cont=1
lineNumber=1
echo "" > .cmail
fi
cont2=1
tmail=0
if [ "$padrao" = "lynx" ]; then
#=========================================
INICIO2=$(date +%s)
while read site
do
clear
echo "======================================="
echo "Criando lista de e-mails..."
echo "E-mails processados: $tmail"
echo "======================================="
echo "Número de tentativas: `echo $cont2`"
if [ $cont2 -ge $lineNumber ]; then
echo $cont2 > .cmail
[ $(echo $site | echo $?) -ne 0 ] && continue #Se o endereço IP não funcionar pule a linha
lynx -dump $site | grep -E -o "\b[a-zA-Z0-9.-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9.-]+\b" | sort | uniq >> e-mail.txt
#altavista.com|aol.com|bol.com.br|brturbo.com.br|globo.com|globomail.com|gmail.com|hotmail.com|ibest.com.br|ig.com.br|itelefonica.com.br|live.com|msn.com|outlook.com|pop.com.br|superig.com.br|terra.com.br|uol.com.br|yahoo.com.br|zipmail.com.br
fi
let cont2=$cont2+1
tmail=$(cat e-mail.txt | sort | uniq | wc -l)
[ $tmail -gt $totalmail ] && break
done < site.txt
FIM2=$(date +%s)
tempmail=$(( $FIM2 - $INICIO2 ))
#==========================================
elif [ "$padrao" = "wget" ]; then
INICIO2=$(date +%s)
while read site
do
clear
echo "======================================="
echo "Criando lista de e-mails..."
echo "E-mails processados: $tmail"
echo "======================================="
echo "Número de tentativas: `echo $cont2`"
if [ $cont2 -ge $lineNumber ]; then
echo $cont2 > .cmail
[ $(echo $site | echo $?) -ne 0 ] && continue #Se o endereço IP não funcionar pule a linha
wget "$site" -q -O - | grep -E -o "\b[a-zA-Z0-9.-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9.-]+\b" | sort | uniq >> e-mail.txt
#altavista.com|aol.com|bol.com.br|brturbo.com.br|globo.com|globomail.com|gmail.com|hotmail.com|ibest.com.br|ig.com.br|itelefonica.com.br|live.com|msn.com|outlook.com|pop.com.br|superig.com.br|terra.com.br|uol.com.br|yahoo.com.br|zipmail.com.br
fi
let cont2=$cont2+1
tmail=$(cat e-mail.txt | sort | uniq | wc -l)
[ $tmail -gt $totalmail ] && break
done < site.txt
FIM2=$(date +%s)
tempmail=$(( $FIM2 - $INICIO2 ))
fi
#Converter lista para csv
clear
echo "======================================="
echo "Aguarde..."
echo "======================================="
a1='e-mail.txt'
a2="$(echo $(echo $a1 | sed 's/\..*//')".csv")"
[ -f $a2 ] && rm $a2
while read i
do
name=$(echo $i |sed -r 's/@/ - /g;s/(^.| .)/\U&/g;s/(.*)(\..{3}).*/\1/g')
echo "$name;$i" >> $a2
done < $a1
cat $a2 | sort | uniq > $(echo $a".pop")
cat $(echo $a".pop") > $a2
rm $(echo $a".pop")
#Cabeçalho csv
#echo "name;E-mail Address" > $a2
sed -i "1i name;E-mail Address" $a2 #Inseri name;E-mail Address na primeira linha
clear
echo "=========================="
[ $? -eq 0 ] && echo "Concluído com sucesso!" || echo "Aviso: Ocorreu algum erro ao converter $a1 para csv!"
clear
echo "======================================="
clear
echo "======================================="
# if [ -d $pathdir ]; then
# rm -rf $pathdir;
# else
# echo "O diretório www.bing.com não existe!";
# fi
echo "======================================="
clear
echo "======================================="
cat site.txt | sort | uniq > site
cat site > site.txt; rm site
cat e-mail.txt | sort | uniq > email
cat email > e-mail.txt; rm email
echo "======================================="
clear
echo "======================================="
# #Renomeando o arquivo
# if [ -f $(echo $dirsite'_'$(cat e-mail.txt | wc -l)'.txt' | sed 's/+/_/g') ]; then
# echo ""
# else
# cat e-mail.txt > $(echo $dirsite'_'$(cat e-mail.txt | wc -l)'.txt')
# rm e-mail.txt
# fi
echo "---------------------------------------------"
echo "---------> Conluído com sucesso! <-----------"
echo "Número de e-mails: $(cat e-mail.txt | wc -l)"
echo "Tempo de captura de sites: $tempsite segundos"
echo "Número de sites: $(cat site.txt | wc -l)"
echo "Tempo de captura de e-mails: $tempmail segundos"
echo "Tempo de ping a cada 3 tentativas: $tseg segundos
"
echo "---------------------------------------------"
fi
facilitando e organizando a configuracao do mrtg com ipfm
Descompactar vários arquivos ao mesmo tempo de um diretório específico
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Ativando e usando "zoom" no ambiente Cinnamon
Vídeo Nostálgico de Instalação do Conectiva Linux 9
Como realizar um ataque de força bruta para desobrir senhas?
VOL já não é mais como antes? (27)
780 mil usuários do Janelas baIxaram Linux em um mês (2)
Atualizei meu ubuntu e desliguei e ele não inicia corretamente (11)









