一、【逆向】一页15还加密。![](https://i-blog.csdnimg.cn/direct/1c1b695b2ead4f45ae83868819117719.png)
二、【自动化】一共获取6600多公司信息![](https://i-blog.csdnimg.cn/direct/3856be7882584736836dabd752c01839.png)
三、对于两种方式我喜欢第二种自动化
from DrissionPage import ChromiumPage, ChromiumOptions import time # chrome:version co = ChromiumOptions().set_paths(browser_path=r"C:\Users\lenovo\AppData\Local\Google\Chrome\Application\chrome.exe") page = ChromiumPage(co) page.get("https://www.kanzhun.com/search/?query=%E5%85%AC%E5%8F%B8&type=0") page.ele('x://div[@class="btn-link"]').click() time.sleep(1) result = [] times = 0 i=0 for j in range(50): print(f"已滑动{i}次了") page.run_js('setInterval(function(){window.scrollBy(0,100)},100)') i+=1 len_result = len(result) print(f"公司总数为{len_result}") for tag in page.eles('x://div[@class="list-item"]',timeout=5): title = tag.ele('x://div[@class="middle"]/a').text dec = tag.ele('x://div[@class="middle"]/div[@class="desc"]').text business_info=tag.ele('x://div[@class="business-info"]').text url= tag.ele('x://a[@class="title"]').attr('href') print(title,dec,business_info,url) result.append(url) newlen_result = len(result) if newlen_result==len_result: times += 1 else: times=0 if times>5: print("已加载完毕") break
四、【逆向】一页15还加密。
1.通过断点调试获得B KIV参数
const fs = require('./js2.js') const CryptoJS = require('crypto-js') window = global; var zy; !function(i) { "use strict"; var e, t, n, r, o, i = {}, u = {}; function c(e) { var t = u[e]; if (void 0 !== t) return t.exports; var n = u[e] = { id: e, loaded: !1, exports: {} }; return i[e].call(n.exports, n, n.exports, c), n.loaded = !0, n.exports } zy = c c.m = i, c.amdO = {}, e = [], c.O = function(t, n, r, o) { if (!n) { var i = 1 / 0; for (l = 0; l < e.length; l++) { n = e[l][0], r = e[l][1], o = e[l][2]; for (var u = !0, f = 0; f < n.length; f++) (!1 & o || i >= o) && Object.keys(c.O).every((function(e) { return c.O[e](n[f]) } )) ? n.splice(f--, 1) : (u = !1, o < i && (i = o)); if (u) { e.splice(l--, 1); var a = r(); void 0 !== a && (t = a) } } return t } o = o || 0; for (var l = e.length; l > 0 && e[l - 1][2] > o; l--) e[l] = e[l - 1]; e[l] = [n, r, o] } , c.n = function(e) { var t = e && e.__esModule ? function() { return e.default } : function() { return e } ; return c.d(t, { a: t }), t } , n = Object.getPrototypeOf ? function(e) { return Object.getPrototypeOf(e) } : function(e) { return e.__proto__ } , c.t = function(e, r) { if (1 & r && (e = this(e)), 8 & r) return e; if ("object" == typeof e && e) { if (4 & r && e.__esModule) return e; if (16 & r && "function" == typeof e.then) return e } var o = Object.create(null); c.r(o); var i = {}; t = t || [null, n({}), n([]), n(n)]; for (var u = 2 & r && e; "object" == typeof u && !~t.indexOf(u); u = n(u)) Object.getOwnPropertyNames(u).forEach((function(t) { i[t] = function() { return e[t] } } )); return i.default = function() { return e } , c.d(o, i), o } , c.d = function(e, t) { for (var n in t) c.o(t, n) && !c.o(e, n) && Object.defineProperty(e, n, { enumerable: !0, get: t[n] }) } , c.f = {}, c.e = function(e) { return Promise.all(Object.keys(c.f).reduce((function(t, n) { return c.f[n](e, t), t } ), [])) } , c.u = function(e) { return "js/" + { 189: "wangeditor", 536: "vod-js-sdk-v6" }[e] + "-" + { 189: "5e0d5d", 536: "a04632" }[e] + ".js" } , c.miniCssF = function(e) {} , c.g = function() { if ("object" == typeof globalThis) return globalThis; try { return this || new Function("return this")() } catch (e) { if ("object" == typeof window) return window } }(), c.o = function(e, t) { return Object.prototype.hasOwnProperty.call(e, t) } , r = {}, o = "kz-ssr-pc:", c.l = function(e, t, n, i) { if (r[e]) r[e].push(t); else { var u, f; if (void 0 !== n) for (var a = document.getElementsByTagName("script"), l = 0; l < a.length; l++) { var s = a[l]; if (s.getAttribute("src") == e || s.getAttribute("data-webpack") == o + n) { u = s; break } } u || (f = !0, (u = document.createElement("script")).charset = "utf-8", u.timeout = 120, c.nc && u.setAttribute("nonce", c.nc), u.setAttribute("data-webpack", o + n), u.src = e), r[e] = [t]; var d = function(t, n) { u.onerror = u.onload = null, clearTimeout(p); var o = r[e]; if (delete r[e], u.parentNode && u.parentNode.removeChild(u), o && o.forEach((function(e) { return e(n) } )), t) return t(n) } , p = setTimeout(d.bind(null, void 0, { type: "timeout", target: u }), 12e4); u.onerror = d.bind(null, u.onerror), u.onload = d.bind(null, u.onload), f && document.head.appendChild(u) } } , c.r = function(e) { "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(e, "__esModule", {