def _getFriendsListMR2(self): friendsid = [] offset = 0 while True: post = { 'method': 'friends.getAppUsers', 'app_id': 'zombieisland', 'offset': str(offset), 'session_key': self.__api_access_token } post_keys = sorted(post.keys()) param_str = "".join([ "%s=%s" % (str(key), vkontakte.api._encode(post[key])) for key in post_keys ]) param_str = self.__game_api_user_id + param_str + 'session_key' sign = md5(param_str).hexdigest().lower() post.update({'sig': sign}) BASE_URL = Connection('http://api.facebook.com/1.0/') add = eval( BASE_URL.sendRequest(post, cookies=self.__session_cookies)) friendsid.extend(add) print 'load ', len(add) offset += 500 if len(add) < 500: break return friendsid
def _getFriendsAllMR1(self): # All MR friends_all_id = {} #return friends_all_id null = '0' offset = 0 ex_fr = 0 while ex_fr == 0: post = { 'ext': '1', 'method': 'friends.get', 'app_id': '609744', 'offset': str(offset), 'session_key': self.__api_access_token } post_keys = sorted(post.keys()) param_str = "".join([ "%s=%s" % (str(key), vkontakte.api._encode(post[key])) for key in post_keys ]) param_str = self.__game_api_user_id + param_str + u'5cbd867117243d62af914948498eb3de' sign = md5(param_str).hexdigest().lower() post.update({'sig': sign}) BASE_URL = Connection('http://www.appsmail.ru/platform/api') resp_fr = BASE_URL.sendRequest(post, cookies=self.__session_cookies) while resp_fr == None: print u'Друзья заедают... попробуем ещё раз' time.sleep(0.5) resp_fr = BASE_URL.sendRequest(post, cookies=self.__session_cookies) # with open('response.txt', 'w') as f: # f.write(resp_fr.encode("UTF-8", "ignore")) add = eval(resp_fr) print 'load MR', len(add) if len(add) == 0: ex_fr = 1 else: time.sleep(0.34) offset += 1000 #friends_all_id.extend(add) for us in add: new = { u"link": us["link"], u"first_name": self._correct(us["first_name"]), u"last_name": self._correct(us["last_name"]), u"nick": self._correct(us["nick"]), u"app_installed": us["app_installed"], u"last_visit": us["last_visit"] } friends_all_id[us["uid"]] = new print(u'Друзей в Моём Мире: %s' % str(len(friends_all_id))).encode('cp866') with open('statistics\\' + self.curuser + '\\friends_all_info.txt', 'w') as f: #f.write(unicode(friends_all_id)) text = simplejson.dumps(friends_all_id, ensure_ascii=False) f.write(text.encode("UTF-8", "ignore")) return friends_all_id
def _getSessionCookies(self): session_cookies = self._credentials.getSessionCookies() cookies_are_valid = self._validateSessionCookies(session_cookies) # print 'cookies_are_valid = ', cookies_are_valid if not cookies_are_valid: username = self._credentials.getUserEmail() password = self._credentials.getUserPassword() # print 'New login!' post = { 'post': '', 'Login': username.split('@')[0], 'Domain': username.split('@')[1], 'Password': password, 'level': '0' } # print 'post =', post # get = 'https://auth.mail.ru/cgi-bin/auth?post=&' +\ # 'Login='******'@')[0] +\ # '&Domain=' + username.split('@')[1] +\ # '&Password='******'get =', get # реквест POST # session_cookies = requests.post('https://auth.mail.ru/cgi-bin/auth', data=post, allow_redirects=False).cookies # реквест GET # session_cookies = requests.get(get, allow_redirects=False).cookies # print 'session_cookies1 = ', session_cookies # print # print session_cookies.get_dict('.mail.ru') # print session_cookies.get_dict('.auth.mail.ru') # GET # mr = Connection(get) # session_cookies = mr.sendRequestNoRedirect(getCookies=True) mr = Connection('https://auth.mail.ru/cgi-bin/auth') session_cookies = mr.sendRequestNoRedirect(post, getCookies=True) # session_cookies = mr.sendRequest(post, getCookies=True) # print 'session_cookies1 = ', session_cookies # open('remont_log.txt', 'a').write('session_cookies1 = '+str(session_cookies)+"\n"+"\n") session_cookies = (session_cookies.output(attrs=[], header='', sep=';')) self._credentials.setSessionCookies(session_cookies) return session_cookies
def get_game_params(self): params = self.getAppParams('zombieisland') params = self.getAppParams2(params) self.__game_api_user_id = params['uid'] game_auth_key = params['auth'] self.__api_access_token = params['auth'] game_url = 'https://zombie-fb.shadowlands.ru/zombiefb/go' connection = Connection(game_url) self.__params = params return (self.__game_api_user_id, game_auth_key, params, connection)
def getAppParams(self, app_id, session_cookies=None): if session_cookies is None: session_cookies = self._getSessionCookies() # mr = Connection('http://my.mail.ru/apps/' + str(app_id)) # UrlRedirect1 = mr.sendRequestNoRedirect(None, cookies=session_cookies) # print 'UrlRedirect 1 = ', UrlRedirect1 mr = Connection('http://auth.mail.ru/sdc') data = {'from': 'http://my.mail.ru/apps/609744'} UrlRedirect2 = mr.sendRequestNoRedirect(data, cookies=session_cookies) # print 'UrlRedirect 2 = ', UrlRedirect2 mr = Connection('http://my.mail.ru/sdc') # data = {'token':UrlRedirect2[28:]} data = {'token': UrlRedirect2.split('=')[1]} # print 'data-token = ', data # self.__tokenMR = UrlRedirect2.split('=')[1] session_cookies3 = mr.sendRequestNoRedirect(data, cookies=session_cookies, getCookies=True) # print 'session_cookies3 = ', session_cookies3 session_cookies_sdc = (session_cookies3.output(attrs=[], header='', sep=';')) # print 'session_cookies_sdc = ', session_cookies_sdc session_cookies += ('; ' + session_cookies_sdc) self.__session_cookies = session_cookies # self._credentials.setSessionCookies(session_cookies) mr = Connection('http://my.mail.ru/apps/' + str(app_id)) html = mr.sendRequest(None, cookies=session_cookies) params = None if html: #open('html.txt', 'a').write(html.encode('utf-8')) matcher = re.compile('.*zombiefarm.html\?(.*?)"') for line in html.split('\n'): match = matcher.match(line) if match is not None: params = match.group(1) break if params is not None: pairs = params.split('&') params = {} for pair in pairs: key = pair.split('=')[0] value = pair.split('=')[1] params[key] = value #print key, value return params
def _getFriendsListMR2(self): # MR friendsid = [] #return friendsid print u'Загружаем список друзей...' offset = 0 while True: post = { 'method': 'friends.getAppUsers', 'app_id': '609744', 'offset': str(offset), 'session_key': self.__api_access_token } post_keys = sorted(post.keys()) param_str = "".join([ "%s=%s" % (str(key), vkontakte.api._encode(post[key])) for key in post_keys ]) param_str = self.__game_api_user_id + param_str + u'5cbd867117243d62af914948498eb3de' sign = md5(param_str).hexdigest().lower() post.update({'sig': sign}) BASE_URL = Connection('http://www.appsmail.ru/platform/api') resp_fr = BASE_URL.sendRequest(post, cookies=self.__session_cookies) while resp_fr == None: print u'Друзья заедают... попробуем ещё раз' time.sleep(0.5) resp_fr = BASE_URL.sendRequest(post, cookies=self.__session_cookies) add = eval(resp_fr) #add = eval(BASE_URL.sendRequest(post, cookies=self.__session_cookies)) print 'load ', len(add) friendsid.extend(add) offset += 1000 if len(add) < 1000: break else: time.sleep(0.34) friendsid = list(set(friendsid)) print(u'Всего друзей в списке: %s' % str(len(friendsid))).encode('cp866') return friendsid
def get_game_params(self): params = self.getAppParams('612925') self.__game_api_user_id = params['viewer_id'] game_auth_key = params['auth_key'] self.__api_access_token = params['access_token'] game_url = 'https://java.shadowlands.ru/zombievk/go' connection = Connection(game_url) self._save_key(game_auth_key) return (self.__game_api_user_id, game_auth_key, self.__api_access_token, connection)
def _getFriendsAllMR0(self): # All MR friends_all_id = [] #return friends_all_id offset = 0 while True: post = { 'method': 'friends.get', 'app_id': '609744', 'offset': str(offset), 'session_key': self.__api_access_token } post_keys = sorted(post.keys()) param_str = "".join([ "%s=%s" % (str(key), vkontakte.api._encode(post[key])) for key in post_keys ]) param_str = self.__game_api_user_id + param_str + u'5cbd867117243d62af914948498eb3de' sign = md5(param_str).hexdigest().lower() post.update({'sig': sign}) BASE_URL = Connection('http://www.appsmail.ru/platform/api') resp_fr = BASE_URL.sendRequest(post, cookies=self.__session_cookies) while resp_fr == None: print u'Друзья заедают... попробуем ещё раз' time.sleep(0.5) resp_fr = BASE_URL.sendRequest(post, cookies=self.__session_cookies) add = eval(resp_fr) print 'load MR', len(add) friends_all_id.extend(add) offset += 1000 if len(add) < 1000: break else: time.sleep(0.34) print(u'Друзей в Моём Мире: %s' % str(len(friends_all_id))).encode('cp866') with open('statistics\\' + self.curuser + 'friends_all.txt', 'w') as f: f.write(friends_all_id.encode("UTF-8", "ignore")) return friends_all_id
def download(self, filename): try: last_modified_time = self._getModificationTime(filename) except: last_modified_time = None print 'Load items for site', self.__site, if self.__site == 'mr': url = 'https://jmr.shadowlands.ru/zombiemr/items' elif self.__site == 'vk' or self.__site == 'ok': url = 'https://java.shadowlands.ru/zombievk/items' else: # url = 'http://java.shadowlands.ru/zombieok/items' url = 'https://jok.shadowlands.ru/zombieok/items' if last_modified_time == None or time.localtime( os.path.getmtime( filename)).tm_mday != time.localtime().tm_mday: if not self.__ignore_errors: data = Connection(url).getChangedDocument( data={'lang': 'ru'}, last_client_time=last_modified_time) else: while 1: try: #print 'Download items...', data = Connection(url).getChangedDocument( data={'lang': 'ru'}, last_client_time=last_modified_time) #print 'Items downloaded!', # data_compressed = Connection(url).getChangedDocument(data={u'compress': u'true', 'lang': 'ru'}, last_client_time=last_modified_time) # data = zlib.decompress(data_compressed) #items = json.loads(data) break except: print 'Refresh download...' #with open(filename, 'w') as f: f.write(data.encode('utf-8')) if data: if os.path.isfile(filename): os.remove(filename) with open(filename, 'w') as f: f.write(data.encode('utf-8'))
def getAppParams2(self, params): post = { 'signed_request': params['key'], 'fb_locale': 'ru_RU', } mr = Connection( 'https://zombie-fb.shadowlands.ru/zombiefb/?fb_source=appcenter&fb_appcenter=1' ) html = mr.sendRequest(post, None) if html: myFile = open('_html_ap2.html', 'wb') myFile.write(html.encode("utf-8")) myFile.close() v = html.find('flashvars') f = html.find("key:'", v) if f > 0: f = f + 5 t = html.find("'", f) if f > 0 and t > 0: params['key'] = html[f:t] f = html.find("auth:'", v) if f > 0: f = f + 6 t = html.find("'", f) if f > 0 and t > 0: params['auth'] = html[f:t] return params
def get_game_params( self): # Called from game_engine.py->__create_request_sender() # Returns api_user_id, game_auth_key, api_access_token, connection params = self.getAppParams() #print 'params ', params # print 'FLOW[okutils.py]: OK():get_game_params()' ok_user_id = params['logged_user_id'] ok_auth_key = params['auth_sig'] ok_session_key = params['session_secret_key'] game_url = 'http://jok.shadowlands.ru/zombieok/go' connection = Connection(game_url) self.__params = params self._ok_user_id = ok_user_id return (ok_user_id, ok_auth_key, ok_session_key, connection)
def getAppParams(self, app_id, session_cookies=None): if session_cookies is None: session_cookies = self._getSessionCookies() vk = Connection('https://vk.com/app' + str(app_id)) html = vk.sendRequest(None, cookies=session_cookies) #open('html.tmp','w').write(html.encode('utf-8')) params = None if html: matcher = re.compile('.*var params = (.*);$') for line in html.split('\n'): match = matcher.match(line) if match is not None: params = match.group(1) break if params is not None: #print json.loads(params) #return json.loads(params) try: return json.loads(params) except: print 'Vk auth failed for app%s' % app_id return None return params
def _validateSessionCookies(self, session_cookies): valid = False if session_cookies is not None: mr = Connection('http://my.mail.ru/apps/609744') html = mr.sendRequest(None, cookies=session_cookies) params = None if html: #open('html.txt', 'a').write(html.encode('utf-8')) matcher = re.compile('.*zombiefarm.html\?(.*?)"') for line in html.split('\n'): match = matcher.match(line) if match is not None: params = match.group(1) break if params is not None: pairs = params.split('&') params = {} for pair in pairs: key = pair.split('=')[0] value = pair.split('=')[1] params[key] = value #print key, value valid = params is not None return valid
def get_game_params(self): params = self.getAppParams('609744') #print 'params1 = ', params params['ext_perm'] = params['ext_perm'].replace('%2C', ',') self.__game_api_user_id = params['oid'] self.__game_auth_key = params['sig'] self.__auth_key = params['authentication_key'] self.__api_access_token = params['session_key'] self.__window_id = params['window_id'] game_url = 'https://jmr.shadowlands.ru/zombiemr/go' connection = Connection(game_url) self.__params = params #print 'params = ', params self._save_key() return (self.__game_api_user_id, self.__game_auth_key, self.__api_access_token, connection)
def _getSessionCookies(self): session_cookies = '' # self._credentials.getSessionCookies() cookies_are_valid = self._validateSessionCookies(session_cookies) if not cookies_are_valid: print 'Session old. Autentification...' username = self._credentials.getUserEmail() password = self._credentials.getUserPassword() post = { 'act': 'login', 'role': 'al_frame', 'expire': '', 'captcha_sid': '', 'captcha_key': '', '_origin': 'https://vk.com', 'email': username, 'pass': password } vk = Connection('https://vk.com/') session_cookies, html = vk.sendRequest(data=None, getCookies=True, getContent=True) session_cookies = ( 'Cookie:' + session_cookies.output(attrs=[], header='', sep=';')) if html: # with open('html.txt', 'w') as f: # f.write(html.encode('UTF-8')) matcher = re.compile( r'<input type="hidden" name="([^"]+)" value="([^"]*)" />') post.update(dict(matcher.findall(html))) # print 'post', post vk = Connection('https://login.vk.com/?act=login') session_cookies = vk.sendRequest( post, getCookies=True, cookies=session_cookies) # , cookies = session_cookies session_cookies = ( 'Cookie:' + session_cookies.output(attrs=[], header='', sep=';')) # print session_cookies # self._credentials.setSessionCookies(session_cookies) return session_cookies