Script para baixar e-mails de sites automaticamente
Publicado por Iago Lira (última atualização em 11/08/2016)
[ Hits: 11.719 ]
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
Calcular sub-rede, listar e salvar MACs e IPs da rede local
Ligar máquinas virtuais Xen seguindo ordem de criação
Criando vários usuários no LDAP a partir de um arquivo
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Melhorando a precisão de valores flutuantes em python[AJUDA] (9)
GLPI - Configuração de destinatário com conta Microsoft Exchange (0)
Vou voltar moderar conteúdos de Dicas e Artigos (3)
OpenVPN no MACBOOK conecta mas não pinga pastas de rede compartilhada ... (1)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta