分享一下逆向js的经验
- 进入美拍任意一个视频页面,通过F12控制台
通过点击顺序到js中,全局搜索mp4,可以找到一下代码
这里发现比较可疑,打个断点,重新刷新页面,断点到此处,然后点击下一步
断点来到6114行,把鼠标放到a上,可以发现,就是页面传过来的data-video这个属性的值。
可以发现,a这个变量经过了什么步骤,相应的函数在上方也有。至于有些里面有些 h,k是啥,在上面也有相应的说明了
相信求出来下方这个值不是什么难题了。耐心一点把上方的代码转成python就行了
最后就是把求出来的值放到g.atob当中去,我们继续打断点,进入这个函数
如果看不出来这个是base64解码,可以用js2py或者execpy调用js代码即可,但实际上它就是一个base64编码,然后用base64解一下码就可以了。
以下贴python实现代码
# -*- coding: utf-8 -*-
import base64
a = "e1f1aHR0cDosoJMIDBBWvL212dmlkZW8xMC5tZWl0dWRhdGEuY29tLzViNTgxNWE3OWIyM2I3ODY3X0gyNjRfMV8xOTdjMTIxM2E0ZDE2NC5tcDQ/az03ZWI2Y2IyNzZjMjZlYmRkMmY0ZDY1ZWZhMzlhMDcyNCZ0PTVjMTZX0GecYxOWFl"
def getHex(a):
hex_1 = a[:4][::-1]
str_1 = a[4:]
return str_1, hex_1
def getDec(a):
b = str(int(a, 16))
c = list(b[:2])
d = list(b[2:])
return c, d
def substr(a, b):
k = int(b[0])
c = a[:k]
d = a[k:k+int(b[1])]
temp = a[int(b[0]):].replace(d, "")
result = c + temp
return result
def getPos(a, b):
b[0] = len(a) - int(b[0]) - int(b[1])
return b
str1, hex1 = getHex(a)
pre, tail = getDec(hex1)
d = substr(str1, pre)
kk = substr(d, getPos(d, tail))
a = base64.b64decode(kk)
print(a)
另外说一下,逆向调试的时候变量名最好和js当中一致,否则调试过程中很混乱,导致自己大脑短路。
以上就是破解美拍视频无水印的方法。喜欢的或者不懂的可评论提问