From 9daeec1588e17b124b60cb979204f335385db590 Mon Sep 17 00:00:00 2001 From: James Bunton Date: Sat, 21 Jun 2014 08:52:02 +1000 Subject: [PATCH] fixed JS function finder --- youtube.cgi | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) 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) -- 2.39.2