Zebarbudo

Coletor de emails-autoC

Mar 12th, 2016
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.54 KB | None | 0 0
  1. #!/bin/bash
  2. #+---------------------------------+
  3. #|Script: autoC 2.3 |
  4. #|Autor: Francisco Iago Lira Pasos |
  5. #|Localidade: Teresina - PI |
  6. #+---------------------------------+
  7. export version
  8. export pathdir
  9. export dirsite
  10. export total
  11. export totalloop
  12. export totalmail
  13. export totalsite
  14. export totalp
  15. export objeto
  16. export regiao
  17. export codel
  18. export codew
  19. export ci
  20. export fimloop
  21.  
  22. version="1.2"
  23.  
  24. padrao="lynx" #Padrão para acessar conteúdos
  25. echo "============================================================"
  26. read -p 'Deseja manter o lynx como padrão sim(s) ou não(n)?' wl
  27. [ "$wl" = "s" ] && echo "Ok! Proseguindo" || padrao="wget"
  28. echo "============================================================"
  29.  
  30. #Verificando se o wget ou lynz estão instalados:
  31. codew=$(which wget | echo $?)
  32. codel=$(which lynx | echo $?)
  33.  
  34. if [ $codel -ne 0 ] && [ $codew -ne 0 ]; then
  35. echo "Instale o lynx ou wget!!!!"
  36. read -p 'Deseja instalá-los agora? ' snwl
  37. [ "$snwl" = "s" ] && su -c "apt-get install wget lynx"
  38. else
  39.  
  40. #Encontrando o total de páginas encontradas
  41. # pathdir="www.bing.com"
  42. # if [ -d $pathdir ]; then
  43. # rm -rf $pathdir;
  44. # else
  45. # echo "O arquivo $pathdir não existe!";
  46. # fi
  47.  
  48. while :
  49. do
  50.  
  51. echo "======================================================================"
  52. clear
  53. echo "======================================================================"
  54.  
  55. read -p 'Digite o objeto de pesquisa (ex: estamparia, calçados, pizzaria e etc):' obj
  56. objeto="$(echo $obj | sed 's/ /%20/g')"
  57.  
  58. echo "======================================================================"
  59.  
  60. clear
  61.  
  62. echo "======================================================================"
  63.  
  64. read -p 'Digite a região de pesquisa (ex: "teresina" "piaui"):' reg
  65. regiao="$(echo $reg | sed 's/ /%20/g')"
  66.  
  67. echo "======================================================================"
  68.  
  69. if [ "$objeto" = "" ] && [ "$regiao" = "" ]
  70. then
  71. echo "Alerta: Digite pelo menos um objeto de pesquisa!"
  72. sleep 2
  73. continue
  74. fi
  75.  
  76. #Atalho
  77. if [ "$objeto" = "" ]; then
  78. dirsite=$(echo "contato%22email%22"$regiao)
  79. elif [ "$regiao" = "" ]; then
  80. dirsite=$(echo "contato%22email%22"$objeto)
  81. elif [ -n $regiao ] && [ -n $regiao ]; then
  82. dirsite=$(echo "contato+email%22"$objeto"%22"$regiao)
  83. fi
  84.  
  85. if [ -n $objeto ] || [ -n $regiao ]
  86. then
  87. break
  88. fi
  89.  
  90. done
  91.  
  92. # #Deletar a pasta www...
  93. # if [ -d $pathdir ]; then
  94. # rm -rf $pathdir
  95. # fi
  96.  
  97. #Testando conexão
  98. clear
  99. echo "======================================="
  100. echo "Testando sua conexão..."
  101. echo "======================================="
  102.  
  103. tmili=$(ping -c 3 www.bing.com | grep time | sed 's/.*time//' | sed '/=/d' | sed 's/ms//g')
  104. tseg=$(printf '%.*f\n' 0 $(echo $(echo "$tmili/1000" | bc) | sed "s/\./,/g") | sed "s/,/./g")
  105.  
  106. [ $tseg -ge 2 ] && echo "Alerta: Sua conexão está lenta!"
  107. sleep 3
  108.  
  109. echo "======================================="
  110. echo "Fim do teste..."
  111. echo "======================================="
  112. sleep 2
  113.  
  114. #Baixando a página do buscador bing
  115. # wget -E -H -k -K -p https://www.bing.com/search?q=$(echo $dirsite)&first=0
  116. # [ $tseg -lt 2 ] && sleep 18 || sleep 20
  117.  
  118.  
  119. echo "======================================="
  120. clear
  121. echo "======================================="
  122.  
  123. #Total de páginas
  124. dirtotal=www.bing.com/search?q=$(echo $dirsite).html
  125. totalp=$(cat $dirtotal | \
  126. sed 's/^[^>]*[>]//; s/[<][^>]*[>]/\n/g; s/[<].*$//' | grep resultados | \
  127. sed 's/[^0-9]*//g' | sed '/^\s*$/d')
  128.  
  129. clear
  130.  
  131. echo "============================================================"
  132. echo "Alerta: Digite múltiplos de 9!"
  133. read -p "Quantos sites você quer na sua busca?" totalloop
  134. echo "============================================================"
  135.  
  136. clear
  137.  
  138. echo "==========================================="
  139. read -p "Quantos e-mails você deseja? " totalmail
  140. echo "==========================================="
  141.  
  142. if [ $totalloop -gt $totalp ]; then
  143. echo "==========================================="
  144. echo "O número de sites que deseja é invalido!"
  145. echo "==========================================="
  146. totalloop=$totalp
  147. fi
  148.  
  149.  
  150. echo "======================================="
  151. clear
  152. echo "======================================="
  153.  
  154.  
  155. echo "======================================="
  156. clear
  157. echo "================================================"
  158.  
  159. read -p "Deseja continuar script de onde parou (s/n)? " sn1
  160.  
  161. echo "================================================"
  162.  
  163. clear
  164. echo "======================================="
  165. echo "Criando lista de sites..."
  166. echo "======================================="
  167.  
  168. if [ "$sn1" = "n" ]; then
  169. ci=0
  170. echo "" > .csite
  171. else
  172. [ -f site.txt ] && rm site.txt
  173. ci=$(cat .csite)
  174. fi
  175.  
  176. # calcloop=$(echo "288*$totalloop/500" | bc) #Regra de três simples (minha conveniência)
  177. # fimloop=$(printf '%.*f\n' 0 $(echo $(echo "$totalloop/9" | bc) | sed "s/\./,/g") | sed "s/,/./g") #Arredonda valor para inteiro
  178.  
  179. i=$ci
  180. if [ "$padrao" = "lynx" ]; then
  181. INICIO1=$(date +%s)
  182. for (( i = 0; i <= $totalloop; i++ ))
  183. do
  184. totalsite=`cat site.txt | sort | uniq | wc -l`
  185. if [ $totalsite -gt $totalloop ]; then
  186. break
  187. fi
  188. clear
  189. echo "======================================="
  190. echo "Criando lista de sites..."
  191. echo "Sites processados: $totalsite"
  192. echo "======================================="
  193. echo "Número de tentativs: $i"
  194. echo "SUCCESS: Extracted `wc -l site.txt` and listed them in '`pwd`/urls' file for reference."
  195. echo $i > .csite
  196. #Usando o bing para vasculhar a NET
  197.  
  198. lynx -dump $(echo "https://www.bing.com/search?q=`echo $dirsite`&first="$i) > gone.tmp
  199. sed 's/http/\^http/g' gone.tmp | tr -s "^" "\n" | grep http| sed 's/\ .*//g' > gtwo.tmp
  200. rm gone.tmp
  201. cat gtwo.tmp | sed '/bing/d;/microsoft/d;/youtube/d;/google/d' | sort | uniq >> site.txt
  202. rm gtwo.tmp
  203. sleep 1
  204. done
  205. FIM1=$(date +%s)
  206. tempsite=$(( $FIM1 - $INICIO1 ))
  207.  
  208. elif [ "$padrao" = "wget" ]; then
  209.  
  210. INICIO1=$(date +%s)
  211. for (( ; ; ))
  212. do
  213. totalsite=`cat site.txt | sort | uniq | wc -l`
  214. if [ $totalsite -gt $totalloop ]; then
  215. break
  216. fi
  217. clear
  218. echo "======================================="
  219. echo "Criando lista de sites..."
  220. echo "Sites processados: $totalsite"
  221. echo "======================================="
  222. echo "Número de tentativs: $i"
  223. echo $i > .csite
  224. #Usando o bing para vasculhar a NET
  225.  
  226. 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
  227.  
  228. let i=$i+1
  229.  
  230. timebegin=`find site.txt -mtime -1 -type f -exec ls -l {} \; | awk '{print $8}' | sed 's/://g'`
  231. timefinal=`date +%H%M`
  232. [ $timebegin -ne $timefinal ] && break
  233. [ $i -gt 900 ] && break
  234. done
  235. FIM1=$(date +%s)
  236. tempsite=$(( $FIM1 - $INICIO1 ))
  237. fi
  238.  
  239.  
  240. clear
  241. echo "======================================="
  242. clear
  243. echo "======================================="
  244.  
  245. if [ -f e-mail.txt ]; then
  246. rm e-mail.txt;
  247. else
  248. echo "O arquivo e-mail.txt não existe!";
  249. fi
  250.  
  251. clear
  252. echo "======================================="
  253. echo "Coletando e-mails..."
  254. echo "======================================="
  255.  
  256. #Extrai contatos e-mail dos sites
  257. if [ "$sn1" = "s" ]; then
  258. lineNumber=$(cat .cmail)
  259. let cont=$lineNumber
  260. else
  261. let cont=1
  262. lineNumber=1
  263. echo "" > .cmail
  264. fi
  265.  
  266. cont2=1
  267. tmail=0
  268.  
  269.  
  270. if [ "$padrao" = "lynx" ]; then
  271. #=========================================
  272. INICIO2=$(date +%s)
  273. while read site
  274. do
  275. clear
  276. echo "======================================="
  277. echo "Criando lista de e-mails..."
  278. echo "E-mails processados: $tmail"
  279. echo "======================================="
  280. echo "Número de tentativas: `echo $cont2`"
  281.  
  282. if [ $cont2 -ge $lineNumber ]; then
  283. echo $cont2 > .cmail
  284.  
  285. [ $(echo $site | echo $?) -ne 0 ] && continue #Se o endereço IP não funcionar pule a linha
  286.  
  287. 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
  288. #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
  289. fi
  290.  
  291. let cont2=$cont2+1
  292. tmail=$(cat e-mail.txt | sort | uniq | wc -l)
  293. [ $tmail -gt $totalmail ] && break
  294. done < site.txt
  295. FIM2=$(date +%s)
  296. tempmail=$(( $FIM2 - $INICIO2 ))
  297. #==========================================
  298.  
  299. elif [ "$padrao" = "wget" ]; then
  300. INICIO2=$(date +%s)
  301. while read site
  302. do
  303. clear
  304. echo "======================================="
  305. echo "Criando lista de e-mails..."
  306. echo "E-mails processados: $tmail"
  307. echo "======================================="
  308. echo "Número de tentativas: `echo $cont2`"
  309.  
  310. if [ $cont2 -ge $lineNumber ]; then
  311. echo $cont2 > .cmail
  312.  
  313. [ $(echo $site | echo $?) -ne 0 ] && continue #Se o endereço IP não funcionar pule a linha
  314.  
  315. 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
  316. #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
  317. fi
  318.  
  319. let cont2=$cont2+1
  320. tmail=$(cat e-mail.txt | sort | uniq | wc -l)
  321. [ $tmail -gt $totalmail ] && break
  322. done < site.txt
  323. FIM2=$(date +%s)
  324. tempmail=$(( $FIM2 - $INICIO2 ))
  325. fi
  326.  
  327. #Converter lista para csv
  328. clear
  329. echo "======================================="
  330. echo "Aguarde..."
  331. echo "======================================="
  332.  
  333. a1='e-mail.txt'
  334. a2="$(echo $(echo $a1 | sed 's/\..*//')".csv")"
  335.  
  336. [ -f $a2 ] && rm $a2
  337.  
  338. while read i
  339. do
  340. name=$(echo $i |sed -r 's/@/ - /g;s/(^.| .)/\U&/g;s/(.*)(\..{3}).*/\1/g')
  341. echo "$name;$i" >> $a2
  342. done < $a1
  343.  
  344. cat $a2 | sort | uniq > $(echo $a".pop")
  345. cat $(echo $a".pop") > $a2
  346. rm $(echo $a".pop")
  347.  
  348. #Cabeçalho csv
  349. #echo "name;E-mail Address" > $a2
  350. sed -i "1i name;E-mail Address" $a2 #Inseri name;E-mail Address na primeira linha
  351.  
  352. clear
  353. echo "=========================="
  354. [ $? -eq 0 ] && echo "Concluído com sucesso!" || echo "Aviso: Ocorreu algum erro ao converter $a1 para csv!"
  355.  
  356.  
  357. clear
  358. echo "======================================="
  359. clear
  360. echo "======================================="
  361.  
  362. # if [ -d $pathdir ]; then
  363. # rm -rf $pathdir;
  364. # else
  365. # echo "O diretório www.bing.com não existe!";
  366. # fi
  367.  
  368. echo "======================================="
  369. clear
  370. echo "======================================="
  371. cat site.txt | sort | uniq > site
  372. cat site > site.txt; rm site
  373.  
  374. cat e-mail.txt | sort | uniq > email
  375. cat email > e-mail.txt; rm email
  376.  
  377. echo "======================================="
  378. clear
  379. echo "======================================="
  380.  
  381. # #Renomeando o arquivo
  382. # if [ -f $(echo $dirsite'_'$(cat e-mail.txt | wc -l)'.txt' | sed 's/+/_/g') ]; then
  383. # echo ""
  384. # else
  385. # cat e-mail.txt > $(echo $dirsite'_'$(cat e-mail.txt | wc -l)'.txt')
  386. # rm e-mail.txt
  387. # fi
  388.  
  389. echo "---------------------------------------------"
  390. echo "---------> Conluído com sucesso! <-----------"
  391. echo "Número de e-mails: $(cat e-mail.txt | wc -l)"
  392. echo "Tempo de captura de sites: $tempsite segundos"
  393. echo "Número de sites: $(cat site.txt | wc -l)"
  394. echo "Tempo de captura de e-mails: $tempmail segundos"
  395. echo "Tempo de ping a cada 3 tentativas: $tseg segundos
  396. "
  397. echo "---------------------------------------------"
  398. fi
Add Comment
Please, Sign In to add comment