Exemplo n.º 1
0
class CloudflareResolver(object):
    def __init__(self):
        #        self.net = Net(cookie_file='/mnt/network/cookies', http_debug=True, cloudflare=True)
        self.net = Net(cookie_file='/mnt/network/cookies', cloudflare=True)
        url = str(sys.argv[1])
        return self.get_answer_code(url)

    def get_answer_code(self, web_url):
        headers = {'User-Agent': common.FF_USER_AGENT}
        html = self.net.http_GET(web_url, headers=headers).content
        #html = self.request(web_url, cookie_file=/mnt/network/cookies, cloudflare=True)
        ret = self.net.save_cookies('/mnt/network/cookies')
        print "html", html.encode('utf8')
Exemplo n.º 2
0
class WaawResolver(object):
    name = "waaw"
    domains = ["waaw.tv", "hqq.watch", "netu.tv", "hqq.tv"]
    pattern = "(?://|\.)((?:waaw|netu|hqq)\.(?:tv|watch))/(?:watch_video\.php\?v|.+?vid)=([a-zA-Z0-9]+)"

    def __init__(self):
        #        self.net = Net()
        #        self.net = Net(cookie_file='/mnt/network/cookies', http_debug = True)
        self.net = Net(cookie_file='/mnt/network/cookies', http_debug=False)

        url = str(sys.argv[1])
        host = self.get_host_and_id(url)[0]
        media_id = self.get_host_and_id(url)[1]

        return self.get_media_url(host, media_id)

    def get_host_and_id(self, url):
        r = re.search(self.pattern, url, re.I)
        if r:
            return r.groups()
        else:
            return False

    def get_media_url1(self, host, media_id):
        web_url = self.get_url(host, media_id)
        link = self.net.http_GET(web_url).content
        if 'FILE WAS DELETED' in link:
            print 'File deleted.'
        else:
            video_link = str(re.compile('file[: ]*"(.+?)"').findall(link)[0])

            if len(video_link) > 0:
                print video_link
            else:
                print 'No playable video found.'

    def get_media_url(self, host, media_id):
        web_url = self.get_url(host, media_id)
        headers = {
            'User-Agent': common.FF_USER_AGENT,
            'Referer': 'https://waaw.tv/watch_video.php?v=%s&post=1' % media_id
        }
        html = self.net.http_GET(web_url, headers=headers).content
        ret = self.net.save_cookies('/mnt/network/cookies')

        if html:
            try:
                wise = re.search('(eval\s*\(function.*?)</script>', html,
                                 re.DOTALL | re.I).groups()[0]
                data_unwise = self.jswise(wise).replace("\\", "")
                try:
                    at = re.search('var at\s*=\s*"([^"]+)"', data_unwise,
                                   re.I).groups()[0]
                except:
                    at = ""
                try:
                    http_referer = re.search(
                        'var http_referer\s*=\s*"([^"]+)"', data_unwise,
                        re.I).groups()[0]
                except:
                    http_referer = ""

                player_url = "http://hqq.watch/sec/player/embed_player.php?iss=&vid=%s&at=%s&autoplayed=yes&referer=on&http_referer=%s&pass=&embed_from=&need_captcha=0&hash_from=" % (
                    media_id, at, http_referer)
                headers.update({'Referer': web_url})
                data_player = self.net.http_GET(player_url,
                                                headers=headers).content
                data_unescape = re.findall(
                    'document.write\(unescape\("([^"]+)"', data_player)

                data = ""
                for d in data_unescape:
                    data += urllib.unquote(d)

                data_unwise_player = ""
                wise = ""
                wise = re.search('(eval\s*\(function.*?)</script>',
                                 data_player, re.DOTALL | re.I)
                if wise:
                    data_unwise_player = self.jswise(wise.group(1)).replace(
                        "\\", "")

                try:
                    vars_data = re.search('/player/get_md5.php",\s*\{(.*?)\}',
                                          data, re.DOTALL | re.I).groups()[0]
                except:
                    vars_data = ""
                matches = re.findall('\s*([^:]+):\s*([^,]*)[,"]', vars_data)
                params = {}
                for key, value in matches:
                    if key == "adb":
                        params[key] = "0/"
                    elif '"' in value:
                        params[key] = value.replace('"', '')
                    else:
                        try:
                            value_var = re.search(
                                'var\s*%s\s*=\s*"([^"]+)"' % value, data,
                                re.I).groups()[0]
                        except:
                            value_var = ""
                        if not value_var and data_unwise_player:
                            try:
                                value_var = re.search(
                                    'var\s*%s\s*=\s*"([^"]+)"' % value,
                                    data_unwise_player, re.I).groups()[0]
                            except:
                                value_var = ""
                        params[key] = value_var

                params = urllib.urlencode(params)
                headers.update({
                    'X-Requested-With': 'XMLHttpRequest',
                    'Referer': player_url
                })
                data = ""
                data = self.net.http_GET(
                    "http://hqq.watch/player/get_md5.php?" + params,
                    headers=headers).content
                url_data = json.loads(data)
                media_url = self.tb(url_data["html5_file"].replace("#", ""))
                del headers["Referer"]
                #                del headers["X-Requested-With"]
                #                if media_url: return media_url + helpers.append_headers(headers)

                if media_url: print media_url + helpers.append_headers(headers)
#                headers = {'User-Agent': common.FF_USER_AGENT}
#                if media_url: print media_url + helpers.append_headers(headers)

            except Exception as e:
                #                raise ResolverError(e)
                print "errormsg=Video not found 2"


#        raise ResolverError('Video not found')
#        print "errormsg=Video not found"

    def tb(self, b_m3u8_2):
        j = 0
        s2 = ""
        while j < len(b_m3u8_2):
            s2 += "\\u0" + b_m3u8_2[j:(j + 3)]
            j += 3

        return s2.decode('unicode-escape').encode('ASCII', 'ignore')

    ## loop2unobfuscated
    def jswise(self, wise):
        while True:
            wise = re.search(
                "var\s.+?\('([^']+)','([^']+)','([^']+)','([^']+)'\)", wise,
                re.DOTALL)
            if not wise: break
            ret = wise = self.js_wise(wise.groups())

        return ret

    ## js2python
    def js_wise(self, wise):
        w, i, s, e = wise

        v0 = 0
        v1 = 0
        v2 = 0
        v3 = []
        v4 = []

        while True:
            if v0 < 5:
                v4.append(w[v0])
            elif v0 < len(w):
                v3.append(w[v0])
            v0 += 1
            if v1 < 5:
                v4.append(i[v1])
            elif v1 < len(i):
                v3.append(i[v1])
            v1 += 1
            if v2 < 5:
                v4.append(s[v2])
            elif v2 < len(s):
                v3.append(s[v2])
            v2 += 1
            if len(w) + len(i) + len(s) + len(e) == len(v3) + len(v4) + len(e):
                break

        v5 = "".join(v3)
        v6 = "".join(v4)
        v1 = 0
        v7 = []

        for v0 in range(0, len(v3), 2):
            v8 = -1
            if ord(v6[v1]) % 2: v8 = 1
            v7.append(chr(int(v5[v0:v0 + 2], 36) - v8))
            v1 += 1
            if v1 >= len(v4): v1 = 0

        return "".join(v7)

    def get_url2(self, host, media_id):
        return 'http://vodlocker.com/embed-%s-640x400.html' % media_id

    def get_url(self, host, media_id):
        #        return self._default_get_url(host, media_id, template='http://hqq.watch/player/embed_player.php?vid={media_id}&autoplay=no')
        return 'http://hqq.watch/player/embed_player.php?vid=%s&autoplay=no' % media_id