Пишу авторизацию на сайт. Один параметр передается в виде выражения на 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