diff --git "a/19-BOSS347円233円264円350円201円230円/README.md" "b/19-BOSS347円233円264円350円201円230円/README.md" new file mode 100644 index 0000000..44eaaba --- /dev/null +++ "b/19-BOSS347円233円264円350円201円230円/README.md" @@ -0,0 +1,19 @@ +# 使用说明 + +### 注意:我这里只补了两套代码的环境,BOSS实际有几套不知道,补不动了,一天一变... + +1.npm需安装express和body-parser,具体自行了解 + +2.将3个文件放于同一文件夹,cd到该目录,命令行运行 +```javascript +node index.js +``` + +3.运行boss.py开始食用 + + +### 由于pyexecjs运行会报以下错误,因此这里使用接口调用。 +```python +execjs._exceptions.ProcessExitedWithNonZeroStatus: (1, "{\n cookie: '0df7%2B9kAOY%2BdFeUde5p9NCZKtB2NXE6tIvdOfT25tAHJMiCiwrE0IJoOog04oQNba8nW0DAyd%2BjPCVgIUn3%2FXaXxYW5iqK9j1Mr%2FLAxG3sSH%2BhiM4UpIzn5XpYncEehEHLf1'\n}\n",..... +``` +### 实际为process赋值为undefined的原因,导致execjs库无法读取process diff --git "a/19-BOSS347円233円264円350円201円230円/boss.js" "b/19-BOSS347円233円264円350円201円230円/boss.js" new file mode 100644 index 0000000..954dbd8 --- /dev/null +++ "b/19-BOSS347円233円264円350円201円230円/boss.js" @@ -0,0 +1,134 @@ +window = { + document: { + cookie: "", + createElement: function(tag) { + if (tag == "canvas") { + return canvas + } else if (tag == "caption") { + return { + tagName: "CAPTION" + } + } + + }, + getElementById: function() { + return false + }, + title: "" + }, + moveBy: function () {}, + moveTo: function () {}, + open: function(){}, + dispatchEvent: function(){return true}, + screen: { + availHeight: 824, + availWidth: 1536 + }, + navigator: { + cookieEnabled: true, + language: "zh-CN", + userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36", + appVersion: "5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + decodeURI: global.decodeURI, + location: { + hostname: "www.zhipin.com", + href: "https://www.zhipin.com/" + }, + OfflineAudioContext: function () { + this.createOscillator = function() { + return { + frequency: { + setValueAtTime: function() {} + }, + connect: function (){}, + start: function (){}, + } + }, + this.createDynamicsCompressor = function() { + return { + threshold: { + setValueAtTime: function () {}, + }, + setValueAtTime: function () {}, + knee: { + setValueAtTime: function () {}, + }, + ratio: { + setValueAtTime: function () {}, + }, + reduction: { + setValueAtTime: function () {}, + }, + attack: { + setValueAtTime: function () {}, + }, + release: { + setValueAtTime: function () {}, + }, + connect: function (){}, + } + }, + this.startRendering = function (){} + }, + eval: global.eval, + history: {length: 1}, + outerHeight: 824, + innerHeight: 150, + outerWidth: 1536, + innerWidth: 0, + Math: global.Math, + Date: global.Date, +} +window.open.toString = function (){return "function open() { [native code] }"} +document = window.document +navigator = window.navigator +screen = window.screen +canvas = { + getContext: function getContext() { + return CanvasRenderingContext2D + }, + toDataURL: function toDataURL() { + // 实际为canvas画布填充了""k54kk5cA4*""字样后,转成的图片链接 + return "data:image/png;base64,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" + }, +} +CanvasRenderingContext2D = { + fillRect: function () {}, + fillText: function () {} +} +localStorage = { + removeItem: function (key) { + delete this[key] + }, + getItem: function (key) { + return this[key] ? this[key]: null; + }, + setItem: function (key, value) { + this[key] = "" + value; + }, +}; +sessionStorage = {} +setInterval = window.setInterval = function (){} +setInterval.toString = function(){return "function setInterval() { [native code] }"} +setTimeout = function (){} +top = window.top = window +global = undefined; +child_process = undefined; +closed = { + __proto__: ( 1>>3>4 )["__proto__"] +} +function get_cookie(seed, ts, code) { + var Buffer; + process = undefined; + function CustomEvent() {} + eval(code); + cookie = encodeURIComponent(new ABC().z(seed, parseInt(ts)+(480+new Date().getTimezoneOffset())*60*1000)) + console.log({cookie, cookie}) + return {cookie, cookie}; +} + +module.exports = { + get_cookie +} + diff --git "a/19-BOSS347円233円264円350円201円230円/boss.py" "b/19-BOSS347円233円264円350円201円230円/boss.py" new file mode 100644 index 0000000..2b6965b --- /dev/null +++ "b/19-BOSS347円233円264円350円201円230円/boss.py" @@ -0,0 +1,100 @@ +import requests, re +from urllib.parse import unquote +# import execjs + + +def get_index(url): + # 请求列表页,获取seed、js-filename、ts + headers = { + 'authority': 'www.zhipin.com', + 'upgrade-insecure-requests': '1', + 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36', + 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', + 'sec-fetch-site': 'none', + 'sec-fetch-mode': 'navigate', + 'sec-fetch-user': '?1', + 'sec-fetch-dest': 'document', + 'accept-language': 'zh-CN,zh;q=0.9', + } + res = requests.get(url, headers=headers, allow_redirects=False) + location = res.headers['location'] + seed = unquote(re.findall(r'seed=(.*?)&', location)[0]) + name = re.findall(r'name=(.*?)&', location)[0] + ts = re.findall(r'ts=(.*?)&', location)[0] + print(res.headers) + print("seed:", seed) + print("js-filename:", name) + print("ts:", ts) + return seed, name, ts + + +def get_code(name): + # 请求js-filename,获取动态代码 + headers = { + 'authority': 'www.zhipin.com', + 'cache-control': 'max-age=0', + 'upgrade-insecure-requests': '1', + 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36', + 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', + 'sec-fetch-site': 'none', + 'sec-fetch-mode': 'navigate', + 'sec-fetch-user': '?1', + 'sec-fetch-dest': 'document', + 'accept-language': 'zh-CN,zh;q=0.9', + # 'if-modified-since': 'Tue, 26 May 2020 11:27:36 GMT', + } + url = 'https://www.zhipin.com/web/common/security-js/%s.js' % name + response = requests.get(url, headers=headers) + print("code.length:", len(response.text)) + return response.text + + +def get_cookie(seed, ts, code): + # 传入seed、ts、code代码,获取zp_stoken + data = { + "seed": seed, + "ts": ts, + "code": code + } + res = requests.post('http://127.0.0.1:8919/get_cookie', data=data).json() + zp_stoken = res["cookie"] + + # zp_stoken = ctx.call("get_cookie", seed, ts, code)["cookie"] + + print("zp_stoken:", zp_stoken) + return zp_stoken + + +def main(url): + # 主要运行逻辑 + # 1、请求列表页,获取参数 + # 2、获取js代码 + # 3、获取cookie + # 4、携带cookie重新请求列表页,获取数据 + seed, name, ts = get_index(url) + code = get_code(name) + zp_stoken = get_cookie(seed, ts, code) + headers = { + 'authority': 'www.zhipin.com', + 'upgrade-insecure-requests': '1', + 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36', + 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', + 'sec-fetch-site': 'same-origin', + 'sec-fetch-mode': 'navigate', + 'sec-fetch-dest': 'document', + 'accept-language': 'zh-CN,zh;q=0.9', + "cookie": '__zp_stoken__=' + zp_stoken + } + res = requests.get(url, headers=headers) + print(res.text) + + + +if __name__ == "__main__": + # with open("boss.js", "r", encoding="utf-8") as f: + # ctx = execjs.compile(f.read()) + + # 列表页url + url = 'https://www.zhipin.com/job_detail/?query=java&city=101280600&industry=&position=' + main(url) + diff --git "a/19-BOSS347円233円264円350円201円230円/index.js" "b/19-BOSS347円233円264円350円201円230円/index.js" new file mode 100644 index 0000000..3d1b19c --- /dev/null +++ "b/19-BOSS347円233円264円350円201円230円/index.js" @@ -0,0 +1,33 @@ +var express = require('express') +var app = express() +var cook = require('./boss.js') // 导入boss.js模块,并命名为cook +var bodyParser = require('body-parser'); // 导入请求体解析器 +// 调整参数大小限制,否则会提示参数过大。 +app.use(bodyParser.urlencoded({limit: '50mb', extended: true})); + +// 开启get_cookie路由 +app.post('/get_cookie', function(req, res) { + // 获取请求的真实IP + var ip = req.headers['x-real-ip'] ? req.headers['x-real-ip'] : req.ip.replace(/::ffff:/, ''); + // 获取请求时间 + var time = new Date().toString().replace(/\+0800.*/, ''); + // 打印请求时间、IP、方法、路由 + console.log('INFO:', time, ip, req.method, req.originalUrl, '200 OK!'); + // 获取POST请求的formdata + let result = req.body; + let code = result.code; + let seed = result.seed; + let ts = result.ts; + + // 调用cook模块中的get_cookie方法,该方法需要提前module.exports导出 + var cooki = cook.get_cookie(seed, ts, code); + // 设置响应头,如果不设置,通过asyncio_requests请求的res.json()会报错,因为它是根据响应头解析json数据 + // 而requests可以直接使用res.json()解析,因为它是根据响应信息解析 + res.set('Content-Type', 'application/json') + // 将JSON后的数据返回客户端 + res.send(JSON.stringify(cooki)); +}); + +app.listen(8919, () => { + console.log("开启服务,端口8919", new Date().toString().replace(/\+0800.*/, '')) +}) diff --git "a/20-346円212円226円351円237円263円web/douyin.js" "b/20-346円212円226円351円237円263円web/douyin.js" new file mode 100644 index 0000000..58ad4ff --- /dev/null +++ "b/20-346円212円226円351円237円263円web/douyin.js" @@ -0,0 +1,267 @@ +Audio = {} +document = { + createElement: function() { + return canvas + } +}; +canvas = { + getContext: function getContext() { + return CanvasRenderingContext2D + }, + toDataURL: function toDataURL() { + // 实际为canvas画布填充了"龘ฑภ경"字样后,转成的图片链接 + return "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAQCAYAAABQrvyxAAACyUlEQVRIS8XWTYhVZRgH8N8dkPFqJqgI4sKmTUSgaBCKihCI5dZFUEaLwHAThjujEnXjpkAUHSRc+AEtFJIWKWRBSR9QENgiggplNqkTlXBnhjveeM6cF955PXccFJ2zuPec99zz3v/X87+3ZfrRK67jslWvxb103vCxx770DN5sApSAloBLco+SzFKcxbZClmG8gw7uIdCkfnq+BDsXbmzEizhYg2p0oEn1PEK5II/SgTKPbXyE89iBt+oPDDcpWz7cbwZysq/h9Vqd9/E2fkWsn0GsJeVi/1DvE6xJQLJoNA1T7PN0wx73zMBMDsTGTXMQ1n6TAfkJ63ACr+IcDmekUr6D0FUkdb+uc18SCPCba4ILitlodGA2ik8R7Rmw2E4ThnR9oVsRjJyuxL/4FLdwJCOQE07O5CBjQONIRINk7l4iOOMQB4mkdn6eajWgM2mhYU855KhRXRMO6DqKD/Ay3sWygkCKUE6qJPAegmis3+5T0I0EEtj8PUVn+r2e+Zb52HqjPqti8ptFnnPHPhzH6lq5+KIcbOwX4AJkAtjkQK50Pi9pfWfEKR/ifjVaOjC1wcLq9ZoPXbTLZfyi7Vljlep/4nSd8ZzA9bpNokUuzYJASTSBT3Mzcr8qbO77CNBSk0ZNGrPHoO+r1plnta4YxhxcTiAAbMcPs3QgXLpSC1EmKfbd38+B/jMQ4NvuWoTlPnfNKfyIES3P142U12Y/B6oI1Kj6RSgcOIZX6lqe0YHyL0Su/tT5gJ5JbSt03PSfrl34vco//2i522fgHma5/M1Ie20KZ0oHEsj5Fhireqijra2j4wlL3HHMGrv9bC2+tKUGf1vLxMOgfNBnp89AT8sGq3xrHE/WVRo0ojQHvWSHK/Y6ab83qhz/gZsYr34V5uAoCQwYstV1F6zzlXlaxg0aMeQvq7zgqu+qno+WuYG/5xJ86PU//5znHgwZKlQAAAAASUVORK5CYII=" + }, +} + +CanvasRenderingContext2D = { + arc: function arc() {}, + stroke: function stroke() {}, + fillText: function fillText() {}, +} +window = { + document: { + location:{}, + _zid:2 + }, +} +function get_sign(uid, aaaa, ua) { + // _signature共26位 + // uid 决定倒数第8至倒数第5位的字符(共4位) + // ua 决定倒数第10至倒数第8位的字符 + // data:image决定正数第11至第16位 + aaaa = aaaa.replace(/\\u02a1/g, "\u02a1").replace(/\\x7f/g, "\x7f").replace(/\\x80/g, "\x80").replace(/\\x1c/g, "\x1c").replace(/\\x06/g, "\x06").replace(/\\x02/g, "\x02").replace(/\\\'/g, "\'").replace(/\\ufffb/g, "\ufffb").replace(/\\\\/g, "\\").replace(/\\uffce/g, "\uffce") + navigator = { + userAgent: ua, + } + tac = aaaa; + var e = {}; + (function anonymous() { + function e(e, a, r) { + return (b[e] || (b[e] = t("x,y", "return x " + e + " y")))(r, a) + } + function a(e, a, r) { + return (k[r] || (k[r] = t("x,y", "return new x[y](" + Array(r + 1).join(",x[++y]").substr(1) + ")")))(e, a) + } + function r(e, a, r) { + var n, t, s = {}, b = s.d = r ? r.d + 1 : 0; + for (s["$" + b] = s, + t = 0; t < b; t++) + s[n = "$" + t] = r[n]; + for (t = 0, + b = s.length = a.length; t < b; t++) + s[t] = a[t]; + return c(e, 0, s) + } + function c(t, b, k) { + function u(e) { + if (typeof e === "string" && e === 'canvas') { + debugger; + } + v[x++] = e + } + function f() { + return g = t.charCodeAt(b++) - 32, + t.substring(b, b += g) + } + function l() { + try { + y = c(t, b, k) + } catch (e) { + h = e, + y = l + } + } + for (var h, y, d, g, v = [], x = 0; ; ) + switch (g = t.charCodeAt(b++) - 32) { + case 1: + u(!v[--x]); + break; + case 4: + v[x++] = f(); + break; + case 5: + u(function(e) { + var a = 0 + , r = e.length; + return function() { + var c = a < r; + return c && u(e[a++]), + c + } + }(v[--x])); + break; + case 6: + y = v[--x], + u(v[--x](y)); + break; + case 8: + if (g = t.charCodeAt(b++) - 32, + l(), + b += g, + g = t.charCodeAt(b++) - 32, + y === c) + b += g; + else if (y !== l) + return y; + break; + case 9: + v[x++] = c; + break; + case 10: + u(s(v[--x])); + break; + case 11: + y = v[--x], + u(v[--x] + y); + break; + case 12: + for (y = f(), + d = [], + g = 0; g < y.length; g++) + d[g] = y.charCodeAt(g) ^ g + y.length; + u(String.fromCharCode.apply(null, d)); + break; + case 13: + y = v[--x], + h = delete v[--x][y]; + break; + case 14: + v[x++] = t.charCodeAt(b++) - 32; + break; + case 59: + u((g = t.charCodeAt(b++) - 32) ? (y = x, + v.slice(x -= g, y)) : []); + break; + case 61: + u(v[--x][t.charCodeAt(b++) - 32]); + break; + case 62: + g = v[--x], + k[0] = 65599 * k[0] + k[1].charCodeAt(g)>>> 0; + break; + case 65: + h = v[--x], + y = v[--x], + v[--x][y] = h; + break; + case 66: + u(e(t[b++], v[--x], v[--x])); + break; + case 67: + y = v[--x], + d = v[--x] + u((g = v[--x]).x === c ? r(g.y, y, k) : g.apply(d, y)); + break; + case 68: + u(e((g = t[b++]) < "<" ? (b--, + f()) : g + g, v[--x], v[--x])); + break; + case 70: + u(!1); + break; + case 71: + v[x++] = n; + break; + case 72: + v[x++] = +f(); + break; + case 73: + u(parseInt(f(), 36)); + break; + case 75: + if (v[--x]) { + b++; + break + } + case 74: + g = t.charCodeAt(b++) - 32 << 16>> 16, + b += g; + break; + case 76: + u(k[t.charCodeAt(b++) - 32]); + break; + case 77: + y = v[--x], + u(v[--x][y]); + break; + case 78: + g = t.charCodeAt(b++) - 32, + u(a(v, x -= g + 1, g)); + break; + case 79: + g = t.charCodeAt(b++) - 32, + u(k["$" + g]); + break; + case 81: + h = v[--x] + v[--x][f()] = h; + break; + case 82: + u(v[--x][f()]); + break; + case 83: + h = v[--x] + k[t.charCodeAt(b++) - 32] = h; + break; + case 84: + v[x++] = !0; + break; + case 85: + v[x++] = void 0; + break; + case 86: + u(v[x - 1]); + break; + case 88: + h = v[--x], + y = v[--x], + v[x++] = h, + v[x++] = y; + break; + case 89: + u(function() { + function e() { + return r(e.y, arguments, k) + } + return e.y = f(), + e.x = c, + e + }()); + break; + case 90: + v[x++] = null; + break; + case 91: + v[x++] = h; + break; + case 93: + h = v[--x]; + break; + case 0: + return v[--x]; + default: + u((g << 16>> 16) - 16) + } + } + var n = this + , t = n.Function + , s = Object.keys || function(e) { + var a = {} + , r = 0; + for (var c in e) + a[r++] = c; + return a.length = r, + a + } + , b = {} + , k = {}; + return r + } + ) + ()('gr$Daten Иb/s!l y͒yĹg,(lfi~ah`{mv,-n|jqewVxp{rvmmx,&effkx[!cs"l".Pq%widthl"@q&heightl"vr*getContextx$"2d[!cs#l#,*;?|u.|uc{uq$fontl#vr(fillTextx$$龘ฑภ경2<[#c}l#2q*shadowblurl#1q-shadowoffsetxl#$$limeq+shadowcolorl#vr#arcx88802[%c}l#vr&strokex[ c}l"v,)}eOmyoZB]mx[ cs!0s$l$Pb>>s!0s%yA0s"l"l!r&lengthb&l!l Bd>&+l!l &+l!l 6d>&+l!l &+ s,y=o!o!]/q"13o!l q"10o!],l 2d>& s.{s-yMo!o!]0q"13o!]*Ld>>b|s!o!l q"10o!],l!& s/yIo!o!].q"13o!],o!]*Jd>>b|&o!]+l &+ s0l-l!&l-l!i\'1z141z4b/@d

AltStyle によって変換されたページ (->オリジナル) /