欢迎光临
我们一直在努力

爬虫小案例-市场监管局

目标网址:aHR0cHM6Ly9qenNjLm1vaHVyZC5nb3YuY24vZGF0YS9jb21wYW55

需求:抓取这种数据

一、抓包分析

右击检查

请求头和载荷都没有加密参数,这个网站是对响应结果进行了加密,我们第一时间就可以想到是否是AES加密,看堆栈

二、逆向分析

往下还有更多,这个案例不想跟栈慢慢分析了,我们直接Hook方法hook住响应结果(hook技术可自行上网搜索学习)。我们直接点击调用的第一个堆栈

点击进去滑到最上面,打上断点

这样操作的意义是,我们在程序执行的第一步给断住,方便我们后续hook所有想找到的信息。接下来在控制台写hook代码并运行(也可以ai生成)

这段代码的大概意思就是,我重写JSON.parse方法(大部分响应结果在加密或解密时都会使用这个方法将一个json字符串转成一个对象,大部分网站返回的数据都是{status:True, meassage:xxxx, data:xxxxx}),然后再该程序触发JSON.parse这个方法时触发debugger,在打印出传入这个方法的参数,这样我们就可以更快地找上一个调用堆栈找到加密或解密位置。

接下来把开始的断点下掉,点击继续脚本运行

成功断住,出现了加密的值,但是我们不需要加密方法,我们需要的是解密方法,继续脚本运行

又一次断住,现在看右边作用域就是我们想要的解密后的结果了,我们直接点击右边的堆栈,点击下面的一个,就是得值之前调用的函数

我们想要的值就是这里生成的,进一步分析,解密后结果是由b方法传入加密的数据解密得来,我们进入b方法看逻辑

一目了然,连断点都不需要打了,一字狂,直接把方法复制到本地运行

把逻辑实现好之后运行发现缺少了f,就是缺少了密钥和偏移量

我们运行后发现还是报错了,没问题呀,这是什么报错,是我的data加密值没有utf-8格式化吗,应该不是。可以记住,在AES加密这块领域内,utf-8这种错误一般可以认为是偏移量的问题或者是密钥错误又或者是加密模式等等。所以我们需要检查是否有陷阱或者有其他类似加密方法把真正的解密信息给藏起来了,我们把代码上下翻找一下,据我多年经验,我怀疑是重定义了偏移量或者是密钥

果不其然,在b函数的下面十几行代码处,该网站在又重新定义了一个f(密钥),有点小巧思的。现在把这个真正的f复制到本地运行看还会不会报错

三、运行结果

成功得到想要的结果,后续可以直接在python中循环翻页得到加密的response再调用js文件进行解密得到想要数据

js代码:

// 自定义一个变量Crypto引入js自带的加解密库用来替换d.a
// 注意的坑:第一次复制的f是虚假的,搜索d.a.enc.UTF8在下面又出现一个f(网站重定义f行为),复制第二个才是正确的
// 该网站就是一个响应数据aes加密,主要难点:加密位置定位、f密钥

Crypto = require('crypto-js')

data = '5588a9e126c91a28cc2f6813e3793369c25469a35a79a5541917e64a1f6f6af3d103fce3f67fefa0681231cf46d96eeb65c743ba99932e2dec4e4f8d4858aa11b62b4a35c02908c59abaffc7e7d68f406c4fdd2b8f4e6b3899119549ec0e443b709b4ed466a4215b461da15451ef714c947ee41b71a02069b72aeab4ee1ab599edf2eda678027212f76a81659fde5db1c84e24fd57a4747a92a763ad4c23f4c0e7acea1eb4c61b5708508be3ef3d1f3cd07a03a727f02766c2ee296778a5b397363f18195e6b7c7b6376660b12a6be2ed3b8eb8991fec754222915bcf2dcfe77dfd15c6541d3edb8a3c51dd833623fd91f5c33acc7f0e90baac7a11c422be8ccd45ae69bc9a3d58dd21bf34aff6ba275229f646c4be1c3c623d70b1198244c223c70e5242931e1d0061ef3138c504689e9a7f753cf7bb4df4b111a954b36e90dc152768e6c137eb7a4dd6b29fab7b3b5963c990d079808202ea6b1cc7201cb95a16005eeb86664e6c068e07816ac46bdc85ab95f425fc722a9a157a1b6548d92bc580ac28d1f8445b15201d1864d41802712abf2f7ad17779dfc2df0db6a7ccf6dee81bb520e583dae9b084080f1792d07eda54b147e5290b29d16be1ecb8333adf28b7f74457b6b53c175b261bf601df27e82c8c7a4ab21d308d9d2163c9b9a8cafb68dcff3b31866178b165bed2eb5928cae2f6008e404690f627577733569d2aec9031c1acad37008c1bad4ea3b0202c4d7b3788d4646037cfb0fc4075514892612e52bb0ec9a95188f4c19bc57fbf30ba7756aebbc92bed09fd99296d04bde9c2745e870aa01fa2d94d60a0402cb0cf12bbc62873cdce99e55d0619ab32cf9dae91f0a0bd97004b72e0b979355e5fbd72a60e16ac6c7385eec6a079668c5e489e876cb68eaadc9854730f5cd9bd86b88005bf19e892fbfae1d7f41b339537b07666a7d8649272241d125b11929a201c30f65fbf4580d68f76f821744a818d247f2b00d6110bf59eb7a40262c69c224c8987a892df3a794b59248a12c4798463d2e649c8304484e005fc8a077eb926bcfdcef2c5a6a75296ba83d7a4a65c9a2774425d9fb99a0125b99e78afbccb5d8123946a85f4ad5b8b0b2d8eb7cfbf75255e4e3d50cd9fd018f13aeeff73d28a82e580916277f9db5bb582beaccc4fdbbea2411463228482d35129fbdd2c4f89f71f7b20386316a1158882d22343ef7a4f2c69b0c463ede6da167eaecff8bbd06aa15a02607962b1bb611eef65ded3489948f8abe1b8735f46d963e2043c848277e3cfa6dac06d35f4d60f637eacfda98c132b0ac32280dc4411bcb12438a301a8ad7b58ba49d1503d9b61bd43e95f1ccb6b6ed290f5bb66e4df534271505c399b8ec0a8f5910d0457e787c4e75e676ad3dddac62c87204ea9f71d9d4d5d382c365995fcf5bea766f2728707648dee9c40788a47a7e605feedbc5f4fe9142e3084ea75c967fb90cd0b0e75565dc744581e387577bfc089473bcc6b1d5169ccd40f9cb85fd534702d517ca6b732f28fe4dc54adf9e5714dfe076930dd49e47a6f3a3bd62cf3e274e599398a75095f550aa84d8fc2e8b5fc6dc8eb7ea003efc226e3b7a336f4e74e8e767233b4bf227a540592faf544b73594990544c3f191c2eac47b01aeccf12dcef56c4337f0e2a62197ccdb3b61c3b4c131bb1e7f0259ccf86a0fe2494b869ddb352aec91848786527856e1aa2d3ed656e572eed302753d61b8100f8b1bbca290f645eec16080157acead4a3aabbc8c659e2a2db8f9d03b064f2a610e68bc4dd820bd48a3b05585fb6dc41031db61762bebea48006b3a4d5e54595e511bc69715ca63a410070cebb340b3fdc433758f7dea96f587099d4b333ae51113d4a2bd9d21e9e456dfd0666db9320b1356f123c5b06603c9c7d31f05ec36f9c69509487639ee7873c3522d262d7daacecfcfd09469c17c1c1fc05dcefe43fa9012ad36a26888b1a1234040ca6e9cb117cb0691040846f6282631fcda83a44c9a670752ea4511d06801f6d5adf67871a66346aa82e9cd05736c60c83e806e77db00cfe9b0351ab372f56ee3cd95e7f605b6f87ee5b9791c44caa8410bb740b26e261ed7b0e7acd60454e3f0c55ea489af52491d8f2153e37dfed1c0dd2745c68fb509953eb30b587e3b2c490432308ab3b0e6a1611fcd80619bffcfdcacfd031fc7d02052c48b6e8ba4c2dc4b914ad98eed49264892e21e9d2a5084c2709d5ffc1745d6db08f1f4a3e76fea7b4a556c92c0d801f1a101f590766bad9ecce73d1e6c7f766b669541198029ab5709cc03746da9be4b31b4c51f77354773b93290d92fe17edeb32693bfab4cca5c43683c6c9b320d8d9842931d3555242fdf65d3c4d5123c54d2da16cd43e4fee7a1f6a736b00ba873582e32121e9c18b53ad6f3e4cf2553bf3ad8b3343452e1bffa5b50ee9c12c083293c0c110dbc2ea29e9d725834e3aa4295ddb3abd09370e92571882fe2cd8875d853f14ab543b0d0da329cd4fe6660b665b360eb8f67f71e272b01791d40bce317b632c7ea423294b264ccef9ccfc1cb3cf5b6b2310cc565d3e52cc1a8ec76b70383af965c6beb3e040e7a24265556343f9b8e7199781e6eacd29129e6b98959d9269ac06c97ad05460ee65e7fabd0869b0152dc97aa68f5656c27f28a20502eae56ca5131d7d65d605697bb9e6527767eddc3d823881541367db28e352467b9236e4e7de2d209e06d952f9063726d1c09f5b23cff3e3edef048198a79562f90eb12c0509d48964cad81ba9ea1c462c9b963b8f70c92754dd4d631c5a210d5398c21ae3ac24c21adae25c65ad96a07aaafff890a1f2079661cf57c2b765689a9929d63fbfc533a7cc64c7b93d8412420db7c9d9e655e451b22103164dbfb9509fc03a0f90e81c367bd9dc246f6204eaa6ff4f2bdd40af9ba7838bc5c304f1a946064affc2b567e82045f6f1510eddb08ffd011492184377390d352b2786bc36117a5288783c6bed5d6239840c1cb71f68947fae7b8983966a9b704df09cb18c0bf614a9cd2eec083fdf34d17bb771a85bb006f8e06fd8c0daacb8fb1b016fcd3e68f14b57f839a7be306a3a4abbfa55ec38592a2c7b96ba547f3b7fbdc0029bc4f8e0ef03e48c020f3346dbdf421a1ad53f226cb7c3ee5425626720b108aa737b07c60c6dd1821686a1b85c289c4d1c34c3d330cb8223d6c29ed5371fff04de53a3fb9979fe04947f67a0fd3d4243ebd93990d6728ef10974d15cfcb4edb4911a8e3edbe788aa5f52ac490bc427cce2384e408ebf0ba22373a93aa45c6a140d9fd394a73ad69512bcef1deae19687dece652c41c0df81a7b94fa23ef89c2df4dac043a8b9b4ceaa1a35e67eb9f045d0684729b9dc874feb3f1f5ad4d48fbfe1d0ac3b8f462dbd2c3d6f151705966e9e427134bc58fe9e268224c5659fe8a9ffd12f45f5a816427abca142c80b6872bf13810d10ed6b74d302174a65842b39bb9cd722b431da0f41ff94824b375336f9f863a7d41748143f7bef2f8d23b62a3abf21158b77050e9e90ced605e0814d96fd2d8f97eb5c92cc0ffefc6154a17e7bb89d1f55d26bbef3ed4a525c06717fad1d7987a6e7056e56fbb028e404e578195a73017f1c3df7278e4706b1e207a7b409173a628705dcaadb3762edea76bc1ce15f2ebf05d125285b7815f6d2c35f8f788278e4ae6bd34a62407d4a3d8e73bd731ef3df2f2b5d23dea0180d15a88606d48b3c5257798315b7842b0438801e79b3b58848c9a1638d387e649dcdba14b6a102a0ebb1eaddb2fffce0d1593ef28cce6b9797e986980a7e6a3ddaeba3ae8346282b2c7b205787eb5536929f4b3709ed434014f1b32906052b683a1906b42f51d02f82d0286e399dfb5c8b7950203ee1e481c0437bfc120a09403ac5e4597442724d3e53e560ed6c889b1aee577731cefd77432ca80a09dc483da087a431fab08d3385536f587bd4dac95011364985d47973842af8180c8f61f7be2937ddae948ad0e79528000d1a3cedbf4cbf3eebe093168da0805c41a10d4e32b9cc0c8f0b595e1a6b8a5ac50544cc33b36a143ce9b553480880830fcfa1817a4b16069690924ade89ef3b86ca1a7bbb688814f93467bb60d106e1da1a5a9e8842cc890805ab5ad13d3a8eebc035626a44d0b1780e74b1c5403f7aab39be8ddc7a3994d0405f8d6e2d67ef5caa2cdb2967dc02622e27daa3666cbf3ed419f6d59d7570c33cd80b082a72de407729f3a945e1b8713f6f72e954ca3900403b58e81a98d4f46ed2fae868e7cbcd4df36a8d53be30f5822af7347cbfa268aa6e046790c7afe35076f65cfca28330c968e3c59b67197cc500f8a246148eb499180f8112c4782ee89044e350c613e973a022fe98c6c23aa1f014425acd3e8e4cccff154847c460b3f48fd49f6a7d47f16f5cafddbda1ec497953c3ac21a90fceaeeec1387cd28fd5d2ab0eff4a4b47ffbd4d7f31fbad6d3b6cf1d88688bb13bc4fa39e2988faa368de6b1593b6ba7b9d92ad76959ffeaa7905b0dabb53c7ae0d79a55382b25bf1c31e817817b72615b52c70dd876d0721c9343a898107522c00bf3f91e973dda16717c9304110f4b5b3f6531b7568adf1274b1309e8a5bbc4ed933d5859a7d532f51db37ec5a3b6318e4a6c049a9b6e8f1a0d109c1bcefa5a1cded063a05bd56ac6bae78acd2d4a299c428fc92453b97f6fce3963fc615f3e8eb02109e197ee7e5fe4e81453752178bd819c65b7822c2ef15e0dc86f19a8ead6298ce353f3aac85d3645cafa5a9e4e2b84cc0e6a221af1e8fd97956a8514604539b4446d10d20c215a6be792289b1c7fd0aa3459b9e34baac9273a1b52d2f0eb43f3315482e484d7c725d20d9b680580a96839c7f9cca80f8e1af017e395fc9b32930d339c17d3f3068aed1e615d91ade35d847adb9c3b77f3065183e2c70a84d141b4139cd670677f7be66dbdab3616de4ea4f76f1e8ada9d10f3d7ceaddc3cdcf047437ac035bd7aafd6097dbfefd7f771312f8e19654dab558108705bac7e57412817d9f688de35d6ce97bef5d63399ccdf11cdb986fcb486d128b168bb7501da608de36d089452165db59c2e6684961987bdb27c94a3a63617f188a393c8b133039e9d659091db3d2ec6fa8c3397a40e51be417804403864ab6a0ee9c00d164efe613bff14c95e2f87fc65d9147a805caaa50836e6917edf1ff6e11adcb6a951efe9a3d75cc9b9ba44e7dbba133fb05883464c58e6b28d8d016b0e269644e71c667cd29bd6475ed22d6e40940f07d2516e888bbf3ba834f546c07ac98e4255c026e581cc35cacc3e5d94f716d2bbeaa120f9b0449a93fd9cfdabe31ea7c182cb374ee9ace8dc95773d6073df13a8739e8210d695cff7439f27b738e70ab80807be01ccbdf54261ec268df7f77973ccadb5444b4c70881faa17da5ed46044b91681d7a5977cefb3149dea05501833f9214d017c576396ff360a9d42b634aad8d16701ae6bcfb555cab0f5b4789243f6efba145803ee671dac32ab674abe02e968cec7d83a19b5234728e17e274841f8d0c525452eaccab82323c4b71b8f7fc32ba38729da4c33958213d7b577905bff782a257a409a1ca4e79f5e95bd9a4ac22a52dd30a31f5d757049270403b263f44ee98c94da785d3290d9d1dd95ae69a4c74530229b09f24dffad0600a3569f495736b7a11bf1b2c2f641838019cb1010a43e02391f4624bdc81cf4677eecc566efe1cd51f289681d88828733cfb7b9901471c9c6e6bd7fd17da6586fdae94574c0cf8ddff812612f64038ee3c5bb9fe54b736066b31bb03a0d5130000dd8e2573201ad1d9e60218471eb27ba8db7292a6c6c37804644eac6668161bce685e3115d0fbbf2aadf1e723cfa42b45b8c9bd69d5fc780679336c9c4529c204a92ffecd4839dfad8cdf67de62e89c11d6e6193b5aa6f084ccc004d8a24f681c0aba0faf2e5959c2e5ab6700dfa6b303f15a7719fdbad5a0a6ae0bc67dc0414f864b86187702d2d1d3dbb73c5071983218d32fc37e79baee3a90a362819a4e40a57dc83aefc68325f8e0dcd5d618ae03dfff516476855a13a85b65a41c32d3a11e024de37bec4e3366ebbf7430bad1e849d96d7d542add8961ace3e9addd8b75e1f92dea9bdf7e3d5ccbd165e83a1a54808a47946b3c9953c0c920810c7051975f5e8de7c8b27f6fbe0b33aa42d2b97a1147f82adf225f97cc03367588e65c49f41b313015ab60bb94ec7e54f99b91d51f445cd3f99be6fd7340bc9725ed3031e8f235c5e1dafa18a03633a1cbbff1e5197d4289e1977994a7de89f1ba093f81d7cfd771e2f3502816e45b8164f3b00b8cbe6e0a94006f4a0a3099faeb619bb62d09932df7a9db7605f568d2c8e31fb77914789d66d27dee959ac88f1af8087822f171dca2d0e76fc286a357228494ae1ce950647841ac613b2b99636a5511906f2'
f = Crypto.enc.Utf8.parse("Dt8j9wGw%6HbxfFn")
m = Crypto.enc.Utf8.parse("0123456789ABCDEF")

function b(t) {
var e = Crypto.enc.Hex.parse(t)
, n = Crypto.enc.Base64.stringify(e)
, a = Crypto.AES.decrypt(n, f, {
iv: m,
mode: Crypto.mode.CBC,
padding: Crypto.pad.Pkcs7
})
, r = a.toString(Crypto.enc.Utf8);
return r.toString()
}

res = b(data)
console.log(res)

注:本贴仅供学习,分享爬虫技术,无任何数据交易行为

赞(0)
未经允许不得转载:171主机测评 » 爬虫小案例-市场监管局
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址