mirror of
https://github.com/luzhisheng/js_reverse.git
synced 2025-04-19 02:39:42 +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)
|
||||
response = conn.getresponse()
|
||||
print(response.read().decode())
|
||||
cookie_dict = get_cookie_dict(response)
|
||||
__ac_nonce = cookie_dict.get('__ac_nonce')
|
||||
conn.close()
|
||||
@ -41,7 +42,7 @@ def get_ttwid(ac_nonce, encoded_text):
|
||||
'*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
|
||||
'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8',
|
||||
'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',
|
||||
'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"',
|
||||
@ -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) '
|
||||
'Chrome/114.0.0.0 Safari/537.36'
|
||||
}
|
||||
print(headers['cookie'])
|
||||
conn.request("GET", url=url, headers=headers)
|
||||
response = conn.getresponse()
|
||||
# print(response.read().decode())
|
||||
@ -62,19 +64,22 @@ def get_ttwid(ac_nonce, encoded_text):
|
||||
ttwid = cookie_dict.get('ttwid')
|
||||
conn.close()
|
||||
return ttwid
|
||||
except AttributeError as e:
|
||||
except Exception as e:
|
||||
print(f"报错{e}")
|
||||
|
||||
|
||||
def get_cookie_dict(response):
|
||||
cookies_dict = {}
|
||||
cookie_str = response.getheader("Set-Cookie").replace('secure, ', '')
|
||||
cookies_list = cookie_str.split(";")
|
||||
for cookie in cookies_list:
|
||||
if "=" in cookie.strip():
|
||||
name, value = cookie.strip().split("=", 1)
|
||||
cookies_dict[name] = value
|
||||
return cookies_dict
|
||||
if response.getheader("Set-Cookie"):
|
||||
cookie_str = response.getheader("Set-Cookie").replace('secure, ', '')
|
||||
cookies_list = cookie_str.split(";")
|
||||
for cookie in cookies_list:
|
||||
if "=" in cookie.strip():
|
||||
name, value = cookie.strip().split("=", 1)
|
||||
cookies_dict[name] = value
|
||||
return cookies_dict
|
||||
else:
|
||||
raise ValueError('Set-Cookie为空')
|
||||
|
||||
|
||||
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