擅长:python、mysql、java
<p>使用<a href="https://code.google.com/p/pyv8/" rel="noreferrer">PyV8</a>,我可以做到这一点。但是,我必须用<code>return</code>替换<code>document.write</code>,因为没有DOM,因此也没有<code>document</code>。</p>
<pre><code>import PyV8
ctx = PyV8.JSContext()
ctx.enter()
js = """
function escramble_758(){
var a,b,c
a='+1 '
b='84-'
a+='425-'
b+='7450'
c='9'
document.write(a+c+b)
}
escramble_758()
"""
print ctx.eval(js.replace("document.write", "return "))
</code></pre>
<p>或者可以创建一个模拟文档对象</p>
<pre><code>class MockDocument(object):
def __init__(self):
self.value = ''
def write(self, *args):
self.value += ''.join(str(i) for i in args)
class Global(PyV8.JSClass):
def __init__(self):
self.document = MockDocument()
scope = Global()
ctx = PyV8.JSContext(scope)
ctx.enter()
ctx.eval(js)
print scope.document.value
</code></pre>