Форум сайта python.su
Здравствуйте.
Пишу авторизацию на сайт. Один параметр передается в виде выражения на 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
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
Офлайн
Если ОС - 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'
Отредактировано (Июль 2, 2011 17:28:12)
Офлайн
Спасибо.
А для какой версии этот код.
AttributeError: ‘module’ object has no attribute ‘_subprocess’
check_output тоже нет python 3.0.1 и 2.5
Офлайн
Я пробовал на 2.7, наверное, в вашем случае надо это как-то через пайпы делать, мануалы в интернете есть, ну или поставить 2.7 питон.
Офлайн