Να ένα ανούσιο spammer-style python script που μαζεύει ότι mail πετύχει στις σελίδες που επιστρέφει η google σαν αποτελέσματα για κάποιο search query που του δίνεις. Χρειάζεται να του ορίσεις τον user agent , το πλήθος των results που θέλεις να ψάξει(pages) , το socket timeout (γιατί αλλιώς σε κάποιες φάσεις θα φορτώνει για πάντα), καθώς και ποσο χρόνο να σταματάει (sleepy) μετά από κάθε request στην google (για να μην σε κόψει όταν θες να πάρεις πχ το max που είναι <= ( ~ ) 1000 results ) . Για να παίξει το search query πρέπει να το δώσεις ως ένα όρισμα ανάμεσα σε " " , αυτά. aa και τρέχει με python 2.6 (μονο αυτή έχουνε εδώ) με python >= 3 νομίζω έχει θέμα με την sgmllib (Όπως καταλάβατε σήμερα σκοτώνομαι στην δουλειά)
- Κώδικας: Επιλογή όλων
#------------mail crawler via google seach----------#
#------------------ python 2.6-------------------#
import re
import sys
import time
import urllib
import urllib2
import socket
from sgmllib import SGMLParser
#------configs------#
user_agent = "Mozilla/5.0 (X11; Linux x86_64; rv:10.0.3) Gecko/20120314 Firefox/10.0.3"
pages = 50 # up to 990-1000
sleepy = 2 #seconds
timeouts = 5 #seconds to urlopen timeout or else sometimes loads forever
google_service = "https://www.google.gr/search?"
#-------------------#
class URLLister(SGMLParser):
def reset(self):
SGMLParser.reset(self)
self.urls = []
def start_a(self, attrs):
href = [v for k, v in attrs if k=='href']
if href:
self.urls.extend(href)
#set the socket timeout
socket.setdefaulttimeout(timeouts)
fixed_query=''
query_link = "https://www.google.gr/search?&query=my+mail+is"
email_pattern = re.compile('([\w\-\.]+@(\w[\w\-]+\.)+[\w\-]+)')
maillist=[]
opener = urllib2.build_opener()
#add user agent header to all requests
opener.addheaders = [('User-agent', user_agent)]
#check if input is valid
if not len(list(sys.argv)) == 2:
sys.exit('Wrong input faggot!!')
search_stuff = list(sys.argv[1])
#fix the search query : yo man aw ---> yo+man+aw
for i in range(len(search_stuff)):
if search_stuff[i] == ' ':
search_stuff[i] = '+'
fixed_query = ''.join(search_stuff)
for current_page in range(0,pages,10):
#fix the query link the proper way
query_link = google_service+'&q='+fixed_query+'&start='+str(current_page)+'&filter=0'
#print query_link
request = urllib2.Request(query_link)
feeddata = opener.open(request).read()
#parse the html page
parser = URLLister()
parser.feed(feeddata)
parser.close()
#extract all the mails
for url in parser.urls:
if (url.startswith('http') and not 'google' in url and not 'webcache' in url):
try:
yo = email_pattern.findall(urllib.urlopen(url).read())
except Exception, e:
pass #just do thing
else:
for mail in yo:
maillist.append(mail[0])
#keep one mail just once
myset = set(maillist)
for final_mail in myset:
print final_mail
#empty list
maillist[:] = []
#time to sleep
time.sleep(sleepy)
πχ για input : "my mail is"
Η ιδέα είναι να το τρέχεις επαναληπτικά για queries που πιστεύεις ότι θα επιστρέψουν σελίδες με valid mail και το το τρέχεις και για τα ~1000 results του κάθε query(pages = 990-1000) που επιστρέφει (κάνει τότε άπειρη ώρα μαζί με τα sleeps αλλα σιγά σιγά μαζεύει αρκετά mail :p) , όπως είπα και πριν καμια χρηστικότητα
