当前位置: 首页 > news >正文

什么是网站推广优化php wordpress教程 pdf

什么是网站推广优化,php wordpress教程 pdf,私人网站制作,html基础知识点总结一、数据接口分析 主页地址#xff1a;某99网站 1、抓包 通过抓包可以发现登录接口是AC_userlogin 2、判断是否有加密参数 请求参数是否加密#xff1f; 通过查看“载荷”可以发现txtPassword和aws是加密参数 请求头是否加密#xff1f; 无响应是否加密#xff1f; 无…一、数据接口分析 主页地址某99网站 1、抓包 通过抓包可以发现登录接口是AC_userlogin 2、判断是否有加密参数 请求参数是否加密 通过查看“载荷”可以发现txtPassword和aws是加密参数 请求头是否加密 无响应是否加密 无cookie是否加密 无 二、加密位置定位 1、看启动器 查看启动器发现有一个NDUser_Login.js文件的匿名方法点进去查看 点进去后发现此处拼接了一个登录的地址并且上方会赋值password和aws大概率是在此处进行的加密。下断点再次登录。 发现可以断住所以此处就是加密位置 三、扣js代码 通过定位到的加密位置扣出加密代码缺啥补啥即可。 aws是可以写死的每次生成的都是一样的。 坑 通过断点进入password的加密方法发现是加盐的md5通过控制台测试字符串’1’可以看出时标准的md5 但是当我使用标准的md5加密加盐后的字符串时却发现与网站加密出的密文不同 所以此处要将网站使用的MD5算法扣出不能使用标准的md5 四、验证码 1、分析接口 通过不断点击图片验证码可以看出网站每次获取验证码都会发送三个请求 通过观察这三个请求可以发现第二个请求会携带第一个请求返回响应中的ticket第二个请求返回的响应中有第三个请求的地址。 五、登录流程 首先我们需要先请求图片验证码的第一个接口获取到ticket再携带ticket请求第二个接口获取到图片验证码的地址请求该地址获取到图片破解图片验证码我使用的是打码平台。生成加密参数携带加密参数以及图片验证码请求登录接口。注意以上请求均需要携带参数callback写死即可。 JavaScript源码: var CryptoJS require(crypto-js) var hex_chr 0123456789abcdef; function rhex(num) {str ;for (j 0; j 3; j)str hex_chr.charAt((num (j * 8 4)) 0x0F) hex_chr.charAt((num (j * 8)) 0x0F);return str; } function str2blks_MD5(str) {nblk ((str.length 8) 6) 1;blks new Array(nblk * 16);for (i 0; i nblk * 16; i)blks[i] 0;for (i 0; i str.length; i)blks[i 2] | str.charCodeAt(i) ((i % 4) * 8);blks[i 2] | 0x80 ((i % 4) * 8);blks[nblk * 16 - 2] str.length * 8;return blks; } function add(x, y) {var lsw (x 0xFFFF) (y 0xFFFF);var msw (x 16) (y 16) (lsw 16);return (msw 16) | (lsw 0xFFFF); } function rol(num, cnt) {return (num cnt) | (num (32 - cnt)); } function cmn(q, a, b, x, s, t) {return add(rol(add(add(a, q), add(x, t)), s), b); } function ff(a, b, c, d, x, s, t) {return cmn((b c) | ((~b) d), a, b, x, s, t); } function gg(a, b, c, d, x, s, t) {return cmn((b d) | (c (~d)), a, b, x, s, t); } function hh(a, b, c, d, x, s, t) {return cmn(b ^ c ^ d, a, b, x, s, t); } function ii(a, b, c, d, x, s, t) {return cmn(c ^ (b | (~d)), a, b, x, s, t); }function MD5(str) {x str2blks_MD5(str);var a 1732584193;var b -271733879;var c -1732584194;var d 271733878;for (i 0; i x.length; i 16) {var olda a;var oldb b;var oldc c;var oldd d;a ff(a, b, c, d, x[i 0], 7, -680876936);d ff(d, a, b, c, x[i 1], 12, -389564586);c ff(c, d, a, b, x[i 2], 17, 606105819);b ff(b, c, d, a, x[i 3], 22, -1044525330);a ff(a, b, c, d, x[i 4], 7, -176418897);d ff(d, a, b, c, x[i 5], 12, 1200080426);c ff(c, d, a, b, x[i 6], 17, -1473231341);b ff(b, c, d, a, x[i 7], 22, -45705983);a ff(a, b, c, d, x[i 8], 7, 1770035416);d ff(d, a, b, c, x[i 9], 12, -1958414417);c ff(c, d, a, b, x[i 10], 17, -42063);b ff(b, c, d, a, x[i 11], 22, -1990404162);a ff(a, b, c, d, x[i 12], 7, 1804603682);d ff(d, a, b, c, x[i 13], 12, -40341101);c ff(c, d, a, b, x[i 14], 17, -1502002290);b ff(b, c, d, a, x[i 15], 22, 1236535329);a gg(a, b, c, d, x[i 1], 5, -165796510);d gg(d, a, b, c, x[i 6], 9, -1069501632);c gg(c, d, a, b, x[i 11], 14, 643717713);b gg(b, c, d, a, x[i 0], 20, -373897302);a gg(a, b, c, d, x[i 5], 5, -701558691);d gg(d, a, b, c, x[i 10], 9, 38016083);c gg(c, d, a, b, x[i 15], 14, -660478335);b gg(b, c, d, a, x[i 4], 20, -405537848);a gg(a, b, c, d, x[i 9], 5, 568446438);d gg(d, a, b, c, x[i 14], 9, -1019803690);c gg(c, d, a, b, x[i 3], 14, -187363961);b gg(b, c, d, a, x[i 8], 20, 1163531501);a gg(a, b, c, d, x[i 13], 5, -1444681467);d gg(d, a, b, c, x[i 2], 9, -51403784);c gg(c, d, a, b, x[i 7], 14, 1735328473);b gg(b, c, d, a, x[i 12], 20, -1926607734);a hh(a, b, c, d, x[i 5], 4, -378558);d hh(d, a, b, c, x[i 8], 11, -2022574463);c hh(c, d, a, b, x[i 11], 16, 1839030562);b hh(b, c, d, a, x[i 14], 23, -35309556);a hh(a, b, c, d, x[i 1], 4, -1530992060);d hh(d, a, b, c, x[i 4], 11, 1272893353);c hh(c, d, a, b, x[i 7], 16, -155497632);b hh(b, c, d, a, x[i 10], 23, -1094730640);a hh(a, b, c, d, x[i 13], 4, 681279174);d hh(d, a, b, c, x[i 0], 11, -358537222);c hh(c, d, a, b, x[i 3], 16, -722521979);b hh(b, c, d, a, x[i 6], 23, 76029189);a hh(a, b, c, d, x[i 9], 4, -640364487);d hh(d, a, b, c, x[i 12], 11, -421815835);c hh(c, d, a, b, x[i 15], 16, 530742520);b hh(b, c, d, a, x[i 2], 23, -995338651);a ii(a, b, c, d, x[i 0], 6, -198630844);d ii(d, a, b, c, x[i 7], 10, 1126891415);c ii(c, d, a, b, x[i 14], 15, -1416354905);b ii(b, c, d, a, x[i 5], 21, -57434055);a ii(a, b, c, d, x[i 12], 6, 1700485571);d ii(d, a, b, c, x[i 3], 10, -1894986606);c ii(c, d, a, b, x[i 10], 15, -1051523);b ii(b, c, d, a, x[i 1], 21, -2054922799);a ii(a, b, c, d, x[i 8], 6, 1873313359);d ii(d, a, b, c, x[i 15], 10, -30611744);c ii(c, d, a, b, x[i 6], 15, -1560198380);b ii(b, c, d, a, x[i 13], 21, 1309151649);a ii(a, b, c, d, x[i 4], 6, -145523070);d ii(d, a, b, c, x[i 11], 10, -1120210379);c ii(c, d, a, b, x[i 2], 15, 718787259);b ii(b, c, d, a, x[i 9], 21, -343485551);a add(a, olda);b add(b, oldb);c add(c, oldc);d add(d, oldd);}return rhex(a) rhex(b) rhex(c) rhex(d); }function getMD5Value(data) {var a data;var b \xa3\xac\xa1\xa3;var c fdjf,jkgfkl;var s a b c;return MD5(s); }var x64Add function(m, n) {m [m[0] 16, m[0] 65535, m[1] 16, m[1] 65535];n [n[0] 16, n[0] 65535, n[1] 16, n[1] 65535];var o [0, 0, 0, 0];o[3] m[3] n[3];o[2] o[3] 16;o[3] 65535;o[2] m[2] n[2];o[1] o[2] 16;o[2] 65535;o[1] m[1] n[1];o[0] o[1] 16;o[1] 65535;o[0] m[0] n[0];o[0] 65535;return [(o[0] 16) | o[1], (o[2] 16) | o[3]]};var x64Multiply function(m, n) {m [m[0] 16, m[0] 65535, m[1] 16, m[1] 65535];n [n[0] 16, n[0] 65535, n[1] 16, n[1] 65535];var o [0, 0, 0, 0];o[3] m[3] * n[3];o[2] o[3] 16;o[3] 65535;o[2] m[2] * n[3];o[1] o[2] 16;o[2] 65535;o[2] m[3] * n[2];o[1] o[2] 16;o[2] 65535;o[1] m[1] * n[3];o[0] o[1] 16;o[1] 65535;o[1] m[2] * n[2];o[0] o[1] 16;o[1] 65535;o[1] m[3] * n[1];o[0] o[1] 16;o[1] 65535;o[0] (m[0] * n[3]) (m[1] * n[2]) (m[2] * n[1]) (m[3] * n[0]);o[0] 65535;return [(o[0] 16) | o[1], (o[2] 16) | o[3]]};var x64Rotl function(m, n) {n % 64;if (n 32) {return [m[1], m[0]]} else {if (n 32) {return [(m[0] n) | (m[1] (32 - n)), (m[1] n) | (m[0] (32 - n))]} else {n - 32;return [(m[1] n) | (m[0] (32 - n)), (m[0] n) | (m[1] (32 - n))]}}};var x64LeftShift function(m, n) {n % 64;if (n 0) {return m} else {if (n 32) {return [(m[0] n) | (m[1] (32 - n)), m[1] n]} else {return [m[1] (n - 32), 0]}}};var x64Xor function(m, n) {return [m[0] ^ n[0], m[1] ^ n[1]]};var x64Fmix function(h) {h x64Xor(h, [0, h[0] 1]);h x64Multiply(h, [4283543511, 3981806797]);h x64Xor(h, [0, h[0] 1]);h x64Multiply(h, [3301882366, 444984403]);h x64Xor(h, [0, h[0] 1]);return h};var Fingerprint2_x64hash128 function(key, seed) {key key || ;seed seed || 0;var remainder key.length % 16;var bytes key.length - remainder;var h1 [0, seed];var h2 [0, seed];var k1 [0, 0];var k2 [0, 0];var c1 [2277735313, 289559509];var c2 [1291169091, 658871167];for (var i 0; i bytes; i i 16) {k1 [((key.charCodeAt(i 4) 255)) | ((key.charCodeAt(i 5) 255) 8) | ((key.charCodeAt(i 6) 255) 16) | ((key.charCodeAt(i 7) 255) 24), ((key.charCodeAt(i) 255)) | ((key.charCodeAt(i 1) 255) 8) | ((key.charCodeAt(i 2) 255) 16) | ((key.charCodeAt(i 3) 255) 24)];k2 [((key.charCodeAt(i 12) 255)) | ((key.charCodeAt(i 13) 255) 8) | ((key.charCodeAt(i 14) 255) 16) | ((key.charCodeAt(i 15) 255) 24), ((key.charCodeAt(i 8) 255)) | ((key.charCodeAt(i 9) 255) 8) | ((key.charCodeAt(i 10) 255) 16) | ((key.charCodeAt(i 11) 255) 24)];k1 x64Multiply(k1, c1);k1 x64Rotl(k1, 31);k1 x64Multiply(k1, c2);h1 x64Xor(h1, k1);h1 x64Rotl(h1, 27);h1 x64Add(h1, h2);h1 x64Add(x64Multiply(h1, [0, 5]), [0, 1390208809]);k2 x64Multiply(k2, c2);k2 x64Rotl(k2, 33);k2 x64Multiply(k2, c1);h2 x64Xor(h2, k2);h2 x64Rotl(h2, 31);h2 x64Add(h2, h1);h2 x64Add(x64Multiply(h2, [0, 5]), [0, 944331445])}k1 [0, 0];k2 [0, 0];switch (remainder) {case 15:k2 x64Xor(k2, x64LeftShift([0, key.charCodeAt(i 14)], 48));case 14:k2 x64Xor(k2, x64LeftShift([0, key.charCodeAt(i 13)], 40));case 13:k2 x64Xor(k2, x64LeftShift([0, key.charCodeAt(i 12)], 32));case 12:k2 x64Xor(k2, x64LeftShift([0, key.charCodeAt(i 11)], 24));case 11:k2 x64Xor(k2, x64LeftShift([0, key.charCodeAt(i 10)], 16));case 10:k2 x64Xor(k2, x64LeftShift([0, key.charCodeAt(i 9)], 8));case 9:k2 x64Xor(k2, [0, key.charCodeAt(i 8)]);k2 x64Multiply(k2, c2);k2 x64Rotl(k2, 33);k2 x64Multiply(k2, c1);h2 x64Xor(h2, k2);case 8:k1 x64Xor(k1, x64LeftShift([0, key.charCodeAt(i 7)], 56));case 7:k1 x64Xor(k1, x64LeftShift([0, key.charCodeAt(i 6)], 48));case 6:k1 x64Xor(k1, x64LeftShift([0, key.charCodeAt(i 5)], 40));case 5:k1 x64Xor(k1, x64LeftShift([0, key.charCodeAt(i 4)], 32));case 4:k1 x64Xor(k1, x64LeftShift([0, key.charCodeAt(i 3)], 24));case 3:k1 x64Xor(k1, x64LeftShift([0, key.charCodeAt(i 2)], 16));case 2:k1 x64Xor(k1, x64LeftShift([0, key.charCodeAt(i 1)], 8));case 1:k1 x64Xor(k1, [0, key.charCodeAt(i)]);k1 x64Multiply(k1, c1);k1 x64Rotl(k1, 31);k1 x64Multiply(k1, c2);h1 x64Xor(h1, k1)}h1 x64Xor(h1, [0, key.length]);h2 x64Xor(h2, [0, key.length]);h1 x64Add(h1, h2);h2 x64Add(h2, h1);h1 x64Fmix(h1);h2 x64Fmix(h2);h1 x64Add(h1, h2);h2 x64Add(h2, h1);return (00000000 (h1[0] 0).toString(16)).slice(-8) (00000000 (h1[1] 0).toString(16)).slice(-8) (00000000 (h2[0] 0).toString(16)).slice(-8) (00000000 (h2[1] 0).toString(16)).slice(-8)};function printComponents(components) {var values components.map(function(component) {return component.value});var hash Fingerprint2_x64hash128(values.join(), 31);return hash }var components [{key: userAgent,value: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36},{key: webdriver,value: false},{key: language,value: zh-CN},{key: colorDepth,value: 24},{key: deviceMemory,value: 8},{key: hardwareConcurrency,value: 12},{key: screenResolution,value: [1920,1080]},{key: availableScreenResolution,value: [1920,1032]},{key: timezoneOffset,value: -480},{key: timezone,value: Asia/Shanghai},{key: sessionStorage,value: true},{key: localStorage,value: true},{key: indexedDb,value: true},{key: addBehavior,value: false},{key: openDatabase,value: true},{key: cpuClass,value: not available},{key: platform,value: Win32},{key: plugins,value: [[PDF Viewer,Portable Document Format,[[application/pdf,pdf],[text/pdf,pdf]]],[Chrome PDF Viewer,Portable Document Format,[[application/pdf,pdf],[text/pdf,pdf]]],[Chromium PDF Viewer,Portable Document Format,[[application/pdf,pdf],[text/pdf,pdf]]],[Microsoft Edge PDF Viewer,Portable Document Format,[[application/pdf,pdf],[text/pdf,pdf]]],[WebKit built-in PDF,Portable Document Format,[[application/pdf,pdf],[text/pdf,pdf]]]]},{key: canvas,value: [canvas winding:yes,canvas fp:data:image/png;base64,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AQIECBAgQIAAAQIECBAgsCgC/3VAXxRhDyFAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBEgICeokzWZIAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEsgUE9Gxh8wkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECghICAXuJMliRAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBbAEBPVvYfAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAoISCglziTJQkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgW0BAzxY2nwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRKCAjoJc5kSQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDIFhDQs4XNJ0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIESAgJ6iTNZkgABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSyBQT0bGHzCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKCEgIBe4kyWJECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFsAQE9W9h8AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECghIKCXOJMlCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCBbQEDPFjafAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBEoICOglzmRJAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEMgWENCzhc0nQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgRICAnqJM1mSAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBLIFBPRsYfMJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoISAgF7iTJYkQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgWwBAT1b2HwCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQKCEgoJc4kyUJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAIFtAQM8WNp8AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIESggI6CXOZEkCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQyBYQ0LOFzSdAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBEgICeokzWZIAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEsgUE9Gxh8wkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECghICAXuJMliRAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBbAEBPVvYfAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAoISCglziTJQkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgW0BAzxY2nwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRKCAjoJc5kSQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDIFhDQs4XNJ0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIESAgJ6iTNZkgABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSyBQT0bGHzCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKCEgIBe4kyWJECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFsAQE9W9h8AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECghIKCXOJMlCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCBbQEDPFjafAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBEoICOglzmRJAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEMgWENCzhc0nQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgRICAnqJM1mSAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBLIFBPRsYfMJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoISAgF7iTJYkQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgWwBAT1b2HwCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQKCEgoJc4kyUJECBAgAABAgQIECBAgAABAgQIWgqb2wAAALBJREFUECBAgAABAgQIECBAIFtAQM8WNp8AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIESggI6CXOZEkCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQyBYQ0LOFzSdAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBEgICeokzWZIAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEsgWAwUbG20F5HdnAAAAAElFTkSuQmCC]},{key: webgl,value: [data:image/png;base64,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,extensions:ANGLE_instanced_arrays;EXT_blend_minmax;EXT_color_buffer_half_float;EXT_disjoint_timer_query;EXT_float_blend;EXT_frag_depth;EXT_shader_texture_lod;EXT_texture_compression_bptc;EXT_texture_compression_rgtc;EXT_texture_filter_anisotropic;EXT_sRGB;KHR_parallel_shader_compile;OES_element_index_uint;OES_fbo_render_mipmap;OES_standard_derivatives;OES_texture_float;OES_texture_float_linear;OES_texture_half_float;OES_texture_half_float_linear;OES_vertex_array_object;WEBGL_color_buffer_float;WEBGL_compressed_texture_s3tc;WEBGL_compressed_texture_s3tc_srgb;WEBGL_debug_renderer_info;WEBGL_debug_shaders;WEBGL_depth_texture;WEBGL_draw_buffers;WEBGL_lose_context;WEBGL_multi_draw,webgl aliased line width range:[1, 1],webgl aliased point size range:[1, 1024],webgl alpha bits:8,webgl antialiasing:yes,webgl blue bits:8,webgl depth bits:24,webgl green bits:8,webgl max anisotropy:16,webgl max combined texture image units:32,webgl max cube map texture size:16384,webgl max fragment uniform vectors:1024,webgl max render buffer size:16384,webgl max texture image units:16,webgl max texture size:16384,webgl max varying vectors:30,webgl max vertex attribs:16,webgl max vertex texture image units:16,webgl max vertex uniform vectors:4095,webgl max viewport dims:[32767, 32767],webgl red bits:8,webgl renderer:WebKit WebGL,webgl shading language version:WebGL GLSL ES 1.0 (OpenGL ES GLSL ES 1.0 Chromium),webgl stencil bits:0,webgl vendor:WebKit,webgl version:WebGL 1.0 (OpenGL ES 2.0 Chromium),webgl unmasked vendor:Google Inc. (NVIDIA),webgl unmasked renderer:ANGLE (NVIDIA, NVIDIA GeForce GTX 1050 Ti Direct3D11 vs_5_0 ps_5_0, D3D11),webgl vertex shader high float precision:23,webgl vertex shader high float precision rangeMin:127,webgl vertex shader high float precision rangeMax:127,webgl vertex shader medium float precision:23,webgl vertex shader medium float precision rangeMin:127,webgl vertex shader medium float precision rangeMax:127,webgl vertex shader low float precision:23,webgl vertex shader low float precision rangeMin:127,webgl vertex shader low float precision rangeMax:127,webgl fragment shader high float precision:23,webgl fragment shader high float precision rangeMin:127,webgl fragment shader high float precision rangeMax:127,webgl fragment shader medium float precision:23,webgl fragment shader medium float precision rangeMin:127,webgl fragment shader medium float precision rangeMax:127,webgl fragment shader low float precision:23,webgl fragment shader low float precision rangeMin:127,webgl fragment shader low float precision rangeMax:127,webgl vertex shader high int precision:0,webgl vertex shader high int precision rangeMin:31,webgl vertex shader high int precision rangeMax:30,webgl vertex shader medium int precision:0,webgl vertex shader medium int precision rangeMin:31,webgl vertex shader medium int precision rangeMax:30,webgl vertex shader low int precision:0,webgl vertex shader low int precision rangeMin:31,webgl vertex shader low int precision rangeMax:30,webgl fragment shader high int precision:0,webgl fragment shader high int precision rangeMin:31,webgl fragment shader high int precision rangeMax:30,webgl fragment shader medium int precision:0,webgl fragment shader medium int precision rangeMin:31,webgl fragment shader medium int precision rangeMax:30,webgl fragment shader low int precision:0,webgl fragment shader low int precision rangeMin:31,webgl fragment shader low int precision rangeMax:30]},{key: webglVendorAndRenderer,value: Google Inc. (NVIDIA)~ANGLE (NVIDIA, NVIDIA GeForce GTX 1050 Ti Direct3D11 vs_5_0 ps_5_0, D3D11)},{key: adBlock,value: false},{key: hasLiedLanguages,value: false},{key: hasLiedResolution,value: false},{key: hasLiedOs,value: false},{key: hasLiedBrowser,value: false},{key: touchSupport,value: [0,false,false]},{key: fonts,value: [Arial,Arial Black,Arial Narrow,Book Antiqua,Bookman Old Style,Calibri,Cambria,Cambria Math,Century,Century Gothic,Comic Sans MS,Consolas,Courier,Courier New,Georgia,Helvetica,Impact,Lucida Console,Lucida Handwriting,Lucida Sans Unicode,Microsoft Sans Serif,Monotype Corsiva,MS Gothic,MS PGothic,MS Reference Sans Serif,MS Sans Serif,MS Serif,Palatino Linotype,Segoe Print,Segoe Script,Segoe UI,Segoe UI Light,Segoe UI Semibold,Segoe UI Symbol,Tahoma,Times,Times New Roman,Trebuchet MS,Verdana,Wingdings,Wingdings 2,Wingdings 3]},{key: audio,value: 124.04347527516074} ] function get_login_url(CallBack, userName, checkCode, password) {password getMD5Value(password)aws printComponents(components)var url https://aq.99.com/AjaxAction/AC_userlogin.ashxreturn url ?CallBack CallBack siteflag995nduseractionlogintxtUserName userName txtPassword password checkcode checkCode Rnd Math.random() aws aws; }Python源码 Email912917367qq.com Date: 2023/8/24 10:18import re import timeimport execjs import requestsfrom utils.chaojiying import ChaojiyingClientclass Spider:def __init__(self, username, password):self.session requests.session()self.session.headers {authority: checkcode.99.com,referer: https://aq.99.com/,user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36}self.callback jQuery112401962284678331523_1692843120473self.ticket self.img_url self.pic_str self.username usernameself.password passworddef get_ticket(self):url https://checkcode.99.com/tokenparams {action: getticket,bussiness: aq_login,callback: self.callback,_: str(int(time.time() * 1000))}response self.session.get(url, paramsparams)pattern rticket:(.*?)self.ticket re.findall(pattern, response.text)[0]print(ticket, self.ticket)def get_img_url(self):url https://aq.99.com/AjaxAction/AC_verifycode.ashxparams {CallBack: self.callback,nduseraction: getverifycodestate,verifycodetype: UserLogin,bussiness: aq_login,ticket: self.ticket,SiteFlag: 995,RND: 0.7099289496089389,_: str(int(time.time() * 1000))}response self.session.get(url, paramsparams)pattern rVerifyCodeUrl:(.*?)self.img_url re.findall(pattern, response.text)[0]print(img_url, self.img_url)def get_img_code(self):response self.session.get(self.img_url)with open(img.png, wb) as f:f.write(response.content)cjy ChaojiyingClient(打码平台账号, 打码平台密码, 946014)im open(img.png, rb).read()pic_data cjy.post_pic(im, 1902)self.pic_str pic_data[pic_str]print(pic_str, self.pic_str)def login(self):with open(get_params.js, r, encodingutf-8) as f:js_obj execjs.compile(f.read())url js_obj.call(get_login_url, self.callback, self.username, self.pic_str, self.password)response self.session.get(url)print(response.text)print(response)if __name__ __main__:s Spider(账号, 密码)s.get_ticket()s.get_img_url()s.get_img_code()s.login()
http://www.tj-hxxt.cn/news/134394.html

相关文章:

  • 聊城建设银行官方网站贵阳监理建设网站
  • 兰州网站排名优化服务房地产建设企业网站
  • 网站开发服务费计入哪个科目wordpress模版下载
  • 私人做网站a做网站 钱
  • 花卉网站建设策划书南宁站建站时间
  • 网站开发人员晋升体系电脑网站上的电影怎么下载
  • 房地产网站建设的目的wordpress删除顶部
  • 自己怎样做网站wordpress jq
  • 公司发布网站需要备案cms网站开发模式
  • 电影网站 模板博客推广那个网站列好
  • 广西企业响应式网站建设设计海南中小企业网站建设
  • 自然资源部网站绿色矿山建设手机网站 兼容
  • 电商网站建设步骤东莞资深网站建设
  • 网友让你建网站做商城上海外贸学院现在是什么学校
  • 电子商务网站 功能广州论坛网站建设
  • vue做网站cms企业门户网站什么意思
  • c 网站开发案例大全做推广网站的文章
  • 做网站标题居中代码深圳网站设计哪里好
  • 鄱阳有做百度网站的在线查询网站开发语言
  • 外贸网站 源码网站管理方案
  • 长沙建一个网站多少钱残联网站建设概况
  • 做电影网站程序哪个好为什么不能去外包公司
  • 做网站如何引用头部wordpress商业站
  • 网站建设单位是什么意思四川网站建设设计公司哪家好
  • 菠菜网站建设网店推广有哪些
  • 什么网站做任务可以赚钱茶叶企业建设网站
  • 广州南沙区建设和交通局网站办公室设计平面图
  • 网站升级改版html网页设计作品下载
  • 网站获利模式网站开发相关会议
  • 有的网站域名解析错误js页面wordpress