Script para baixar e-mails de sites automaticamente
Publicado por Iago Lira (última atualização em 11/08/2016)
[ Hits: 11.781 ]
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
Instalação completa de servidor de e-mail
Manutencao de arquivos no Squid-Cache
Download do Banco de dados NCBI NT (DNA)
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
O que esta havendo com o mercado de ti? (8)
Não consigo cadastrar nenhuma conta online (4)
Hotspot Mikrotik nao carrega pagina de login. (0)