Thiên Chi Kiều Nữ 532 Posted January 11 5 hours ago, QuangBlue said: Lấy từ https://banhang.shopee.vn/webchat/api/v1.2/login?_uid={uid}&csrf_token={csrf_token}' Mỵ xem giúp với, hix bí cả tuần ko làm được gì T_T à mỵ quên mất ko xem lại, còn một dãy số bí ẩn thêm vào header nữa mà bạn không cho vào : 'x-s': '17a85bb5c5969b2039af0854a1e9396e', 'x-v': '2', Cái này mỵ copy từ request chát nên chưa tìm được nó ở đâu...khi thay đổi nó thì ko gửi đi được. Bạn thử tìm cùng mỵ xem Quote Share this post Link to post Share on other sites
QuangBlue 1 Posted January 12 5 hours ago, Thiên Chi Kiều Nữ said: à mỵ quên mất ko xem lại, còn một dãy số bí ẩn thêm vào header nữa mà bạn không cho vào : 'x-s': '17a85bb5c5969b2039af0854a1e9396e', 'x-v': '2', Cái này mỵ copy từ request chát nên chưa tìm được nó ở đâu...khi thay đổi nó thì ko gửi đi được. Bạn thử tìm cùng mỵ xem T_T thua luôn. có tìm rồi mà tìm không ra, Mỹ có code ko share mình được ko T_T Quote Share this post Link to post Share on other sites
Thiên Chi Kiều Nữ 532 Posted January 12 54 minutes ago, QuangBlue said: T_T thua luôn. có tìm rồi mà tìm không ra, Mỹ có code ko share mình được ko T_T hình như dãy số này ko đổi :v bạn cho cho mỵ cái đoạn F12 header khi bạn chát xem..... mỵ có tìm ra đâu mà có code :D Quote Share this post Link to post Share on other sites
Công Dũng 3 Posted January 12 2 giờ trước, QuangBlue said: T_T thua luôn. có tìm rồi mà tìm không ra, Mỹ có code ko share mình được ko T_T cái này tìm trong file js của shopee nha bạn Quote Share this post Link to post Share on other sites
QuangBlue 1 Posted January 12 (edited) 18 hours ago, Công Dũng said: cái này tìm trong file js của shopee nha bạn 20 hours ago, Thiên Chi Kiều Nữ said: hình như dãy số này ko đổi :v bạn cho cho mỵ cái đoạn F12 header khi bạn chát xem..... mỵ có tìm ra đâu mà có code :D Mình tìm thấy đoạn này trong JS của shopee : return new Promise((function(e, a) { if (void 0 !== x && parseInt(x) <= 0 || void 0 !== C && parseInt(C) <= 0) { var d = [b, C, y, x, _].filter((function(e) { return e } )).join("/"); return f.reportException(d + " parameter exception: " + C + "/" + x), void a(new Error) } var A = z.includes("/webchat/api") ? { "x-v": w || "", "x-s": (0, p.getSecurityHash)(w, { url: F, method: S, token: k.Authorization, ctoken: n || "" }) } : {} , h = { method: S, headers: r({}, k, A), body: R }; M && (h.credentials = M), (0, o.default)(z, h).then((function(e) { switch (200 === (B = e.status) && (T = parseInt(e.headers.get("total")), P = parseInt(e.headers.get("per-page"))), B) { case 204: return null; case 404: return { message: "Resource not found" }; case 500: return { message: "Internal server error." }; case 502: return { message: "Bad Gateway" }; default: return e.json() } } )).then((function(n) { var r, o, d, p = Date.now() - D; if ("read" === y && (0, u.collectAsyncTask)(u.ReportPoint.READ_API, p), void 0 === x && void 0 !== y && ("messages" === y && U.indexOf("shop_id") < 0 ? (L = JSON.parse(R).request_id, (0, l.setItem)(L, D), (0, u.collectAsyncTask)(u.ReportPoint.MESSAGE_API, p)) : u.ReportPoint[y.toUpperCase()] && (0, u.collectAsyncTask)(u.ReportPoint[y.toUpperCase()], p)), 200 === B ? e(n instanceof Array ? (r = { total: T, perPage: P }, o = y, d = n.map(N), o in r ? Object.defineProperty(r, o, { value: d, enumerable: !0, configurable: !0, writable: !0 }) : r[o] = d, r) : N(n)) : 204 === B && e(), (0, i.isError)(B)) { var A = t || [b, C, y, x, _].filter((function(e) { return e } )).join("/"); if (400 !== B && 404 !== B || (f.setTag("API Request Error", A), f.reportException(new ((0, i.HTTPError)(B))(JSON.stringify({ body: n, status: B })))), [429, 491, 493].includes(B)) { var h = new ((0, i.HTTPError)(B))(n); a(h) } else if (401 === B) if (y.includes("login")) { var g = new ((0, i.HTTPError)(B))(n.message,n.errors || n.error_code || n.errcode,n.data); a(g) } else s.store.dispatch((0, c.handle401ErrorRequested)({ resource: y })); else { var m = new ((0, i.HTTPError)(B))(n.message,n.errors || n.error_code || n.errcode,n.data); a(m) } } } mà thề là đang học python thôi. cái JS này .... :( mọi người giúp mình với. Còn đây là link download cái file JS đó. https://drive.google.com/file/d/1tJYCquippPHJIROUdOZWBa5CAItullS7/view?usp=sharing Edited January 12 by QuangBlue Quote Share this post Link to post Share on other sites
Công Dũng 3 Posted January 13 getSecurityHash bạn tìm hàm này thử xem Quote Share this post Link to post Share on other sites
QuangBlue 1 Posted January 13 34 minutes ago, Công Dũng said: getSecurityHash bạn tìm hàm này thử xem @Thiên Chi Kiều Nữ @Công Dũng function(e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.getSecurityHash = function(e, t) { var n = t.url , r = t.method , c = t.token , u = t.ctoken , l = function(e) { return "live" === (0, o.getRuntimeServer)() ? i[e] : s[e] }(e); switch (e) { case 1: return function(e, t) { return (0, a.default)(e + t).toString() }(n, l); case 2: return function(e, t, n) { return (0, a.default)(e + t + n).toString() }(n, l, r); case 3: return function(e, t, n) { return (0, a.default)(e + t + n).toString() }(n, l, c); case 4: return function(e, t, n) { return (0, a.default)(e + t + n).toString() }(n, l, u); default: return "" } } ; var r, a = (r = n(54)) && r.__esModule ? r : { default: r }, o = n(4), s = { 1: "70c74f4e-dcda-483e-826b-19dd2c42e799", 2: "29ffec18-c614-4645-8f1c-686e22d2e26a", 3: "04229e76-1ba3-4ac9-8a4e-68d46a3881a2", 4: "a3769a87-35cf-45e9-a5a7-2b4016c52e92" }, i = { 1: "396c15ad-6d3e-4018-98be-cef58cb45cd0", 2: "607c871d-b766-4c6f-ba89-b6c6ca32b156", 3: "42990074-9a73-4459-b749-f3110d222a72", 4: "5702b6f3-62a3-44d2-abe8-fece100a8bf4" } } cái getSecurityHash mình thấy có chỗ này. Mọi người igúp mình với, không học JS nên ngu quá T_T Quote Share this post Link to post Share on other sites
Thiên Chi Kiều Nữ 532 Posted January 13 5 hours ago, QuangBlue said: @Thiên Chi Kiều Nữ @Công Dũng function(e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.getSecurityHash = function(e, t) { var n = t.url , r = t.method , c = t.token , u = t.ctoken , l = function(e) { return "live" === (0, o.getRuntimeServer)() ? i[e] : s[e] }(e); switch (e) { case 1: return function(e, t) { return (0, a.default)(e + t).toString() }(n, l); case 2: return function(e, t, n) { return (0, a.default)(e + t + n).toString() }(n, l, r); case 3: return function(e, t, n) { return (0, a.default)(e + t + n).toString() }(n, l, c); case 4: return function(e, t, n) { return (0, a.default)(e + t + n).toString() }(n, l, u); default: return "" } } ; var r, a = (r = n(54)) && r.__esModule ? r : { default: r }, o = n(4), s = { 1: "70c74f4e-dcda-483e-826b-19dd2c42e799", 2: "29ffec18-c614-4645-8f1c-686e22d2e26a", 3: "04229e76-1ba3-4ac9-8a4e-68d46a3881a2", 4: "a3769a87-35cf-45e9-a5a7-2b4016c52e92" }, i = { 1: "396c15ad-6d3e-4018-98be-cef58cb45cd0", 2: "607c871d-b766-4c6f-ba89-b6c6ca32b156", 3: "42990074-9a73-4459-b749-f3110d222a72", 4: "5702b6f3-62a3-44d2-abe8-fece100a8bf4" } } cái getSecurityHash mình thấy có chỗ này. Mọi người igúp mình với, không học JS nên ngu quá T_T Bạn phải tìm xem giá trị e, t, n kia được truyền vào là gì, sau đó execute cái js này ra thì nó ra kết quả dãy số đó cho bạn Quote Share this post Link to post Share on other sites
Công Dũng 3 Posted January 14 14 giờ trước, QuangBlue said: @Thiên Chi Kiều Nữ @Công Dũng function(e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.getSecurityHash = function(e, t) { var n = t.url , r = t.method , c = t.token , u = t.ctoken , l = function(e) { return "live" === (0, o.getRuntimeServer)() ? i[e] : s[e] }(e); switch (e) { case 1: return function(e, t) { return (0, a.default)(e + t).toString() }(n, l); case 2: return function(e, t, n) { return (0, a.default)(e + t + n).toString() }(n, l, r); case 3: return function(e, t, n) { return (0, a.default)(e + t + n).toString() }(n, l, c); case 4: return function(e, t, n) { return (0, a.default)(e + t + n).toString() }(n, l, u); default: return "" } } ; var r, a = (r = n(54)) && r.__esModule ? r : { default: r }, o = n(4), s = { 1: "70c74f4e-dcda-483e-826b-19dd2c42e799", 2: "29ffec18-c614-4645-8f1c-686e22d2e26a", 3: "04229e76-1ba3-4ac9-8a4e-68d46a3881a2", 4: "a3769a87-35cf-45e9-a5a7-2b4016c52e92" }, i = { 1: "396c15ad-6d3e-4018-98be-cef58cb45cd0", 2: "607c871d-b766-4c6f-ba89-b6c6ca32b156", 3: "42990074-9a73-4459-b749-f3110d222a72", 4: "5702b6f3-62a3-44d2-abe8-fece100a8bf4" } } cái getSecurityHash mình thấy có chỗ này. Mọi người igúp mình với, không học JS nên ngu quá T_T var n = t.url , r = t.method , c = t.token , u = t.ctoken , l = function(e) { return "live" === (0, o.getRuntimeServer)() ? i[e] : s[e] }(e); mấy biến n r c u l i bạn thay vào công thức case là ra đó 1 Quote Share this post Link to post Share on other sites
Thiên Chi Kiều Nữ 532 Posted January 14 24 minutes ago, Công Dũng said: var n = t.url , r = t.method , c = t.token , u = t.ctoken , l = function(e) { return "live" === (0, o.getRuntimeServer)() ? i[e] : s[e] }(e); mấy biến n r c u l i bạn thay vào công thức case là ra đó n = ctoken rồi nhóe :v khỏi tìm mất công mỵ đơ lắm rồi :v ace tìm tiếp nhóe Quote Share this post Link to post Share on other sites
QuangBlue 1 Posted January 29 On 1/14/2021 at 8:45 AM, Thiên Chi Kiều Nữ said: n = ctoken rồi nhóe :v khỏi tìm mất công mỵ đơ lắm rồi :v ace tìm tiếp nhóe On 1/14/2021 at 8:13 AM, Công Dũng said: var n = t.url , r = t.method , c = t.token , u = t.ctoken , l = function(e) { return "live" === (0, o.getRuntimeServer)() ? i[e] : s[e] }(e); mấy biến n r c u l i bạn thay vào công thức case là ra đó Em thề là em bỏ ra 2 tuần học JS để chỉ đọc cái này thôi , mà đến hôm nay bỏ cuộc luôn .... có anh chị em nào hỗ trợ e chuyển nó về python ko ạ T_T. Tính phí cũng dc. Trực tiếp zalo e dc ko. :( 0908990094 đúng oải luôn huhu 1 Quote Share this post Link to post Share on other sites
Công Dũng 3 Posted January 29 9 giờ trước, QuangBlue said: Em thề là em bỏ ra 2 tuần học JS để chỉ đọc cái này thôi , mà đến hôm nay bỏ cuộc luôn .... có anh chị em nào hỗ trợ e chuyển nó về python ko ạ T_T. Tính phí cũng dc. Trực tiếp zalo e dc ko. :( 0908990094 đúng oải luôn huhu chỗ switch case là 4 công thức đó bác shopee nó thay phiên để thay key secret bác thay vào công thức là được mà rồi giải mã md5 nữa là dxong 1 Quote Share this post Link to post Share on other sites
QuangBlue 1 Posted January 30 14 hours ago, Công Dũng said: chỗ switch case là 4 công thức đó bác shopee nó thay phiên để thay key secret bác thay vào công thức là được mà rồi giải mã md5 nữa là dxong Dạ vấn đề là em hiểu thêm 4 cái biến đó vào cái def đó. Nhưng cơ bản là e ko có căn bản JS cho nên đọc không hiểu gì ráo ... bác có thể giúp e chuyển quá python không . :( Quote Share this post Link to post Share on other sites
Công Dũng 3 Posted January 30 4 giờ trước, QuangBlue said: Dạ vấn đề là em hiểu thêm 4 cái biến đó vào cái def đó. Nhưng cơ bản là e ko có căn bản JS cho nên đọc không hiểu gì ráo ... bác có thể giúp e chuyển quá python không . :( mình cũng mới tập tành code mới đây thôi mà cơ bản thì ngôn ngữ nào cũng như nhau mà mình ra công thức là được bác. được thì add nick sky mình chỉ công thức cho Quote Share this post Link to post Share on other sites
QuangBlue 1 Posted February 1 On 1/30/2021 at 4:43 PM, Công Dũng said: mình cũng mới tập tành code mới đây thôi mà cơ bản thì ngôn ngữ nào cũng như nhau mà mình ra công thức là được bác. được thì add nick sky mình chỉ công thức cho ok bác. bác cho mình skype của bác đi. cảm ơn bác nhiều lắmmmmm. Quote Share this post Link to post Share on other sites