Beispiel #1
0
    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
Beispiel #2
0
 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
Beispiel #3
0
    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
Beispiel #4
0
 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)
Beispiel #5
0
 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)
Beispiel #6
0
 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
Beispiel #7
0
    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 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)
Beispiel #9
0
 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)
Beispiel #10
0
    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
Beispiel #11
0
    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
Beispiel #12
0
    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
Beispiel #13
0
 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
Beispiel #14
0
 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
Beispiel #15
0
 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