dberube4

PyOmegle2 V2

Jul 6th, 2013
283
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Thu Jul 04 11:44:01 2013
  4.  
  5. @author: Gabriel (aka dberube4)
  6.  
  7. PyOmegle is a multithreaded omegle client written in python.
  8. """
  9. from threading import Thread
  10. from random import randint
  11. import urllib2, ast
  12.    
  13.  
  14. class Session(Thread):
  15.     '''Represents an omegle session.'''
  16.    
  17.     headers = {}
  18.     headers['User-Agent']='Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1)'+\
  19.                           'Gecko/20100101 Firefox/7.0'
  20.     headers['Accept']='text/html,application/xhtml+xml,application/xml;'+\
  21.                       'q=0.9,*/*;q=0.8'
  22.     headers['Accept-Language']='en-us;q=0.8,en;q=0.5'
  23.     headers['X-Moz']='prefetch'
  24.     headers['Accept-Charset']='ISO-8859-1,utf-8;q=0.7,*;q=0.7'
  25.     headers['Referer']='http://www.reddit.com'
  26.     headers['Cache-Control']='no-cache, no-cache'
  27.     headers['Pragma']='no-cache'
  28.    
  29.     def __init__(self):
  30.        
  31.         super(Session, self).__init__()        
  32.        
  33.         self.url = ''
  34.         self.sessionID = -1
  35.         self.session_started = False
  36.         self.logs = ''
  37.        
  38.         self.request_event = None
  39.         self.request_disconnect = None
  40.         self.request_typing = None
  41.        
  42.         self.stranger_typing = False
  43.         self.stranger_connected = False
  44.        
  45.     def run(self):
  46.         while True:
  47.            
  48.             if self.session_started == False:
  49.                 break
  50.            
  51.             try:
  52.                 rep = ast.literal_eval(urllib2.urlopen(self.request_event).read())
  53.             except ValueError:
  54.                 #If the input was a malformed string.
  55.                 break
  56.            
  57.             if rep[0][0] == "connected":
  58.                 self.stranger_connected = True
  59.                 self.strangerConnected()
  60.            
  61.             elif rep[0][0] == 'typing':
  62.                 self.stranger_typing = True
  63.                 self.strangerTyping()
  64.                
  65.             elif rep[0][0] == 'stoppedTyping':
  66.                 self.stranger_typing = False
  67.                 self.strangerStoppedTyping()
  68.                
  69.             elif rep[0][0] == 'gotMessage':
  70.                 msg = rep[0][1]
  71.                 self.stranger_typing = False
  72.                 self.logs += msg+'/n'
  73.                 self.messageReceived(msg)
  74.            
  75.             elif rep[0][0] == 'strangerDisconnected':
  76.                 self.stranger_connected = False
  77.                 self.stranger_typing = False
  78.                 self.session_started = False
  79.                 self.strangerDisconnected()
  80.                 break
  81.            
  82.    
  83.     def startSession(self):
  84.         '''Start an omegle session'''
  85.        
  86.         #Get Session ID & start session
  87.         self.url = 'http://front{0}.omegle.com'.format(randint(1, 9))
  88.         data = '?rcs=1&firstevents=1&spid=&randid=NSPDU4AW&lang=en'
  89.         start_req = urllib2.Request(self.url+'/start'+data, headers = self.headers)
  90.        
  91.         self.sessionID = eval(urllib2.urlopen(start_req).read())["clientID"]
  92.            
  93.         self.session_started = True
  94.        
  95.         #Craft requests
  96.         idData = "id={0}".format(self.sessionID)
  97.         self.request_event = urllib2.Request(self.url+'/events', idData,
  98.                                              headers = self.headers)
  99.        
  100.         self.request_disconnect = urllib2.Request(self.url+'/disconnect', idData,
  101.                                              headers = self.headers)
  102.        
  103.         self.request_typing = urllib2.Request(self.url+'/typing', idData,
  104.                                              headers = self.headers)
  105.        
  106.         self.start()
  107.    
  108.     def sendMessage(self, message):
  109.         msgReq = urllib2.Request(self.url+'/send',
  110.                                  '&msg='+message+'&id='+self.sessionID,
  111.                                  headers = self.headers)
  112.        
  113.         urllib2.urlopen(msgReq)
  114.        
  115.         self.logs += message+'/n'
  116.  
  117.     def logOut(self):
  118.        
  119.         if self.stranger_connected and self.session_started:
  120.             urllib2.urlopen(self.request_disconnect)
  121.            
  122.             self.stranger_typing = False
  123.             self.stranger_connected = False
  124.        
  125.     def sendTyping(self):
  126.         urllib2.urlopen(self.request_typing)
  127.    
  128.    
  129.     @staticmethod
  130.     def strangerTyping():
  131.         pass
  132.    
  133.     @staticmethod    
  134.     def strangerStoppedTyping():
  135.         pass
  136.    
  137.     @staticmethod
  138.     def strangerDisconnected():
  139.         pass
  140.    
  141.     @staticmethod
  142.     def strangerConnected():
  143.         pass
  144.    
  145.     @staticmethod
  146.     def messageReceived(msg):
  147.         pass
  148.        
  149.  
  150. if __name__ == '__main__':
  151.    
  152.     session = Session()
  153.     session.daemon = True #Program exit when thread ends
  154.  
  155.     #You can replace the session methods with your own!:
  156.     def replacement(msg):
  157.         print("Handsome Stranger: {0}".format(msg))
  158.     session.messageReceived = replacement
  159.    
  160.     session.startSession()
  161.    
  162.     #Fully multithreaded!
  163.     while session.session_started:
  164.         msg = raw_input()
  165.        
  166.         if msg == 'getLogs':
  167.             print(session.logs)
  168.        
  169.         elif len(msg)>0 and msg != 'quit':
  170.             session.sendMessage(msg)
  171.            
  172.         elif msg == 'quit':
  173.             session.logOut()
Advertisement
Add Comment
Please, Sign In to add comment