Найти - Пользователи
Полная версия: Исполнение кода javascript
Начало » Python для новичков » Исполнение кода javascript
1
shep
Здравствуйте.
Пишу авторизацию на сайт. Один параметр передается в виде выражения на java script. Естественно браузер просчитывает его и передает в запросе.

Выражение простое:
jsc= 10>(Math.abs(10)+Math.abs(76))?10+(Math.abs(10)+Math.abs(76))*2:(Math.abs(10)+Math.abs(76))+10*3
Готового интепретатора нигде не нашел.
Получается единственная проблема это преобразование условного оператора (cond?True:False) в эквивалент на python (True if cond else False).

Пытался составить регулярку для замены но срабатывает в 60 % случаев т.к. есть скобки и они несколько мешают правильной замене.
 
def _jsrecognize(text):
"""Translate javascrip to python syntax"""
oldtext=text
text=re.sub('([^(]*)\?(.*?)\:([^)]*)','(\g<2>) if (\g<1>) else (\g<3>) ',text,re.DOTALL)
text=text.strip()
print (text)
if _DEBUG: open('jsc.txt','a').write(text+'\n')
try:
return eval(text)
except:
print "Can't Eval"
text=oldtext
text=re.sub('([^(]*)\?(.*?)\:([^)]*)','(\g<2>) if (\g<1>) else (\g<3>) ',text,re.DOTALL)
text=text.strip()
print (text)
if _DEBUG: open('jsc.txt','a').write(text+'\n')
try:
return eval(text)
except:
return 0
Вобщем сижу мучаюсь. Помогите составить правильную регулярку или может все-таки есть модуль для такой элементарной эмуляции
cookie-god
Если ОС - Windows, то почему бы не записать ваш джаваскрипт в файл temp.js и не считать результат его выполнения через subprocess.check_output
temp.js может выглядеть вот так
jsc= 10>(Math.abs(10)+Math.abs(76))?10+(Math.abs(10)+Math.abs(76))*2:(Math.abs(10)+Math.abs(76))+10*3;
WScript.Echo(jsc);
сразу готовая функция для запуска жскрипт
>>> def execute_js(script):
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess._subprocess.STARTF_USESHOWWINDOW
return subprocess.check_output(["cscript.exe","//Nologo",script],startupinfo=startupinfo)

>>> execute_js("C:\\dd\\test.js")
'116\r\n'
shep
Спасибо.
А для какой версии этот код.

AttributeError: ‘module’ object has no attribute ‘_subprocess’
check_output тоже нет python 3.0.1 и 2.5
cookie-god
Я пробовал на 2.7, наверное, в вашем случае надо это как-то через пайпы делать, мануалы в интернете есть, ну или поставить 2.7 питон.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB