什么是网站推广优化,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,iVBORw0KGgoAAAANSUhEUgAAASwAAACWCAYAAABkW7XSAAAAAXNSR0IArs4c6QAADMxJREFUeF7tnVIJUcVh0/d2UXyEFBEokjQoLIPi2IURRGxRxEJKCh5iKAgAQVFg4gKCsp00AcRiaCgQgR9UBEFFRHxDzgDghE0mWV33YGdJetmdF0TMUsSd0k2bkvd7nHu3L1/t7bXVWnzjev2111zu93Lb63KpuJ/yhAAqggBIFnJI4CRMFUAAFBGBRBCiAAmoUAFhqrCJQFEABgEUNoAAKqFEAYKmxikBRAAUAFjWAAiigRgGApcYqAkUBFABY1AAKoIAaBQCWGqsIFAVQAGBRAyiAAmoUAFhqrCJQFEABgEUNoAAKqFEAYKmxikBRAAUAFjWAAiigRgGApcYqAkUBFABY1AAKoIAaBQCWGqsIFAVQAGBRAyiAAmoUAFhqrCJQFEABgEUNdK5AVUkhIm9xTu7tfHAGNK0AwDJtfz/JN8DaFJF152Srn1kY1aICAMui6z3nfL2STSfDVZY4x3cDepbb1PAAy5TdYZIdBZaIlDwahtHdwiwAy4LLgXO8Xkk1VlhAK7AHuU4HsHJ1NlJe1yop1mT4SDjB7QieZLTtAArJzcTyOXZSjYHIsWUwqIJn4BHmkMAWJrdSzD2OcCiCZgZ5pCAlia3FIQ67OVVAP/6D0WLeck3UFqRBiggoArARN0RqS7185GT4SztvLQD9Lq8mR4wZYkQ3Iafprzf6rFsDyaQOtnMwPlAvACiS0hWkWBJaXhCa8hcLoMEeA1aGY1oe61uy/arnCGsrFTnjrVbNY/gBrMb24eooCVyspjjT7rxYBlojQhKeqWisAsFpLxYWzFHi6ko2B70uJyILAop9FabVWAGC1looLZynwTNNwXxJYQIvyaqUAwGolExfNUDpkf1XS6yw9ofnl8N5Qhv/d4BlvAC6SN/3rwYj69WABZNC4MyXgMgJWxuaFSu9r0r/ZBtQqwaMKHck3nPABLp29JRX21OfDcEbDoZyXlblrBAKy0/FAZzdWmf9UhsICWykroP2iA1b/GWc/wZLP/ysOqY2ABrawrZ7nkANZyunFXo4DvX/lzgT0BiyY8lXZIAYBFQaykwJWRA889rLB8bOyEX8mhvG4GWHn5GTybKyPnB3sCFoGwV1Nd0KAla43yUfm1f772/v65FwRAQ2lSZfEf0HCLD61zjbGf5TyYYbOT/Y4wprX0OglW01tUsMYLXTiasmKPDUyAcnAqyw9iPgHVqGqxFgGTZ/1dSfGjs/GGCFRRNVdOU3wwlBsYK/zHKymOjp0fDAQsmvCxTE9gXoCVgAkaQ4gMLKClsWg6iBlgdSCixSGemHBMOAKiya8xaKb/zUmo6qQ9lwFnphwfjACsHycNOHnupXPBayw8vEyWCbcdDvvxr/ZTASsDiE8z5BMBrPgeqIsgNWDxjUN1JbR0wABraens3nh5pH81uqqKtcJqnGBTqYGSBFgGTO46xcsj/auEgMUvh10bneB4ACtBU1IOyT8OupHVWLAogmfcvF0EBvA6kBES0MoABZNIwLEmBlbG4fqT09v6rBFdYPm3eodWHQmMCbASMEFTCEqART9LU1EtECvAWkAs65c1ry/ff/rzqnsw5rhC78cZla0ACszQ/tMRyGwaML3WRARxgZYEUTXOuW/m/6VohXWUGrnhDrXWnRjcWNkJkaGSEMrsGjCh6iOMHMArDA6q5/FPw4OJrz/KtFfCSfpTT9LfRUKSUMPAySQgbA4pfDIJXS7ySssPrVN5vRH5vy/itFK6x9L1hpKa5KgKXYvJChZwQsmvAhC6fjuQBWx4LmONw/mv1Xk/ZdKVxheYvYCa0UAGWUuNChp0hsOhnhSygDucCWB2KmetQj46dH9S2D2uGL/SzlBUtwFJmWIxwMwYWK60YBbXCnABrBfGs3PpoJdXoqiqjFdbQQnbC66lkgKXHqyiRv6V/BEzsCiCRltJaaFGAtJZudmy5dl81B/ZZRyehXwkkGlm5N7rXjrM5MAZZO34JFfemZ4ee8LADLn/so3VGgFay4lpgIYC0hmqVbLl2RatpeKwXvw1rcKgtm4DW4sKFuQNghdFZ5Sx7T0pxdMKB59ya7hPMWXc3y5ZK0zIPGmBlbvAq6V28XD8Omlph1YJtuefKiracW8/CgCsfnTNYtSL/zILrLqf9XweDVMrZICVmiMJxXPxn3X/yuAKa9F0t0CtBIqSd6HlZIZKcWytyfF2mC4wrIMLG9J6V4MtFKpTVZYqTiRWBwXH5FNafpXhldYtSv/lXV3G034FEoUYKXgQoIxXDwPsEZtcbfxNJJCmQKsFFxIMIa/704/P2hgW8MkR0r3Ch4NY5cqwIrtQILz71IMXDTzw8aBVb9yExoBWzZAFWTPUTnXvvL7IxqKScdn7QLLC8Xx5ax4FWrNIFWLGUT3jevZOzDzybBpb37bqsu9tpwscoYYAVQ/XE59x7aPb5QfPA8gut19CEj1HGACuG6gnPef4BKY6s1fuveCScadSWez3Hd0KXMsAKrXji8114QDYGIiXAamVU6d5IP6uVUh1dBLA6EjKXYR75/fDXwZkHnnkkPOR26d4MtELVP8AKpbSSeS5szT8/CLDGzKxk3a3ThA9R4gArhMpK5jj/WykGLc4PAqwbDC3d21hlhShzgBVCZSVzXPi1bPjDvvMOPAOssUfCdwCrUCUOsEIprWCe8788eP8VTfc5hvkNpHcAqtBlDbBCK57wfOd/ftC/AlhTjPKgehegilXGACuW8onNu/tTKY4072/nkXCiOaV7D6CKXbYAK7YDicy/2MpjriDF/axwmqM8SuqOwFVImXK8YJUjIgdx8M/PNh/xQqrOeR8F6CKXZfj87PCSs2RSPE8/P3D778yvMIq3fsAVaQynDstwJorUf4X7H6nfn97m0K4yCbBjaFhVV6p90HgFXKFawrlKWU2dsu/dLsbZmGFiT3U3oNJQvQBLg0s9x3ju/nr/lcEVVukBKh6Lq9OhwdYncqpc7Bz37zx/VeZ97BK9xFApbFaAZZG1zqMeefrUhxttjNkv8Lyj34fBVQdlk/woQBWcMnTmnDnqwaA5UH1cUCVVuUtFw3AWk63bO46e1/9/va2v/61vS6RwirdJwFVNsXavAU3p3zIZUEFzn558vuvVPew/Irq04BqwVJQcXki/xGq0Cq7IHeUG9nmLSzXSWwnNR7qT4LrLIr1iYhgJWrsy3yGgJr5MCz8qZ76T4PqFrYrvoSgKXavtWCP7shm9K8v71tb6rtdcEKayCl2wBUq1WCnruD1ZUeSexEevZzqoFVui8CKjvVWmcKsKw53uS78xkpBu7wcRwVj4SVlO5LgMpo2QIsq8bvfEoZsDyovgKorNbrft6ssIxWwM4nZHPgDp8fTHSFVbr7AJXRMr0hbYBltBJ27kkeWKX7GqAyWp5T0wZYBivi1MekOFLV69GV1VJrLCqZi/VN4CVwdKcmzLAmitRfhecvDBBycSA1bpvgWo8qu47jICWN1pqWakMx88eH97IsAq3bcBlZoCihgowIoofqypz9ydCLD8L3/fBVSx6kDjvABLo2srxHzq/fV2hnlfxun1LKEH1fcA1Qo2mr0VYBmz/tR7pRgMogGrdD8AVMZKrtN0AVancqY/2Om7Dn9/MEgPy6ofgSo0qO9CMEWOl71GmEp8MCCwPqp8Aqk4NND4YwDJWAKffffiDqX2ssNak2Uv1M2BlrLx6Txdg9S5xOhNsv1OKozL9wHMXG0cHIuXaLwBVOq7nFQnAysvPmdmcvOPG7w92tsKqpHzOrwCVoXKKkirAiiJ7nElPvn32cFlVlj8em3wCqOI7amxVgGfL85Ftv/GDqsissD6qbfweoDJVPEqkCrCRs6DI7UKKtTkHnlutsJyUz9sCVP07xgyTFABYRurixJvq/tXSO9grKV/wB0BlpFySTRNgJWtNt4GdeMNywPKPfrf8EVB16wajLasAwFpWOWX3nXjd5AmTu1hVVL61diL/gyslFmddbgAK2t76S2Xy2Fa3Hgf/wqqS89QSgMlAa6lIEWOosWzzg7VfJhpN6xTSrhUf/15yElAtrjB3hFIAYIVSOuI828dl01V1w30SsDyoXnYGUEW0iKlbKgCwWgqlbLtY1POD1ZSHjsLqDR7ay12gJW54396ef39rHmenn8HKDK3Pos0wNYWdp6kNSDL5UNfyDZG0f/V75V0CVueVZpwewsrZX5KFbh/2rrdv/Bqgyt9pEegArc5sffKFsvPYSsMrcZjPpASwzVpMoCuhXAGDp95AMUMCMAgDLjNUkigL6FQBYj0kAxQwowDAMmM1iaKAfgUAln4PyQAFzCgAsMxYTaIooFB/wGUsPWmkr6QAAAABJRU5ErkJggg,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()