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)

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/74469.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网易云音乐扫码登录

简介 尚硅谷的网易云音乐项目无法登录&#xff0c;因为目前网易修改了接口使用手机号和密码登录的话需要先通过认证才可以&#xff0c;所以目前无法使用手机号登录&#xff0c;只能使用二维码登录&#xff0c;接下来我就教大家如何使用 二维码进行登录 实现步骤 1.获取nodejs接…

【1.4】Java微服务:服务注册和调用(Eureka和Ribbon实现)

✅作者简介&#xff1a;大家好&#xff0c;我是 Meteors., 向往着更加简洁高效的代码写法与编程方式&#xff0c;持续分享Java技术内容。 &#x1f34e;个人主页&#xff1a;Meteors.的博客 &#x1f49e;当前专栏&#xff1a; 微服务 ✨特色专栏&#xff1a; 知识分享 &#x…

排序八卦炉之选择、堆排

文章目录 1.选择排序1.1代码实现1.2复杂度 2.堆排序2.1代码实现2.2复杂度 1.选择排序 1.1代码实现 // 当数据趋于有序或随机(可能部分有序) 插排更有优势 O(N)~O(N^2) //选择排序&#xff1a;O&#xff08;N^2&#xff09; O(N^2)~O(N^2) void …

【shell】获取ping的时延数据并分析网络情况及常用命令学习

文章目录 获取ping的时延数据并分析网络情况|、||、&、&&辨析teetailkillall 获取ping的时延数据并分析网络情况 网络情况经常让我们头疼&#xff0c;每次都需要手动在终端ping太麻烦了&#xff0c;不如写个脚本ping并将数据带上时间戳存入文件&#xff0c;然后也…

如何克服看到别人优于自己而感到的焦虑和迷茫?

文章目录 每日一句正能量前言简述自己的感受怎么做如何调整自己的心态后记 每日一句正能量 行动是至于恐惧的良药&#xff0c;而犹豫、拖延&#xff0c;将不断滋养恐惧。 前言 虽然清楚知识需要靠时间沉淀&#xff0c;但在看到自己做不出来的题别人会做&#xff0c;自己写不出的…

软件测试缺陷报告

缺陷报告是描述软件缺陷现象和重现步骤地集合。软件缺陷报告Software Bug Report&#xff08;SBR&#xff09;或软件问题报告Software Problem Report&#xff08;SPR&#xff09; 作用&#xff1a;缺陷报告是软件测试人员的工作成果之一&#xff0c;体现软件测试的价值缺陷报…

Pytorch深度学习-----神经网络之线性层用法

系列文章目录 PyTorch深度学习——Anaconda和PyTorch安装 Pytorch深度学习-----数据模块Dataset类 Pytorch深度学习------TensorBoard的使用 Pytorch深度学习------Torchvision中Transforms的使用&#xff08;ToTensor&#xff0c;Normalize&#xff0c;Resize &#xff0c;Co…

<van-empty description=““ /> 滚动条bug

使用 <van-empty description"" /> 时&#xff0c;图片出现了个滚动条&#xff0c;图片可以上下滑动。 代码如下&#xff1a; <block wx:if"{{courseList.length < 0}}"><van-empty description"" /> </block> <…

python与深度学习(十):CNN和cifar10二

目录 1. 说明2. cifar10的CNN模型测试2.1 导入相关库2.2 加载数据和模型2.3 设置保存图片的路径2.4 加载图片2.5 图片预处理2.6 对图片进行预测2.7 显示图片 3. 完整代码和显示结果4. 多张图片进行测试的完整代码以及结果 1. 说明 本篇文章是对上篇文章训练的模型进行测试。首…

主流开源监控系统一览

减少故障有两个层面的意思&#xff0c;一个是做好常态预防&#xff0c;不让故障发生&#xff1b;另一个是如果故障发生&#xff0c;要能尽快止损&#xff0c;减少故障时长。而监控的典型作用&#xff0c;就是帮助我们发现及定位故障&#xff0c;这两个环节对于减少故障时长至关…

LeetCode面向运气之Javascript—第2500题-删除每行中的最大值-93.51%

LeetCode第2500题-删除每行中的最大值 题目要求 一个 m x n 大小的矩阵 grid &#xff0c;由若干正整数组成。 执行下述操作&#xff0c;直到 grid 变为空矩阵&#xff1a; 从每一行删除值最大的元素。如果存在多个这样的值&#xff0c;删除其中任何一个。 将删除元素中的最…

Kafka的零拷贝

传统的IO模型 如果要把磁盘中的某个文件发送到远程服务器需要经历以下几个步骤 (1) 从磁盘中读取文件的内容&#xff0c;然后拷贝到内核缓冲区 (2) CPU把内核缓冲区的数据赋值到用户空间的缓冲区 (3) 在用户程序中调用write方法&#xff0c;把用户缓冲区的数据拷贝到内核下面…

面向对象程序三大特性一:多态(超详细)

目录 1.重写 1.1基本语法规则 1.2规则深化 1.3重写与重载的区别 2.向上转型 2.1简单介绍 2.3向上转型的作用 3.向下转型 3.1介绍 3.2instanceof 基本介绍 4.多态 4.1多态实现条件 4.2避免在构造方法中调用重写的方法 1.重写 重写 (override) &#xff1a;也称为覆…

容器技术:Docker搭建(通俗易懂)

目录 Docker搭建环境准备Docker安装1、查看服务器是否安装Docker2、卸载Docker3、安装Dokcer依赖环境4、配置Docker国内阿里云镜像5、安装Docker6、查看Docker信息7、配置阿里云镜像加速8、镜像安装10、运行实例11、查看实例状态12、测试 Docker命令集合 Docker搭建 环境准备 …

剑指Offer 05.替换空格

剑指Offer 05.替换空格 目录 剑指Offer 05.替换空格05.替换空格题目代码&#xff08;容易想到的&#xff09;利用库函数的方法题解&#xff08;时间复杂度更低&#xff09;面试&#xff1a;为什么java中String类型是不可变的 05.替换空格 题目 官网题目地址 代码&#xff08;…

Ubuntu-文件和目录相关命令

&#x1f52e;linux的文件系统结构 ⛳目录结构及目录路径 &#x1f9e9;文件系统层次结构标准FHS Filesystem Hierarchy Standard(文件系统层次结构标准&#xff09; Linux是开源的软件&#xff0c;各Linux发行机构都可以按照自己的需求对文件系统进行裁剪&#xff0c;所以众多…

【零基础学Rust | 基础系列 | 数据结构】元组,数组,向量,字符串,结构体

文章标题 简介&#xff1a;一&#xff0c;元组&#xff1a;1&#xff0c;定义元组&#xff1a;2&#xff0c;访问元组元素&#xff1a;3&#xff0c;元组解构&#xff1a;4&#xff0c;元组在函数中的应用&#xff1a; 二&#xff0c;数组&#xff1a;1&#xff0c;数组的声明和…

PyTorch - GPU入门教程1

1. 安装GPU版本的PyTorch 登录PyTorch官网https://pytorch.org/&#xff0c;下载对应CUDA版本的PyTorch【不能直接pip install&#xff0c;否则安装上的是CPU版本的】 2. 查看GPU信息 &#xff08;1&#xff09;重要信息 !nvidia-smi我的GPU版本很垃圾&#xff0c;本blog仅…

UML/SysML建模工具更新(2023.7)(1-5)有国产工具

DDD领域驱动设计批评文集 欢迎加入“软件方法建模师”群 《软件方法》各章合集 最近一段时间更新的工具有&#xff1a; 工具最新版本&#xff1a;Visual Paradigm 17.1 更新时间&#xff1a;2023年7月11日 工具简介 很用心的建模工具。支持编写用例规约。支持文本分析和C…

论文阅读-BotPercent: Estimating Twitter Bot Populations from Groups to Crowds

目录 摘要 引言 方法 数据集 BotPercent架构 实验结果 活跃用户中的Bot数量 Bot Population among Comment Sections Bot Participation in Content Moderation Votes Bot Population in Different Countries’ Politics 论文链接&#xff1a;https://arxiv.org/pdf/23…