From: James Bunton Date: Fri, 20 Jun 2014 22:52:02 +0000 (+1000) Subject: fixed JS function finder X-Git-Url: https://code.delx.au/youtube-cgi/commitdiff_plain/9daeec1588e17b124b60cb979204f335385db590 fixed JS function finder --- diff --git a/youtube.cgi b/youtube.cgi index fc10e08..11d2538 100755 --- a/youtube.cgi +++ b/youtube.cgi @@ -84,9 +84,10 @@ def urlopen(url, offset=None): global referrer req = urllib2.Request(url) - if referrer: + if not referrer: + referrer = url + else: req.add_header("Referer", referrer) - referrer = url req.add_header("User-Agent", USER_AGENT) @@ -141,9 +142,18 @@ def extract_function(output, script, func_name): for dep in deps: extract_function(output, script, dep) +def find_func_name(script): + FUNC_NAME = R"([a-zA-Z0-9$]+)" + FUNC_PARAMS = R"(\([a-zA-Z]+\.s\))" + PATTERN = FUNC_NAME + FUNC_PARAMS + ";" + + match = re.search(PATTERN, script) + func_name = match.groups()[0] + return func_name + def decode_signature(js_url, s): script = urlopen(js_url).read() - func_name = re.search(R"\b([a-zA-Z]+)\([a-zA-Z]+\.s\);", script).groups()[0] + func_name = find_func_name(script) codes = [] extract_function(codes, script, func_name)