分享一下逆向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當中一致,否則調試過程中很混亂,導致自己大腦短路。
以上就是破解美拍視頻無水印的方法。喜歡的或者不懂的可評論提問