这次给大家带来的是一个2500的爬虫外包项目,在这里肯定有人说这个不值这么多,也有人会各种嘲讽。但是别忘了,人的眼界不一样,做事的决定自然会不同。

如果2500能给你带来25000的利润,那么你会选择毫不犹豫的支付吗?话不多说,看聊天记录,还是挺久以前做的了。(我后面再给大家一一道来,暂时先看咱们的教程。)

分析(x0)

进入目标网站:https://www.laifeng.com/


随便进入一个分类,点击进入某直播间


当我们点击弹幕直播框时,它会要求咱们登录账号。这也实属正常,没办法那咱们就登录吧。

登录成功后,咱们抓一下这个发送弹幕的包:


确实尴尬,我不知道发送什么,就说了句您好,没想到小姐姐很惊讶的说您好,您也好…然后说听完一首《飘向北方》就下播了…我不知道他下播了后,我还是否可以发送弹幕。

不管了,我先抽支烟看看小姐姐听完这首歌再接着写。

emmm,roomid为直播间的房间号,content为我发送的内容。

roomid可以在url中看得到的,前面那个图我没截出来,自己看一下就知道了。


t为时间戳,sign签名也是JavaScript加密的。其它值不变,自己发送两次弹幕抓包对比一下就好了。

分析(x1)

有人会奇怪你怎么知道t为时间戳…这玩意还需要说么,还是说一下吧,查找一下t的来源,我觉得向这种短的参数,最好别直接搜t,你会搜出来一大堆的。我建议搜临近的值sign,因为你提交的表单中有这么多的参数,那么在js文件中基本也会有相对应的参数的。


t:i意思是把i赋值给t,而

i = (new Date).getTime()

哦豁,没学过前端的人就看不懂这个是啥意思了,这个其实就是JavaScript语法中的取现行时间。

在我们的鬼鬼js调试工具看看效果:


可以看到是它是一直在变化的,就像咱们的时间一样一直在流逝变化。不懂什么是时间戳的自己去谷歌一下。

或者在咱们的控制台也可以得到它:


既然它是利用JavaScript这么个语法生成的参数,那么我们用Python如何实现?


OK,至此已经解决第一个加密的参数。

分析(x2)

接下来就是大头菜了,咱们分析sign签名是如何得到的:


好吧,很多位置参数,压根不知道是如何得来的但是可以看到它用到 i 这个参数,也就是咱们的时间戳。

还是debug一下吧:


打个断点,在浏览器上随意发送一弹幕,发现g就是appkey是一个定值,c为一个字典,咱们要取的是c字典中data键所对应的值:


是不是好熟悉,这不就是咱们post中的data的值么?那么就只剩下d了。

d为一个字典,而咱们需要的是d里面的一个叫token键对应的值:


凭我经验,这个d根本不需咱们去找它应该就是咱们的cookies,直接搜一下就完事了…


那么到此为止,咱们的所有参数都已经分析完了,咱们开始测试一下:


发现缺少对象,emmmmm我三十岁的人都没对象…这里毫无疑问就是少了h这个函数对象。

那么咱们去给它找出来即可


点一下这个花括号,然后这样子的话函数末也有出现这么一个横杠,然后把JavaScript代码抠下来再来测试:


OK,到此为止,咱们已经完成了百分之五十了,为什么最核心的部分完成确只完成百分之五十呢?因为这个项目为三个程序:自动对接接吗台子注册账号、房间ID号采集筛选出主播在线的ID号、咱们这个的话就是关键的发送程序。

代码

Python代码:

import requests
import execjs
import time# 携带cookies进入主页
ck = '123456'
headers = {'authority': 'www.laifeng.com','method': 'GET','path': '/?','scheme': 'https','accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9','accept-encoding': 'gzip, deflate, br','accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7','cache-control': 'no-cache','cookie': ck,'pragma': 'no-cache','sec-ch-ua-mobile': '?0','sec-fetch-dest': 'document','sec-fetch-mode': 'navigate','sec-fetch-site': 'none','sec-fetch-user': '?1','upgrade-insecure-requests': '1','user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3870.400 QQBrowser/10.8.4405.400',
}
url = 'https://www.laifeng.com/'
r = requests.get(url, headers=headers)
print(r.text)# 进入直播间
url = f'https://v.laifeng.com/711329'
headers = {'authority': 'v.laifeng.com','method': 'GET','path':  '/711329','scheme': 'https','accept': 'application/json, text/javascript, */*; q=0.01','accept-encoding': 'gzip, deflate, br','accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7','cache-control': 'no-cache',# 'cookie': 'mk=453ed14d2f6e4871ba8f09cfefcba1a3; cna=XacYGCzzLgkCAW411IXRpIVk; P_ck_ctl=5633DEE6E3B29B5783C835500682978B; xlly_s=1; P_ck_ctr=870A7039ED41E1AF8A4E5AF9A7D413C5; premium_cps=0_0%7C76%7C85232%7C0___; cmk=80ff16e81ec844f7946cfb91262dc197; P_pck_rm=z99ATxqw33e2f40cb442c0ZBnFgC5IrE%2BWMeN4%2BR%2BFlfXo6CU2HuinwjayRmNzYP5BIz5HRZzLPXYEPoNGojmxulCSHs6dFdWS1WNMYs6WkVelQxcsN%2FkHwmDvakV1b8hA0MqQXvBvTdMeakZiDzsBNT%2BuFifi6PNbRVoQ%3D%3D%5FV2; P_gck=NA%7CPmRanzni%2BsGuV8NRBrUBaw%3D%3D%7CNA%7C1621735722621; P_sck=8agJlNkqujZS6MrSyNJwjanMcMbXipu2qC%2BxD4UmyvNoTDHSq7Nah1Epvqm%2FaUXXcspBt9AU9cvP8ksA8NHQKpdD9h1%2Bd0oOFKVzm2HD0ZkEUaPPVJ28NNQmgMPfzqvrbS6Rz1TAHSvGhiEJt9gmuQ%3D%3D; uk=1362040016; anchor-task-tips=vistived; fansTuan-tips=vistived; _m_h5_tk=298bfbf0d1f474b3cd1e7566f68193a1_1621744352184; _m_h5_tk_enc=2d0745b898b59366cf07b6efa7cd875b; isg=BGVlUl6Rac0flo0Rbvh1ju8VdCGfohk0iyhzDmdLjxyrfoTwL_CVBFBWCOII_jHs; imk=MTM2MjA0MDAxNi0xLTE2MjE3NDA2ODg4MDUtMTYyMTgyNzA4ODgwNQ%3D%3D-FC64AFD62649932D1C07520D9BCA6A50; __ysuid=1621740688797e9b','pragma': 'no-cache','sec-ch-ua-mobile': '?0','sec-fetch-dest': 'empty','sec-fetch-mode': 'cors','sec-fetch-site': 'same-origin','user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3870.400 QQBrowser/10.8.4405.400','x-requested-with': 'XMLHttpRequest',
}
r = requests.get(url, headers=headers)
print(r)
print(r.text)# 获取sign
t = str(int(time.time()*1000))
with open('js1.js', 'r', encoding='utf-8') as f:ctx = execjs.compile(f.read())sign = ctx.call('test', '{"roomId":"711329","content":"找个壮男薇123456"}', t)
print(sign)# 发送弹幕
url = f'https://acs.laifeng.com/h5/mtop.youku.live.platform.chat/1.0/?jsv=2.6.1&appKey=24679788&t={t}&sign={sign}&type=originaljson&dataType=json&api=mtop.youku.live.platform.chat&v=1.0&ecode=1'
data = {'data': '{"roomId":"711329","content":"找个壮男薇123456"}'
}headers = {'authority': 'acs.laifeng.com','method': 'POST','path': f'/h5/mtop.youku.live.platform.chat/1.0/?jsv=2.6.1&appKey=24679788&t={t}&sign={sign}&type=originaljson&dataType=json&api=mtop.youku.live.platform.chat&v=1.0&ecode=1','scheme': 'https','accept': 'application/json','accept-encoding': 'gzip, deflate, br','accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7','cache-control': 'no-cache','content-length': '65','content-type': 'application/x-www-form-urlencoded',# 'cookie': 'mk=453ed14d2f6e4871ba8f09cfefcba1a3; cna=XacYGCzzLgkCAW411IXRpIVk; xlly_s=1; cmk=80ff16e81ec844f7946cfb91262dc197; P_gck=NA%7CPmRanzni%2BsGuV8NRBrUBaw%3D%3D%7CNA%7C1621735722621; uk=1362040016; anchor-task-tips=vistived; fansTuan-tips=vistived; P_sck=%2BUdo1iqrKx4%2FVd0vPYAbiHOpyqJ39%2Fw8brn2mmb2jYLlctldDNJ2qXSzYFPJDEYzodI65rDbJDzRtM6T7xkFNfREb9ajH8aAhsEioWLTbTp9LqNh%2ByYY7yW43dhpBBcSerlcOCmoajgMf%2BWzmhN7zw%3D%3D; P_pck_rm=z99ATxqw33e2f40cb442c0ZBnFgC5IrE%2BWMeN4%2BR%2BFlfXo6CU2HuinwjayRmNzYP5BIz5HRZzLPXYEPoNGojmxulCSHs6dFdWS1WNMYs6WkVelQxcsN%2FkHwmDvakV1b8hA0MqQXvBvTdMeakZiDzsBNT%2BuFifi6PNbRVoQ%3D%3D_V2; _m_h5_tk=83a19c51d0630a852efa9b4189393fca_1621764171783; _m_h5_tk_enc=2346991bccefcfc40b4ddb78c83c888f; __ysuid=1621760043001XhI; imk=MTM2MjA0MDAxNi0xLTE2MjE3NjAwNDM3MTAtMTYyMTg0NjQ0MzcxMA%3D%3D-1AEDB0971C2FA6CB9B62CAA7858E1C42; isg=BNHRDPTLVUpHT7ldmhTZitMx4N1rPkWwB8xnQrNkNxiMWvOs-ouggV6o_i68yd3o','cookie': ck,'origin': 'https://v.laifeng.com','pragma': 'no-cache','referer': 'https://v.laifeng.com/711329','sec-ch-ua-mobile': '?0','sec-fetch-dest': 'empty','sec-fetch-mode': 'cors','sec-fetch-site': 'same-site','user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3870.400 QQBrowser/10.8.4405.400',
}
r = requests.post(url, headers=headers, data=data)
print(r)
print(r.text)

需要自己手动拿下登录页码的cookies,然后自己更改好发送的内容与房间id即可。

JavaScript源码:

function h(a) {function b(a, b) {return a << b | a >>> 32 - b
}
function c(a, b) {var c, d, e, f, g;return e = 2147483648 & a,f = 2147483648 & b,c = 1073741824 & a,d = 1073741824 & b,g = (1073741823 & a) + (1073741823 & b),c & d ? 2147483648 ^ g ^ e ^ f: c | d ? 1073741824 & g ? 3221225472 ^ g ^ e ^ f: 1073741824 ^ g ^ e ^ f: g ^ e ^ f
}
function d(a, b, c) {return a & b | ~a & c
}
function e(a, b, c) {return a & c | b & ~c
}
function f(a, b, c) {return a ^ b ^ c
}
function g(a, b, c) {return b ^ (a | ~c)
}
function h(a, e, f, g, h, i, j) {return a = c(a, c(c(d(e, f, g), h), j)),c(b(a, i), e)
}
function i(a, d, f, g, h, i, j) {return a = c(a, c(c(e(d, f, g), h), j)),c(b(a, i), d)
}
function j(a, d, e, g, h, i, j) {return a = c(a, c(c(f(d, e, g), h), j)),c(b(a, i), d)
}
function k(a, d, e, f, h, i, j) {return a = c(a, c(c(g(d, e, f), h), j)),c(b(a, i), d)
}
function l(a) {for (var b, c = a.length,d = c + 8,e = (d - d % 64) / 64, f = 16 * (e + 1), g = new Array(f - 1), h = 0, i = 0; c > i;) b = (i - i % 4) / 4,h = i % 4 * 8,g[b] = g[b] | a.charCodeAt(i) << h,i++;return b = (i - i % 4) / 4,h = i % 4 * 8,g[b] = g[b] | 128 << h,g[f - 2] = c << 3,g[f - 1] = c >>> 29,g
}
function m(a) {var b, c, d = "",e = "";for (c = 0; 3 >= c; c++) b = a >>> 8 * c & 255,e = "0" + b.toString(16),d += e.substr(e.length - 2, 2);return d
}
function n(a) {a = a.replace(/\r\n/g, "\n");for (var b = "",c = 0; c < a.length; c++) {var d = a.charCodeAt(c);128 > d ? b += String.fromCharCode(d) : d > 127 && 2048 > d ? (b += String.fromCharCode(d >> 6 | 192), b += String.fromCharCode(63 & d | 128)) : (b += String.fromCharCode(d >> 12 | 224), b += String.fromCharCode(d >> 6 & 63 | 128), b += String.fromCharCode(63 & d | 128))}return b
}
var o, p, q, r, s, t, u, v, w, x = [],
y = 7,
z = 12,
A = 17,
B = 22,
C = 5,
D = 9,
E = 14,
F = 20,
G = 4,
H = 11,
I = 16,
J = 23,
K = 6,
L = 10,
M = 15,
N = 21;
for (a = n(a), x = l(a), t = 1732584193, u = 4023233417, v = 2562383102, w = 271733878, o = 0; o < x.length; o += 16) p = t,
q = u,
r = v,
s = w,
t = h(t, u, v, w, x[o + 0], y, 3614090360),
w = h(w, t, u, v, x[o + 1], z, 3905402710),
v = h(v, w, t, u, x[o + 2], A, 606105819),
u = h(u, v, w, t, x[o + 3], B, 3250441966),
t = h(t, u, v, w, x[o + 4], y, 4118548399),
w = h(w, t, u, v, x[o + 5], z, 1200080426),
v = h(v, w, t, u, x[o + 6], A, 2821735955),
u = h(u, v, w, t, x[o + 7], B, 4249261313),
t = h(t, u, v, w, x[o + 8], y, 1770035416),
w = h(w, t, u, v, x[o + 9], z, 2336552879),
v = h(v, w, t, u, x[o + 10], A, 4294925233),
u = h(u, v, w, t, x[o + 11], B, 2304563134),
t = h(t, u, v, w, x[o + 12], y, 1804603682),
w = h(w, t, u, v, x[o + 13], z, 4254626195),
v = h(v, w, t, u, x[o + 14], A, 2792965006),
u = h(u, v, w, t, x[o + 15], B, 1236535329),
t = i(t, u, v, w, x[o + 1], C, 4129170786),
w = i(w, t, u, v, x[o + 6], D, 3225465664),
v = i(v, w, t, u, x[o + 11], E, 643717713),
u = i(u, v, w, t, x[o + 0], F, 3921069994),
t = i(t, u, v, w, x[o + 5], C, 3593408605),
w = i(w, t, u, v, x[o + 10], D, 38016083),
v = i(v, w, t, u, x[o + 15], E, 3634488961),
u = i(u, v, w, t, x[o + 4], F, 3889429448),
t = i(t, u, v, w, x[o + 9], C, 568446438),
w = i(w, t, u, v, x[o + 14], D, 3275163606),
v = i(v, w, t, u, x[o + 3], E, 4107603335),
u = i(u, v, w, t, x[o + 8], F, 1163531501),
t = i(t, u, v, w, x[o + 13], C, 2850285829),
w = i(w, t, u, v, x[o + 2], D, 4243563512),
v = i(v, w, t, u, x[o + 7], E, 1735328473),
u = i(u, v, w, t, x[o + 12], F, 2368359562),
t = j(t, u, v, w, x[o + 5], G, 4294588738),
w = j(w, t, u, v, x[o + 8], H, 2272392833),
v = j(v, w, t, u, x[o + 11], I, 1839030562),
u = j(u, v, w, t, x[o + 14], J, 4259657740),
t = j(t, u, v, w, x[o + 1], G, 2763975236),
w = j(w, t, u, v, x[o + 4], H, 1272893353),
v = j(v, w, t, u, x[o + 7], I, 4139469664),
u = j(u, v, w, t, x[o + 10], J, 3200236656),
t = j(t, u, v, w, x[o + 13], G, 681279174),
w = j(w, t, u, v, x[o + 0], H, 3936430074),
v = j(v, w, t, u, x[o + 3], I, 3572445317),
u = j(u, v, w, t, x[o + 6], J, 76029189),
t = j(t, u, v, w, x[o + 9], G, 3654602809),
w = j(w, t, u, v, x[o + 12], H, 3873151461),
v = j(v, w, t, u, x[o + 15], I, 530742520),
u = j(u, v, w, t, x[o + 2], J, 3299628645),
t = k(t, u, v, w, x[o + 0], K, 4096336452),
w = k(w, t, u, v, x[o + 7], L, 1126891415),
v = k(v, w, t, u, x[o + 14], M, 2878612391),
u = k(u, v, w, t, x[o + 5], N, 4237533241),
t = k(t, u, v, w, x[o + 12], K, 1700485571),
w = k(w, t, u, v, x[o + 3], L, 2399980690),
v = k(v, w, t, u, x[o + 10], M, 4293915773),
u = k(u, v, w, t, x[o + 1], N, 2240044497),
t = k(t, u, v, w, x[o + 8], K, 1873313359),
w = k(w, t, u, v, x[o + 15], L, 4264355552),
v = k(v, w, t, u, x[o + 6], M, 2734768916),
u = k(u, v, w, t, x[o + 13], N, 1309151649),
t = k(t, u, v, w, x[o + 4], K, 4149444226),
w = k(w, t, u, v, x[o + 11], L, 3174756917),
v = k(v, w, t, u, x[o + 2], M, 718787259),
u = k(u, v, w, t, x[o + 9], N, 3951481745),
t = c(t, p),
u = c(u, q),
v = c(v, r),
w = c(w, s);
var O = m(t) + m(u) + m(v) + m(w);
return O.toLowerCase()
}
function test(tk, data_one, i) {g = "24679788";
/i = (new Date).getTime();
j = h(tk + "&" + i + "&" + g + "&" + data_one);
return j;
}

效果


关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。


这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

完整兼职项目——2500块接的外包Python项目相关推荐

  1. 2500块接的外包Python项目,一款加密的直播引流软件

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接: blog.csdn.net/Python_shannian/article/det ...

  2. python项目开发实战网盘-《Python项目案例开发从入门到实战》PDF版百度网盘

    「教程分享:Python项目开发从入门到实列」 本书例子具有实用性,20个不同类型的完整列子,600分钟高品质配套教学视频,完整的源码和教学课件,让你对枯燥的Python语言学习充满乐趣. 编辑推荐 ...

  3. python小项目推荐项目-推荐 10 个有趣的 Python 项目

    想成为一个优秀的开发者,没有捷径可走,势必要花费大量时间在键盘后. 而不断地进行各种小项目开发,可以为之后的大开发项目积攒经验,做好准备. 但不少人都在为开发什么项目而苦恼,因此,我为大家准备了10个 ...

  4. 项目介绍star原理_这个 Python 项目厉害了!多个实战案例教你分析时空数据处理...

    大数据时代到来,随着数据的逐步开放,数据工作者们或多或少都要接触到时空数据.在处理时空数据的时候,你不仅要数据处理,还需要会GIS,最重要的它是一门艺术,要用你的审美,要出很好看的可视化图! 以前,我 ...

  5. 如何将python项目部署到服务器_部署python项目到linux服务器

    第一步:安装Python3环境 1.首先安装编译环境(后续需要从python官网获取Python3的源码自己编译python) 1 yum install zlib-devel bzip2-devel ...

  6. 70+Python项目,面向初学者、中级和经验丰富的开发人员

    建立动手项目将帮助您获得实用的编码技能.一步一步,你将把你的理论知识运用和建立一个令人印象深刻的投资组合.如果您是一名经验丰富的Python开发人员,您可能已经听说并搜索了以下问题:"对于初 ...

  7. 手机python软件怎么创建项目_创建成功的 Python 项目

    创建成功的 Python 项目 Patrick Altman 2012 年 3 月 14 日发布 Python 开源项目的生态系统丰富多样.您可以在这一雄厚的基础上完成下一个开源项目的生产.此外,这也 ...

  8. python项目开发实战网盘-python项目开发实战 第2版

    python项目开发实战 第2版是一本Python项目开发流程实战手册,由日本BePROUD股份有限公司编著.本书的内容全部基于python开发事实,全部都是BeProud员工实际尝试.实践过的,可以 ...

  9. 群晖nas部署python项目

    事件起因是因为想再硬盘里下载小姐姐,在线播放会卡顿很不爽, 开始用一些在线爬的网站,网速非常慢,我发现自己有nas 如果把项目部署再nas上 通过命令行下载就好了 我就开始检索资料,发现网上的都是一些 ...

最新文章

  1. 小公司要不要做KPI
  2. RHEL 6 下VNC Server 的安装配置
  3. idea 设置导入包不带*
  4. Linux下安装搭建Memcached集群环境
  5. cf706C(dp)
  6. 入行老师-郭靖(亦师亦友)同学
  7. java 如何执行dig 命令_如何直接在cmd下执行Dig命令
  8. msvcr71.dll控件常规安装
  9. 苹果x和xsmax有什么区别_苹果手机OLED屏幕与LCD屏幕有什么区别
  10. 遥感影像中常用的目标检测数据集
  11. 什么平板电脑能够用来编程
  12. 张文宏教授再发“霸气”言论!面对疫情,一个真正的大国是什么样子?
  13. 产生唯一的id(idworker工具类)
  14. QT 5.12 安装MinGW 7.3.0 32bit
  15. 解决CentOS安装VM Tools出现在客户机中装载CD驱动器启动终端,使用tar解压缩安装程序,然后执行vmware-insall.pl安装VMware Tools的问题。
  16. 电商网站的商品详情页系统架构
  17. 新冠病毒是人造?科学解释为何阴谋论错得离谱
  18. 轻轻轻轻轻轻轻轻轻轻轻轻
  19. 使用redis做消息队列mq的总结
  20. 3564: 小张的困惑

热门文章

  1. 为什么淘宝上明明是假货,却非说是专柜正品呢
  2. ff14显示连接备份服务器失败,备份失败怎么办 备份失败有什么办法解决 备份失败攻略...
  3. 你电脑的CPU里被藏了台“小电脑”,可怕的是你什么都做不了
  4. css更改背景图片大小
  5. 用户管理系统 + 口算练习
  6. 携职教育:2022年第2期广东省企业人力资源管理师职业技能等级认定工作的通知
  7. Linux 常见命令(free, top)
  8. OJ:L3-021 神坛 伪解 排序后遍历
  9. chrome python插件_5款Chrome插件,第1款绝对良心!
  10. Vue进入页面后实现自动点击某个标签