dberube4

PyOmegle2

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