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

python爬虫-加速乐cookie混淆解析实例小记

注意!!!!某XX网站逆向实例仅作为学习案例,禁止其他个人以及团体做谋利用途!!!

第一步:抓包工具第一次请求页面,得到响应。本次我使用的fiddle进行抓包,可以直接请求得到响应,响应内容一样。发现响应内容是不可直接用的内容,但是有明确的cookie关键词,同时响应里的headers得到了set-cookie的值

 第二步:抓包工具第二次请求。将第一次请求拿到的cookie放在请求headers 里再次请求,同时将步骤一里响应内容进行解析。也就是图里的cookie的两个值。(看不懂的等下看代码吧)

 第三步:抓包工具第三次请求。可以看到得到了正确的页面响应内容,同时cookie值也和前两次的不一样

 第四步:这里将是一段描述梳理一下每次请求的作用

第一次请求:响应内容为混淆后的cookie值,该cookie作用为第二次请求的必要条件;

第二次请求:响应内容为混淆后的cookie值,该cookie作用为最终请求的必要条件;

最终请求:响应内容为我们看到的页面内容。

第五步:解析第一次请求的响应内容。通过正则表达式 将cookie内容取出,利用eval() 函数直接在本地或者浏览器的console 就可以直接解析。

第步六:注意啦!!!!这步开始容易猪猪迷惑了。分析并解析第二次请求的响应内容。根据观察响应内容为ob 混淆加密建议找个工具或者用什么方法进行解密。(可以参考JS逆向 | ob混淆一键还原工具_js反混淆还原工具_丁仔.的博客-CSDN博客和GitHub - DingZaiHub/ob-decrypt: ob混淆还原工具,欢迎star!亲测用着还可以).这里可以使用hook方式进行解析,在浏览器中按照图所示进行操作

 第七步:将一大坨响应内容进行ob混淆解密操作,没有工具这部可以忽略。为方便分析,我将第二次响应内容存在本地.html 文件。将ob混淆代码另存在.js 文件,使用工具进行解密,成功后把解密后的js代码替换本地.html中的js 内容。

 

 

第八步:在 .html 中补充 debugger 关键词,同时将.html 文件复制到第六步新建的文件夹中 。此时浏览器上会自动识别,按图勾选即可。由于我们分析解析目的是为了找cookie,因此和cookie有关的就是document ,所以在替换文件里 搜索 document ,找到后打上断点。

 

第九步:清除浏览器上的cookie重新请求,注意清除cookie后会首先断在debugger处,接着按下F8(蓝色的按钮,执行下一个断点)就可以。执行到document['cookie'] 处可以看到已经被赋值,直接看一下被哪些所赋值,可以看到标红处就是我们需要的cooke

 第十一步:找cookie出处。

 

 第十二步:cookie生成包含两个参数,均是从同一个对象中获取的,将该对象进行全局所有找到其出处

 

最后代码展示 

# 注意啦!!!!!!!由于go方法传的参数不是固定值且 “ha”加密方式也不一样。因此代码里才有显示三种方式,目前我只遇到三种。后面有的话在补充。


import json
import reimport execjs
import requestss = requests.session()
url = 'https://XXXXX.gov.cn/#/Integrated/index'
headers = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'}
# 第一次请求
res = s.get(url=url, headers=headers, verify=False)
print(res.text)
n_cookies = requests.utils.dict_from_cookiejar(s.cookies)res.encoding='utf-8'
jsl = ''.join(re.findall(r'document\.cookie=(.*?);location', res.text))
cookie = execjs.eval(jsl)
n_k = cookie.split(';')[0].split('=')[0]
n_v = cookie.split(';')[0].split('=')[1]
n_cookies.update({n_k:n_v})coock = ''
for k, v in n_cookies.items():coock += k+'='+v+';'
headers['Cookie'] = coock.strip(';')# 第二次请求
res = s.get(url=url, headers=headers, verify=False)
res.encoding='utf-8'
with open('./域名.html', 'w', encoding='utf-8')as f:f.write(res.text)
f.close()
go_data = json.loads(''.join(re.findall(r';go\((.*)\)', res.text)))ha = go_data.get('ha','')
if ha == 'md5':file = '域名_md5.js'
elif ha == 'sha1':file = '域名_sha1.js'
elif ha == 'sha256':file = '域名_sha256.js'else:file = '域名'print(res.text)
with open('./{}'.format(file), 'r', encoding='utf-8')as f:infos = ''.join(f.readlines())
f.close()
ctx = execjs.compile(infos)
cookie = ctx.call("go",go_data)# 第三次请求
headers['Cookie'] = headers['Cookie'].split(';')[0]+';__jsl_clearance_s='+cookie
url = 'https://XXXXX.gov.cn/'
res = requests.get(url=url, headers=headers)
res.encoding='utf-8'
print(res.text)

附件:生成cookie的js ----- sha1(直接在本地执行即可)

// sha1
function hash(_0x3e501b) {var _0x1fb4f5 = {};_0x1fb4f5['vcJIZ'] = function (_0x5e23c5, _0x29f030) {return _0x5e23c5 ^ _0x29f030;};_0x1fb4f5['nnILZ'] = function (_0x589c24, _0x27233f) {return _0x589c24 + _0x27233f;};_0x1fb4f5['tTwDl'] = function (_0x3cfed1, _0x22a05a) {return _0x3cfed1 & _0x22a05a;};_0x1fb4f5['MfRVd'] = function (_0x3fc96c, _0x32c2a5) {return _0x3fc96c >= _0x32c2a5;};_0x1fb4f5['fDweB'] = function (_0x808b4c, _0x45d31f) {return _0x808b4c * _0x45d31f;};_0x1fb4f5['tUtAf'] = function (_0x2b4b54, _0x47bf25) {return _0x2b4b54 >> _0x47bf25;};_0x1fb4f5['GlcUf'] = function (_0x56ff28, _0x51f0d9) {return _0x56ff28 << _0x51f0d9;};_0x1fb4f5['Egxmp'] = function (_0x17e4a7, _0x154189) {return _0x17e4a7 - _0x154189;};_0x1fb4f5['WtxKA'] = function (_0x13f1da, _0xcedb20) {return _0x13f1da * _0xcedb20;};_0x1fb4f5['AUjcG'] = function (_0x56ede6, _0xce5419) {return _0x56ede6 << _0xce5419;};_0x1fb4f5['aImhj'] = function (_0x15103f, _0x4d991e) {return _0x15103f * _0x4d991e;};_0x1fb4f5['LZbSM'] = function (_0xbc81cb, _0x673e4) {return _0xbc81cb - _0x673e4;};_0x1fb4f5['PCjCU'] = function (_0x30f142, _0x3add8c) {return _0x30f142 < _0x3add8c;};_0x1fb4f5['uQyRR'] = function (_0x1bb4b9, _0xbd0d67) {return _0x1bb4b9 | _0xbd0d67;};_0x1fb4f5['rBwUP'] = function (_0x50526a, _0x1b9c16) {return _0x50526a & _0x1b9c16;};_0x1fb4f5['CVCuK'] = function (_0x1474de, _0x5433e8) {return _0x1474de ^ _0x5433e8;};_0x1fb4f5['hMtHv'] = function (_0x144411, _0x566ba2) {return _0x144411 < _0x566ba2;};_0x1fb4f5['OjxgU'] = function (_0x32770d, _0x584a87) {return _0x32770d + _0x584a87;};_0x1fb4f5['kxupd'] = function (_0x5a63ba, _0x1a75ca, _0x11cb71) {return _0x5a63ba(_0x1a75ca, _0x11cb71);};_0x1fb4f5['QZBIa'] = function (_0x36d06d, _0x573dc0) {return _0x36d06d - _0x573dc0;};_0x1fb4f5['ahQNH'] = function (_0x521c6a, _0x44faed, _0x975942) {return _0x521c6a(_0x44faed, _0x975942);};_0x1fb4f5['gZCtm'] = function (_0x3ecc1d, _0x683115, _0x26b6fb, _0x30262f, _0x3a4a9e) {return _0x3ecc1d(_0x683115, _0x26b6fb, _0x30262f, _0x3a4a9e);};_0x1fb4f5['rXdRR'] = function (_0xd234a, _0x90bdc3, _0x433aa7) {return _0xd234a(_0x90bdc3, _0x433aa7);};_0x1fb4f5['QTmzZ'] = function (_0x187211, _0x490abd) {return _0x187211(_0x490abd);};_0x1fb4f5['RnoGt'] = function (_0x2e7670, _0x3f1cd3) {return _0x2e7670(_0x3f1cd3);};var _0x43e73a = _0x1fb4f5;function _0x2b41b9(_0x533e58, _0x74964d) {return _0x43e73a['vcJIZ'](_0x43e73a['nnILZ'](_0x43e73a['tTwDl'](_0x533e58, 0x7fffffff), _0x43e73a['tTwDl'](_0x74964d, 0x7fffffff)), _0x43e73a['tTwDl'](_0x533e58, 0x80000000)) ^ _0x74964d & 0x80000000;}function _0x537251(_0x4c333c) {var _0x52058c = '0123456789abcdef';var _0x4661a5 = '';for (var _0x3c067f = 0x7; _0x43e73a['MfRVd'](_0x3c067f, 0x0); _0x3c067f--) {_0x4661a5 += _0x52058c['charAt'](_0x43e73a['tTwDl'](_0x4c333c >> _0x43e73a['fDweB'](_0x3c067f, 0x4), 0xf));}return _0x4661a5;}function _0xb227e2(_0x55acf7) {var _0x59cbf2 = (_0x43e73a['nnILZ'](_0x55acf7['length'], 0x8) >> 0x6) + 0x1,_0x1cf031 = new Array(_0x43e73a['fDweB'](_0x59cbf2, 0x10));for (var _0x30e700 = 0x0; _0x30e700 < _0x59cbf2 * 0x10; _0x30e700++) {_0x1cf031[_0x30e700] = 0x0;}for (_0x30e700 = 0x0; _0x30e700 < _0x55acf7['length']; _0x30e700++) {_0x1cf031[_0x43e73a['tUtAf'](_0x30e700, 0x2)] |= _0x43e73a['GlcUf'](_0x55acf7['charCodeAt'](_0x30e700), _0x43e73a['Egxmp'](0x18, _0x43e73a['WtxKA'](_0x30e700 & 0x3, 0x8)));}_0x1cf031[_0x43e73a['tUtAf'](_0x30e700, 0x2)] |= _0x43e73a['AUjcG'](0x80, 0x18 - _0x43e73a['aImhj'](_0x30e700 & 0x3, 0x8));_0x1cf031[_0x43e73a['LZbSM'](_0x59cbf2 * 0x10, 0x1)] = _0x43e73a['aImhj'](_0x55acf7['length'], 0x8);return _0x1cf031;}function _0x3a304e(_0x5a8556, _0x130fdf) {return _0x5a8556 << _0x130fdf | _0x5a8556 >>> 0x20 - _0x130fdf;}function _0x520671(_0x2d8c1c, _0x40483b, _0x15ba0f, _0x38aa47) {if (_0x2d8c1c < 0x14) return _0x40483b & _0x15ba0f | _0x43e73a['tTwDl'](~_0x40483b, _0x38aa47);if (_0x43e73a['PCjCU'](_0x2d8c1c, 0x28)) return _0x43e73a['vcJIZ'](_0x40483b ^ _0x15ba0f, _0x38aa47);if (_0x2d8c1c < 0x3c) return _0x43e73a['uQyRR'](_0x40483b & _0x15ba0f, _0x40483b & _0x38aa47) | _0x43e73a['rBwUP'](_0x15ba0f, _0x38aa47);return _0x43e73a['CVCuK'](_0x40483b, _0x15ba0f) ^ _0x38aa47;}function _0x29ed(_0x3d4ecb) {return _0x3d4ecb < 0x14 ? 0x5a827999 : _0x3d4ecb < 0x28 ? 0x6ed9eba1 : _0x3d4ecb < 0x3c ? -0x70e44324 : -0x359d3e2a;}var _0x35db9f = _0xb227e2(_0x3e501b);var _0xa676a2 = new Array(0x50);var _0x1fe9ed = 0x67452301;var _0x30040d = -0x10325477;var _0x15967b = -0x67452302;var _0x184d43 = 0x10325476;var _0x441ea8 = -0x3c2d1e10;for (var _0x2527e = 0x0; _0x43e73a['hMtHv'](_0x2527e, _0x35db9f['length']); _0x2527e += 0x10) {var _0x242d65 = _0x1fe9ed;var _0x111547 = _0x30040d;var _0x570546 = _0x15967b;var _0x36025e = _0x184d43;var _0x56cb39 = _0x441ea8;for (var _0x56c656 = 0x0; _0x56c656 < 0x50; _0x56c656++) {if (_0x56c656 < 0x10) {_0xa676a2[_0x56c656] = _0x35db9f[_0x43e73a['OjxgU'](_0x2527e, _0x56c656)];} else {_0xa676a2[_0x56c656] = _0x43e73a['kxupd'](_0x3a304e, _0x43e73a['CVCuK'](_0xa676a2[_0x43e73a['LZbSM'](_0x56c656, 0x3)] ^ _0xa676a2[_0x43e73a['LZbSM'](_0x56c656, 0x8)], _0xa676a2[_0x56c656 - 0xe]) ^ _0xa676a2[_0x43e73a['QZBIa'](_0x56c656, 0x10)], 0x1);}t = _0x43e73a['ahQNH'](_0x2b41b9, _0x2b41b9(_0x43e73a['ahQNH'](_0x3a304e, _0x1fe9ed, 0x5), _0x43e73a['gZCtm'](_0x520671, _0x56c656, _0x30040d, _0x15967b, _0x184d43)), _0x2b41b9(_0x43e73a['rXdRR'](_0x2b41b9, _0x441ea8, _0xa676a2[_0x56c656]), _0x29ed(_0x56c656)));_0x441ea8 = _0x184d43;_0x184d43 = _0x15967b;_0x15967b = _0x3a304e(_0x30040d, 0x1e);_0x30040d = _0x1fe9ed;_0x1fe9ed = t;}_0x1fe9ed = _0x2b41b9(_0x1fe9ed, _0x242d65);_0x30040d = _0x43e73a['rXdRR'](_0x2b41b9, _0x30040d, _0x111547);_0x15967b = _0x2b41b9(_0x15967b, _0x570546);_0x184d43 = _0x2b41b9(_0x184d43, _0x36025e);_0x441ea8 = _0x43e73a['rXdRR'](_0x2b41b9, _0x441ea8, _0x56cb39);}return _0x43e73a['OjxgU'](_0x43e73a['OjxgU'](_0x43e73a['OjxgU'](_0x43e73a['QTmzZ'](_0x537251, _0x1fe9ed) + _0x43e73a['RnoGt'](_0x537251, _0x30040d), _0x43e73a['RnoGt'](_0x537251, _0x15967b)), _0x537251(_0x184d43)), _0x43e73a['RnoGt'](_0x537251, _0x441ea8));
}function go(_0x268948) {var _0x225662 = {};_0x225662['yYDkD'] = function (_0x5126f0, _0x3b3575) {return _0x5126f0 < _0x3b3575;};_0x225662['kvFwD'] = function (_0x16a4ff, _0x530f7e) {return _0x16a4ff != _0x530f7e;};_0x225662['frrXH'] = function (_0x32c21a, _0x14e517) {return _0x32c21a < _0x14e517;};_0x225662['SpsfD'] = function (_0x3e7e11, _0x1d6dba) {return _0x3e7e11 == _0x1d6dba;};_0x225662['CoTAd'] = function (_0x31c498, _0x2b21b3) {return _0x31c498(_0x2b21b3);};_0x225662['qvRxI'] = function (_0x489d0c, _0x2103a3) {return _0x489d0c + _0x2103a3;};_0x225662['XOBkW'] = function (_0xd7f68f, _0x449d27) {return _0xd7f68f + _0x449d27;};_0x225662['jjOHZ'] = function (_0x362da3) {return _0x362da3();};_0x225662['KtJNL'] = function (_0x5a35c5, _0x102625, _0x42b3f4) {return _0x5a35c5(_0x102625, _0x42b3f4);};_0x225662['sRcCE'] = function (_0x45e436, _0x1a4b8a) {return _0x45e436 > _0x1a4b8a;};_0x225662['fjvps'] = function (_0xcd3d09, _0x797f52) {return _0xcd3d09 - _0x797f52;};_0x225662['RFwHe'] = '请求验证失败';var _0x55796d = _0x225662;function _0x21c0a0() {var _0x8c81c5 = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',_0x4f9c34 = ['Phantom'];for (var _0x663d22 = 0x0; _0x55796d['yYDkD'](_0x663d22, _0x4f9c34['length']); _0x663d22++) {if (_0x55796d['kvFwD'](_0x8c81c5['indexOf'](_0x4f9c34[_0x663d22]), -0x1)) {return !![];}}if (undefined) {return !![];}};if (_0x55796d['jjOHZ'](_0x21c0a0)) {return;}var _0x5eb57d = new Date();function _0x6c8612(_0x46fd88, _0xdc1245) {var _0x3fca5a = _0x268948['chars']['length'];for (var _0x35b219 = 0x0; _0x55796d['frrXH'](_0x35b219, _0x3fca5a); _0x35b219++) {for (var _0x252718 = 0x0; _0x252718 < _0x3fca5a; _0x252718++) {var _0x236c3d = _0xdc1245[0x0] + _0x268948['chars']['substr'](_0x35b219, 0x1) + _0x268948['chars']['substr'](_0x252718, 0x1) + _0xdc1245[0x1];if (_0x55796d['SpsfD'](_0x55796d['CoTAd'](hash, _0x236c3d), _0x46fd88)) {return [_0x236c3d, new Date() - _0x5eb57d];}}}};var _0x375f7d = _0x55796d['KtJNL'](_0x6c8612, _0x268948['ct'], _0x268948['bts']);return _0x375f7d[0]
};cookie = go({"bts": ["1690516426.653|0|rRT", "DKS8EVDzKevNzhePIdloyU%3D"],"chars": "pycPPMayT9bXKYdZdnURpd","ct": "1073cc6066c93a07c810a5451165a7654310858a","ha": "sha1","tn": "__jsl_clearance_s","vt": "3600","wt": "1500"
})
console.log(cookie)

仅作为笔记记录,如有问题请各位大佬来指导

相关文章:

python爬虫-加速乐cookie混淆解析实例小记

注意&#xff01;&#xff01;&#xff01;&#xff01;某XX网站逆向实例仅作为学习案例&#xff0c;禁止其他个人以及团体做谋利用途&#xff01;&#xff01;&#xff01; 第一步&#xff1a;抓包工具第一次请求页面&#xff0c;得到响应。本次我使用的fiddle进行抓包&#…...

TensorFlow 中前缀 prefix

前缀 prefix 主要用于命名 TensorFlow 中的变量&#xff0c;以避免变量名冲突。在 TensorFlow 中&#xff0c;每个变量都有一个唯一的名称&#xff0c;由变量的作用域和变量的名称组成。作用域可以通过 tf.variable_scope() 函数来创建&#xff0c;而变量的名称通常是由用户指定…...

SystemVerilog scheduler

文章目录 简介调度器simulation regionPreponed regionActive regionInactive regionNBA(Non-blocking Assignment Events region)Observed regionReactive regionRe-Inactive Events regionRe-NBA RegionPostponed Region PLI region:Pre-active regionPre-NBA regionPost-NBA…...

Qt 5. QSerialPort串口收发

1. 代码 //ex2.cpp #include "ex2.h" #include "ui_ex2.h" #include <QtSerialPort/QSerialPort> #include <QtSerialPort/QSerialPortInfo>int static cnt 0;Ex2::Ex2(QWidget *parent): QDialog(parent), ui(new Ui::Ex2) {ui->setupUi…...

什么是Java中的JVMTI(JVM Tool Interface)?

Java中的JNI&#xff08;Java Native Interface&#xff09;和JVMTI&#xff08;JVM Tool Interface&#xff09;都是与Java运行时环境&#xff08;JVM&#xff09;交互的工具&#xff0c;但它们有不同的目的和使用场景。下面我从新手的角度来幽默地解释一下它们的区别和用途。…...

WAF独木难支 RASP与ADR将成应用安全防护2.0时代新宠

曾几何时&#xff0c;黑客攻击大多通过网络层进行&#xff0c;但随着基于网络层的基础安全防护措施趋于严密&#xff0c;防火墙、入侵防御、防病毒等安全软硬件构建起了相对完善的防护体系&#xff0c;想再从网络层钻空子的难度增大。如今&#xff0c;黑客攻击从网络层转入Web为…...

四、Unity中颜色空间

Unity中的设置 通过点击菜单Edit->Project Settings->Player页签->Other Settings下的Rendering部分进行修改&#xff0c;参数Color Space可以选择Gamma或Linear。 当选择Gamma Space时&#xff0c;Unity不会做任何处理。当选择Linear Space时&#xff0c;引擎的渲染…...

Java程序员面试题

Java程序员面试题目 1.Java基础1.1 Java有list&#xff0c;list有很多种&#xff0c;你平时开发喜欢用哪个list&#xff1f;&#xff08;容易&#xff09;1.2 Java的map&#xff0c;你知道有哪几种map&#xff0c;你平时喜欢用哪个&#xff1f;&#xff08;容易&#xff09; 2.…...

【自动化剧本】Role角色

目录 一、Roles模块1.1roles的目录结构1.2roles 内各目录含义解释1.3在一个 playbook 中使用 roles 的步骤 二、使用Role编写LNMP剧本2.1 搭建Nginx角色2.2搭建Mysql角色2.3搭建php角色2.4lnmp剧本 一、Roles模块 roles用于层次性、结构化地组织playbook。roles能够根据层次型结…...

安全文件传输:如何避免数据泄露和黑客攻击

网络安全问题日益严重&#xff0c;导致许多数据被泄露和黑客袭击的事件频发。为了保证文件传输的安全&#xff0c;需要实施一系列安全文件传输策略来防止数据被泄露和黑客袭击。 第一、选择适合的加密方法是非常关键的 加密是一种将明文转换成密文的过程&#xff0c;这样只有授…...

web基础与http

一&#xff0c;dns与域名 网络基于tcp/ip协议进行通信和连接的&#xff0c;其中主机以ip地址做固定的地址标识&#xff0c;用以区分用户和计算机。ip地址是由32位二进制数组成&#xff0c;不方便记忆。为了方便记忆&#xff0c;采用了域名。但是网络通信的唯一标识是ip地址&…...

寒假作业(蓝桥杯2016年省赛C++A组第6题 )

题目&#xff1a; 注&#xff1a;蓝桥杯2016年省赛CA组第6题 请填写表示方案数目的整数。 题解&#xff1a; 由题可知这是一道全排列问题&#xff0c;因此我们可以使用c的next_permutation函数对于1-13的数字进行全排列即可&#xff0c;并每次排列判断是否满足题意。 注意…...

NUMA架构在kubernetes中的应用

numactl使用 numactl 通过将 CPU 划分多个 node 减少 CPU 对总线资源的竞争,一般使用在高配置服务器部署多个 CPU 消耗性服务使用。 numactl使用,numa常用命令,numa命令行使用 #numactl -H available: 2 nodes (0-1) node 0 cpus: 0 2 4 6 8 10 12 14 16 18 20 22 node 0…...

Gogs Git windos服务搭建指南

Gogs Git服务器搭建指南 背景&#xff1a; 近期在Linux 麒麟 v10 系统上开发&#xff1b;为了团队协同编程&#xff1b;选用了Git服务器&#xff1b;之前在windos开始时候使用的visualSVN server; visualSVN server从4.x.x.x开始收费&#xff1b;限制15个开发者用户&#xff…...

leetcode 983. 最低票价

在一个火车旅行很受欢迎的国度&#xff0c;你提前一年计划了一些火车旅行。在接下来的一年里&#xff0c;你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 的整数。 火车票有 三种不同的销售方式 &#xff1a; 一张 为期一天 的通行证售价为 costs[0] …...

七种遍历Map的方法

七种遍历Map的方法 import java.util.HashMap; import java.util.Iterator; import java.util.Map;public class Wan {public static void main(String[] args) {Map<String,String> dataMap new HashMap<>();dataMap.put("A","Abb");dataMap…...

Android性能优化—内存优化

一、App内存组成以及管理 Android 给每个 App 分配一个 VM &#xff0c;让App运行在 dalvik 上&#xff0c;这样即使 App 崩溃也不会影响到系统。系统给 VM 分配了一定的内存大小&#xff0c; App 可以申请使用的内存大小不能超过此硬性逻辑限制&#xff0c;就算物理内存富余&…...

Python自动计算Excel数据指定范围内的区间最大值

本文介绍基于Python语言&#xff0c;基于Excel表格文件内某一列的数据&#xff0c;计算这一列数据在每一个指定数量的行的范围内&#xff08;例如每一个4行的范围内&#xff09;的区间最大值的方法。 已知我们现有一个.csv格式的Excel表格文件&#xff0c;其中有一列数据&#…...

FTP文件传输协议

FTP文件传输协议 介绍 将某台计算机中的文件通过网络传送到可能相距很远的另一台计算机中&#xff0c;是一项基本的网络应用&#xff0c;即文件传送文件传输协议(File Transfer Protocol)是因特网上使用得最广泛的文件传输协议 FTP提供交互式访问&#xff0c;允许客户指明文件…...

运维高级--tomcat和jpress

1. 简述静态网页和动态网页的区别。 静态网页&#xff1a;事先创建好的网页&#xff0c;通常通过HTML、CSS和JavaScript等静态文件组成&#xff0c;不需要和服务器进行交互&#xff0c;加载速度快 动态网页&#xff1a;根据用户需求动态生成网页&#xff0c;动态网页通常使用…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...