获取到某网站的源 html 内容,里面有很多 Script 标签。 其中一个 Script 标签执行了为变量赋值的操作。
<script>
foo.jsonData = {"name":"Bar"}
</script>
请问有什么合理且高效的办法获取{"name":"Bar"}
这个内容?
![]() |
1
kernelpanic 146 天前 ![]() ```
html.match(/foo.jsonData = (\{[^}]+})/)[1] ``` |
![]() |
3
jazzg62 146 天前
```ts
import { parse } from '@babel/parser'; import traverse from '@babel/traverse'; import generator from '@babel/generator'; import * as types from '@babel/types'; let obj = 'foo'; let pro = 'jsonData'; let script = `let foo = {} foo.jsonData = {"name":"Bar"} foo.aa = '123'; `; let ast = parse(script, { sourceType: 'script' }); let res = ''; traverse(ast, { AssignmentExpression(path) { let node = path.node; if(types.isMemberExpression(node.left) ){ let object = node.left.object; let property = node.left.property; if(types.isIdentifier(object) && object.name == obj && types.isIdentifier(property) && property.name == pro){ res = generator(node.right).code; } } }, }); console.log(res); ``` |
![]() |
4
jazzg62 146 天前
也可以用上面 ast 的形式来查找 foo.jsonData 的赋值操作
|