mirror of
https://github.com/luzhisheng/js_reverse.git
synced 2025-04-20 03:59:57 +08:00
pc_抖音破解
This commit is contained in:
parent
da7e32110b
commit
d5833b7d34
1150
抖音js逆向学习/pc_抖音破解/node/_ac_signature.js
Normal file
1150
抖音js逆向学习/pc_抖音破解/node/_ac_signature.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,269 +0,0 @@
|
|||||||
function caad(e, t, n) {
|
|
||||||
"use strict";
|
|
||||||
var r = n("23e7")
|
|
||||||
, i = n("4d641").includes
|
|
||||||
, o = n("44d2")
|
|
||||||
, a = n("ae40")
|
|
||||||
, s = a("indexOf", {
|
|
||||||
ACCESSORS: !0,
|
|
||||||
1: 0
|
|
||||||
});
|
|
||||||
r({
|
|
||||||
target: "Array",
|
|
||||||
proto: !0,
|
|
||||||
forced: !s
|
|
||||||
}, {
|
|
||||||
includes: function(e) {
|
|
||||||
return i(this, e, arguments.length > 1 ? arguments[1] : void 0)
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
o("includes")
|
|
||||||
}
|
|
||||||
|
|
||||||
function f3f3(e, t, n) {
|
|
||||||
"use strict";
|
|
||||||
n.d(t, "a", (function() {
|
|
||||||
return o
|
|
||||||
}
|
|
||||||
));
|
|
||||||
n("a4d3"),
|
|
||||||
n("4de4"),
|
|
||||||
n("4160"),
|
|
||||||
n("e439"),
|
|
||||||
n("dbb4"),
|
|
||||||
n("b64b"),
|
|
||||||
n("159b");
|
|
||||||
var r = n("fc11");
|
|
||||||
function i(e, t) {
|
|
||||||
var n = Object.keys(e);
|
|
||||||
if (Object.getOwnPropertySymbols) {
|
|
||||||
var r = Object.getOwnPropertySymbols(e);
|
|
||||||
t && (r = r.filter((function(t) {
|
|
||||||
return Object.getOwnPropertyDescriptor(e, t).enumerable
|
|
||||||
}
|
|
||||||
))),
|
|
||||||
n.push.apply(n, r)
|
|
||||||
}
|
|
||||||
return n
|
|
||||||
}
|
|
||||||
function o(e) {
|
|
||||||
for (var t = 1; t < arguments.length; t++) {
|
|
||||||
var n = null != arguments[t] ? arguments[t] : {};
|
|
||||||
t % 2 ? i(Object(n), !0).forEach((function(t) {
|
|
||||||
Object(r["a"])(e, t, n[t])
|
|
||||||
}
|
|
||||||
)) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : i(Object(n)).forEach((function(t) {
|
|
||||||
Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
|
|
||||||
}
|
|
||||||
))
|
|
||||||
}
|
|
||||||
return e
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function b0c0(e, t, n) {
|
|
||||||
var r = n("83ab")
|
|
||||||
, i = n("9bf2").f
|
|
||||||
, o = Function.prototype
|
|
||||||
, a = o.toString
|
|
||||||
, s = /^\s*function ([^ (]*)/;
|
|
||||||
r && !("name"in o) && i(o, "name", {
|
|
||||||
configurable: !0,
|
|
||||||
get: function() {
|
|
||||||
try {
|
|
||||||
return a.call(this).match(s)[1]
|
|
||||||
} catch (e) {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function d3b7(e, t, n) {
|
|
||||||
var r = n("00ee")
|
|
||||||
, i = n("6eeb")
|
|
||||||
, o = n("b041");
|
|
||||||
r || i(Object.prototype, "toString", o, {
|
|
||||||
unsafe: !0
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function aaa(e, t, n) {
|
|
||||||
"use strict";
|
|
||||||
// n.d(t, "b", (function() {
|
|
||||||
// return C
|
|
||||||
// }
|
|
||||||
// )),
|
|
||||||
// n.d(t, "a", (function() {
|
|
||||||
// return k
|
|
||||||
// }
|
|
||||||
// ));
|
|
||||||
caad;
|
|
||||||
var r = f3f3,
|
|
||||||
i = ({n: "RadarArea"}, b0c0, d3b7, n("3ca3"), n("159b"), n("ddb0"), n("2b3d"), n("83b9"))
|
|
||||||
, o = n.n(i)
|
|
||||||
, a = n("2d83")
|
|
||||||
, s = n.n(a)
|
|
||||||
, l = n("467f")
|
|
||||||
, c = n.n(l)
|
|
||||||
, u = n("30b5")
|
|
||||||
, h = n.n(u)
|
|
||||||
, f = n("7aac")
|
|
||||||
, d = n.n(f)
|
|
||||||
, p = n("932e");
|
|
||||||
var g = function(e) {
|
|
||||||
var t = o()(e.baseURL, e.url)
|
|
||||||
, n = h()(t, e.params, e.paramsSerializer);
|
|
||||||
try {
|
|
||||||
["post", "put", "patch", "delete"].includes(e.method) ? function(e, t) {
|
|
||||||
var n = document.createElement("form");
|
|
||||||
n.method = t.method,
|
|
||||||
n.target = "_blank",
|
|
||||||
n.action = e;
|
|
||||||
var r, i = t.data ? JSON.parse(t.data) : {};
|
|
||||||
t.xsrfHeaderName && ((t.withCredentials || Object(p["a"])(t.url)) && t.xsrfCookieName && (r = d.a.read(t.xsrfCookieName)),
|
|
||||||
r && (i[t.xsrfHeaderName] = r));
|
|
||||||
var o = h()("/", i, t.paramsSerializer)
|
|
||||||
, a = new URL(o,location.origin);
|
|
||||||
a.searchParams.forEach((function(e, t) {
|
|
||||||
var r = document.createElement("input");
|
|
||||||
r.name = t,
|
|
||||||
r.value = e,
|
|
||||||
n.appendChild(r)
|
|
||||||
}
|
|
||||||
)),
|
|
||||||
document.body.appendChild(n),
|
|
||||||
n.submit(),
|
|
||||||
n.remove()
|
|
||||||
}(n, e) : window.open(n, "_blank", "noopener")
|
|
||||||
} catch (a) {
|
|
||||||
var r = {
|
|
||||||
status: 418,
|
|
||||||
statusText: "I'm a teapot",
|
|
||||||
config: e
|
|
||||||
};
|
|
||||||
throw new s.a(a.message,e,null,void 0,r)
|
|
||||||
}
|
|
||||||
var i = {
|
|
||||||
data: void 0,
|
|
||||||
status: 200,
|
|
||||||
statusText: "OK",
|
|
||||||
config: e,
|
|
||||||
headers: {}
|
|
||||||
};
|
|
||||||
return new Promise((function(e, t) {
|
|
||||||
c()(e, t, i)
|
|
||||||
}
|
|
||||||
))
|
|
||||||
}
|
|
||||||
, m = (n("99af"),
|
|
||||||
n("4de4"),
|
|
||||||
n("a15b"),
|
|
||||||
n("d81d"),
|
|
||||||
n("b64b"),
|
|
||||||
n("2532"),
|
|
||||||
n("0122"))
|
|
||||||
, v = n("6821")
|
|
||||||
, y = n.n(v);
|
|
||||||
function b(e) {
|
|
||||||
return Array.isArray(e) || "boolean" == typeof e
|
|
||||||
}
|
|
||||||
function A(e, t, n) {
|
|
||||||
var r = null != t ? t : {}
|
|
||||||
, i = r.include
|
|
||||||
, o = r.enforceWithKeys
|
|
||||||
, a = void 0 === o ? [] : o
|
|
||||||
, s = Object.keys(e);
|
|
||||||
if (n && i) {
|
|
||||||
var l = i.concat(["service_name", "service_method", "sign_strict"]);
|
|
||||||
s = s.filter((function(e) {
|
|
||||||
return l.includes(e)
|
|
||||||
}
|
|
||||||
))
|
|
||||||
}
|
|
||||||
var c = s.sort().map((function(t) {
|
|
||||||
var n = e[t];
|
|
||||||
return function(e) {
|
|
||||||
return null == e
|
|
||||||
}(n) ? "" : t + (!a.includes(t) && function(e) {
|
|
||||||
return ["string", "number"].includes(Object(m["a"])(e))
|
|
||||||
}(n) ? n : t)
|
|
||||||
}
|
|
||||||
)).join("");
|
|
||||||
return y()(c + "e39539b8836fb99e1538974d3ac1fe98")
|
|
||||||
}
|
|
||||||
function _(e) {
|
|
||||||
if (!e || "object" !== Object(m["a"])(e))
|
|
||||||
return e;
|
|
||||||
for (var t = {}, n = 0, r = Object.keys(e); n < r.length; n++) {
|
|
||||||
var i = r[n]
|
|
||||||
, o = e[i];
|
|
||||||
t[i] = b(o) ? JSON.stringify(o) : o
|
|
||||||
}
|
|
||||||
return t
|
|
||||||
}
|
|
||||||
function x(e, t, n) {
|
|
||||||
var i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {}
|
|
||||||
, o = i.strict
|
|
||||||
, a = i.serializing
|
|
||||||
, s = i.rule
|
|
||||||
, l = {
|
|
||||||
service_name: e,
|
|
||||||
service_method: t,
|
|
||||||
sign_strict: o ? 1 : void 0
|
|
||||||
};
|
|
||||||
return Object(r["a"])(Object(r["a"])(Object(r["a"])({}, a ? _(n) : n), l), {}, {
|
|
||||||
sign: A(Object(r["a"])(Object(r["a"])({}, n), l), s, o)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
var w = {
|
|
||||||
get: "/h/api/gateway/handler_get/",
|
|
||||||
post: "/h/api/gateway/handler_post/"
|
|
||||||
}
|
|
||||||
, C = function(e) {
|
|
||||||
var t;
|
|
||||||
if (e.microservice) {
|
|
||||||
var n = e.microservice
|
|
||||||
, r = e.url
|
|
||||||
, i = null !== (t = e.gatewayURLs) && void 0 !== t ? t : w;
|
|
||||||
["post", "put", "patch", "delete"].includes(e.method) ? (e.data = x(n, r, e.data, {
|
|
||||||
strict: e.gatewayStrictMode,
|
|
||||||
rule: e.gatewaySignRule
|
|
||||||
}),
|
|
||||||
e.url = i.post) : (e.params = x(n, r, e.params, {
|
|
||||||
strict: e.gatewayStrictMode,
|
|
||||||
serializing: !0,
|
|
||||||
rule: e.gatewaySignRule
|
|
||||||
}),
|
|
||||||
e.url = i.get),
|
|
||||||
e.withGatewayHeaders && (e.headers["x-star-service-name"] = n,
|
|
||||||
e.headers["x-star-service-method"] = r)
|
|
||||||
}
|
|
||||||
return e
|
|
||||||
};
|
|
||||||
function S(e) {
|
|
||||||
return (null == e ? void 0 : e.open) && (e = Object(r["a"])(Object(r["a"])({}, e), {}, {
|
|
||||||
adapter: g,
|
|
||||||
unwrap: !1
|
|
||||||
})),
|
|
||||||
e
|
|
||||||
}
|
|
||||||
var k = function(e) {
|
|
||||||
return {
|
|
||||||
axios: e,
|
|
||||||
get: function(e, t, n) {
|
|
||||||
return this.axios.get(t, Object(r["a"])(Object(r["a"])({}, S(n)), {}, {
|
|
||||||
microservice: e
|
|
||||||
}))
|
|
||||||
},
|
|
||||||
post: function(e, t, n, i) {
|
|
||||||
return this.axios.post(t, n, Object(r["a"])(Object(r["a"])({}, S(i)), {}, {
|
|
||||||
microservice: e
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sign = aaa();
|
|
@ -27,6 +27,7 @@ def get_ac_nonce(encoded_text):
|
|||||||
}
|
}
|
||||||
conn.request("GET", url=url, headers=headers)
|
conn.request("GET", url=url, headers=headers)
|
||||||
response = conn.getresponse()
|
response = conn.getresponse()
|
||||||
|
print(response.read().decode())
|
||||||
cookie_dict = get_cookie_dict(response)
|
cookie_dict = get_cookie_dict(response)
|
||||||
__ac_nonce = cookie_dict.get('__ac_nonce')
|
__ac_nonce = cookie_dict.get('__ac_nonce')
|
||||||
conn.close()
|
conn.close()
|
||||||
@ -41,7 +42,7 @@ def get_ttwid(ac_nonce, encoded_text):
|
|||||||
'*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
|
'*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
|
||||||
'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8',
|
'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8',
|
||||||
'cache-control': 'no-cache',
|
'cache-control': 'no-cache',
|
||||||
'cookie': f'__ac_nonce={ac_nonce}; __ac_signature=_02B4Z6wo00f01qT38OwAAIDBlV1UaegcPdak1.RAAM4EChrzmTNVTdns5RT2dW5igX46-5oWSdY3gufX2aITjm7dpjjH8v3edtU9Z8z1uZ5Qq6pR7L-ZcR3HDMDQa0lX9Q7Op7IQTaTqlAnY70;',
|
'cookie': f'__ac_nonce={ac_nonce}; __ac_signature=_02B4Z6wo00f01Uzv-9gAAIDCfUVfXfA0ld1Mz.9AADf1d8;',
|
||||||
'pragma': 'no-cache',
|
'pragma': 'no-cache',
|
||||||
'referer': f'https://www.douyin.com/search/{encoded_text}?source=normal_search&type=user',
|
'referer': f'https://www.douyin.com/search/{encoded_text}?source=normal_search&type=user',
|
||||||
'sec-ch-ua': '"Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"',
|
'sec-ch-ua': '"Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"',
|
||||||
@ -54,6 +55,7 @@ def get_ttwid(ac_nonce, encoded_text):
|
|||||||
'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) '
|
'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) '
|
||||||
'Chrome/114.0.0.0 Safari/537.36'
|
'Chrome/114.0.0.0 Safari/537.36'
|
||||||
}
|
}
|
||||||
|
print(headers['cookie'])
|
||||||
conn.request("GET", url=url, headers=headers)
|
conn.request("GET", url=url, headers=headers)
|
||||||
response = conn.getresponse()
|
response = conn.getresponse()
|
||||||
# print(response.read().decode())
|
# print(response.read().decode())
|
||||||
@ -62,12 +64,13 @@ def get_ttwid(ac_nonce, encoded_text):
|
|||||||
ttwid = cookie_dict.get('ttwid')
|
ttwid = cookie_dict.get('ttwid')
|
||||||
conn.close()
|
conn.close()
|
||||||
return ttwid
|
return ttwid
|
||||||
except AttributeError as e:
|
except Exception as e:
|
||||||
print(f"报错{e}")
|
print(f"报错{e}")
|
||||||
|
|
||||||
|
|
||||||
def get_cookie_dict(response):
|
def get_cookie_dict(response):
|
||||||
cookies_dict = {}
|
cookies_dict = {}
|
||||||
|
if response.getheader("Set-Cookie"):
|
||||||
cookie_str = response.getheader("Set-Cookie").replace('secure, ', '')
|
cookie_str = response.getheader("Set-Cookie").replace('secure, ', '')
|
||||||
cookies_list = cookie_str.split(";")
|
cookies_list = cookie_str.split(";")
|
||||||
for cookie in cookies_list:
|
for cookie in cookies_list:
|
||||||
@ -75,6 +78,8 @@ def get_cookie_dict(response):
|
|||||||
name, value = cookie.strip().split("=", 1)
|
name, value = cookie.strip().split("=", 1)
|
||||||
cookies_dict[name] = value
|
cookies_dict[name] = value
|
||||||
return cookies_dict
|
return cookies_dict
|
||||||
|
else:
|
||||||
|
raise ValueError('Set-Cookie为空')
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
41
抖音js逆向学习/pc_抖音破解/tool/run.py
Normal file
41
抖音js逆向学习/pc_抖音破解/tool/run.py
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
import requests
|
||||||
|
import execjs
|
||||||
|
|
||||||
|
|
||||||
|
def get_ac_sign(ac_nonce):
|
||||||
|
with open('../node/_ac_signature.js', 'r', encoding='utf-8') as f:
|
||||||
|
b = f.read()
|
||||||
|
c = execjs.compile(b)
|
||||||
|
d = c.call('get_ac_signature', ac_nonce)
|
||||||
|
return d
|
||||||
|
|
||||||
|
|
||||||
|
def run():
|
||||||
|
sess = requests.session()
|
||||||
|
url = "https://www.douyin.com/user/MS4wLjABAAAA8Ag2TMrWvfZWpLywypFRGhoL2_A8FdXawWfuh29bJWCJ_BCr23KY0S9O76eC4_oC"
|
||||||
|
__ac_nonce = "06384169e00527ffaf338"
|
||||||
|
__ac_signature = get_ac_sign(__ac_nonce)
|
||||||
|
sess.headers = {
|
||||||
|
'authority': 'www.douyin.com',
|
||||||
|
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
|
||||||
|
'accept-language': 'zh-CN,zh;q=0.9,en-XA;q=0.8,en;q=0.7,zh-TW;q=0.6',
|
||||||
|
'cache-control': 'max-age=0',
|
||||||
|
'dnt': '1',
|
||||||
|
'sec-ch-ua': '".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"',
|
||||||
|
'sec-ch-ua-mobile': '?0',
|
||||||
|
'sec-ch-ua-platform': '"Windows"',
|
||||||
|
'sec-fetch-dest': 'document',
|
||||||
|
'sec-fetch-mode': 'navigate',
|
||||||
|
'sec-fetch-site': 'same-origin',
|
||||||
|
'cookie': f'__ac_nonce={__ac_nonce}; __ac_signature={__ac_signature}',
|
||||||
|
'sec-fetch-user': '?1',
|
||||||
|
'upgrade-insecure-requests': '1',
|
||||||
|
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'
|
||||||
|
}
|
||||||
|
payload = {}
|
||||||
|
response = sess.get(url, data=payload)
|
||||||
|
print(response.text)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
run()
|
Loading…
x
Reference in New Issue
Block a user