美拍小視頻去水印

分享一下逆向js的經驗

  1. 進入美拍任意一個視頻頁面,通過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當中一致,否則調試過程中很混亂,導致自己大腦短路。
以上就是破解美拍視頻無水印的方法。喜歡的或者不懂的可評論提問

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章