如何分析html中的json
如何分析html中的json
在js逆向的过程中,时常要使用正则表达式去匹配htnl的内容,有时候关键的数据都在json中,这个怎么分析这个json呢
1.使用vscode 打开html
vscode的js插件会分析html文件,这样就可以理清楚结构关系,找到关键的json
2.去除json中的转移字符
json字符串被dumps会被转义,有两种办法可以去除
使用visual stduo
使用文件流将html加载进来,并赋值给string,调试的时候点击查看就可以看到load后的json字符串
使用https://www.json.cn/
点击json压缩转义
在下方点击去除转义即可
使用python匹配json
import re,json
text = r"""
var testjson = {
"downloader":{
"media_type": "video",
"video_quality": "2160",
"nocheckcertificate":"true",
"save_path":"./videos",
"url":"https://www.youtube.com/watch?v=gR5lCNaqlNE"
},
"ffmpeg_location":"../../third/win/ffmpeg",
"log_path":"C:\\Users\\Administrator\\AppData\\Local\\HitPaw Software\\HitPawVideoConverter\\logs\\download"
}fsdflksdjfklsdjflkjdsffsdfhjdkghndsjfkdjkfhsdhfsdfdsfklsdkfhsdkf
dsfsdfsdfsdfsdfsdfsdfsdfsdfadsfdsfads var test2 = {
"fuck" : "you"
}fsdfsdfsdf
"""
match = re.search(r"(?:var testjson\s*=)\s*(\{(?s:.+)\})",text)
s = match.group(1)
obj,pos = json.JSONDecoder().raw_decode(s,0)
print(obj)
上面的代码是提取text中testjson的json,其核心思想是将满足匹配结果的最大集提取出来,再通过扫描第一个json来提取目标json
(?:re) 表示不捕获这个分组
(?s:re) 表示不捕获这个分组,且这个分组内的正则匹配换行符