Script para baixar e-mails de sites automaticamente
Publicado por Iago Lira (última atualização em 11/08/2016)
[ Hits: 11.727 ]
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
SSSR - configure Samba no Damn Small Linux e DSL-N
Instalação do Nagios por script
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal
Calculando casas de um numero flutuante em c++ [RESOLVIDO] (1)
ocorreu um erro ao carregar o pacote (4)
Ubuntu 24.04.01 do nada as pastas estão abrindo o Analisador de arquiv... (1)