【Python】2500块的外包项目,大厂Web前端开发面试解答

接下来就是大头菜了,咱们分析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®

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®

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©;

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,

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

总结

阿里十分注重你对源码的理解,对你所学,所用东西的理解,对项目的理解。

最新阿里蚂蚁金服四面(已拿offer)Java技术面经总结

最新阿里蚂蚁金服四面(已拿offer)Java技术面经总结

最新阿里蚂蚁金服四面(已拿offer)Java技术面经总结

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

va技术面经总结](https://i-blog.csdnimg.cn/blog_migrate/f3ce8fafe1688e41082c10f305d37ee9.png)

最新阿里蚂蚁金服四面(已拿offer)Java技术面经总结

最新阿里蚂蚁金服四面(已拿offer)Java技术面经总结

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-uDgO8Dhn-1712791477431)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值