Итак, вопрос, как мне кажется, связан с кодировкой / декодированием. Я пытался извлечь код Javascript из URL https://www.hackthebox.eu//js/inviteapi.min.js
. Не обманывайтесь с помощью URL, я не занимаюсь незаконными вещами. Однако, когда я копирую и вставляю код и помещаю его в свою программу python, а также использую библиотеку запросов для получения контента с одного и того же URL-адреса, результаты будут разными. Вот мой код:
SNIPPED
parse = urlparse(each_lines)
uscheme, uloc, upath = parse.scheme, parse.netloc, parse.path
if not re.search(".*\.js$", upath):
continue
if re.search(".*\.js$", upath):
jsurl = uscheme+"://"+uloc+upath
jsreq = requests.get(jsurl)
jscont = jsreq.content.decode('ascii')
htb = """//This javascript code looks strange...is it obfuscated???
eval(function(p,a,c,k,e,r){e=function(c){return c.toString(a)};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('0 3(){$.4({5:"6",7:"8",9:\'/b/c/d/e/f\',g:0(a){1.2(a)},h:0(a){1.2(a)}})}',18,18,'function|console|log|makeInviteCode|ajax|type|POST|dataType|json|url||api|invite|how|to|generate|success|error'.split('|'),0,{}))"""
print(len(jsbeautifier.beautify(jscont)))
print("--------------------------------------------------SEPARATOR------------------------------------------------------------")
print(len(jsbeautifier.beautify(htb)))
SNIPPED
, и вот результат, который я получаю: Длина другая. Раньше я использовал без len и js -beautify не работал. Кроме того, я заметил, что запросы дают мне байты, а не строку, поэтому я думаю, что проблема в декодировании. Я пробовал много кодировок, таких как ascii и UTF-8,16,32, однако ни один из них не дал правильного вывода, в котором мог бы работать js -beautify. Есть идеи, как это решить. Запросы имеют два атрибута: контент и текст. Контент дает мне байты, а текст дает мне строку. Однако даже при переходе от содержимого к тексту длина различается. Нужна помощь в том, что делать, чтобы получить ту же строку, что и в браузере.