Python 爬虫进阶必备 | 某公司爬虫工程师机试题解析第一部分(基础与 Js 逆向部分)
【摘要】 前奏这个例子来自匿名的群友投稿站点网址就不 po 了(主要怕你们把人家机试网站干崩了)本文为某公司一面的机试第一题,题目比较简单,有手就行 正文先来看题目描述 第一题一小题用python.requests抓取此页面,用lxml解析下面的item listitem list 展示如下这不是有手就行?像这样简单的机试题,除了考察你的基础之外,还有你的编码规范控制台打开抓包,复制 xpath 直...
前奏
这个例子来自匿名的群友投稿
站点网址就不 po 了(主要怕你们把人家机试网站干崩了)
本文为某公司一面的机试第一题,题目比较简单,有手就行
正文
先来看题目描述
第一题一小题
用python.requests
抓取此页面,用lxml
解析下面的item list
item list
展示如下
这不是有手就行?
像这样简单的机试题,除了考察你的基础之外,还有你的编码规范
控制台打开抓包,复制 xpath 直接请求就完事了
def getItemList():
resp = requests.get("http://xxxx.com/xxxx/index.html")
resp.encoding = resp.apparent_encoding
html = etree.HTML(resp.text)
item_list = html.xpath('/html/body/div[1]/li/text()')
# 解析结果
print("第一题第一小题的 item list 结果: ", item_list)
# print(resp.text)
if __name__ == '__main__':
getItemList()
结果如下
第一题二小题
用python.requests
抓取此页面中的ajax
请求(将itemid
设为12345678
),找到sign
算法,并从回返结果中用正则表达式解析出多个skuId
变量的值
根据上面的要求先找到对应的 ajax 请求,我感觉这一步老鱼友们都是一把梭
要分析的就是这里的sign
其他两个字段是传入的itemid
还有时间戳time
直接通过调用栈就可以找到位置了
所以接下来就是常规操作了
打上断点,然后单步进去就可以看到s
的方法了
function s(x, y) {
var ss = x + 'easy' + y;
var r = [];
for(var i=0;i<ss.length;i++) {
r.push(String.fromCharCode(ss.charCodeAt(i) + 5));
}
return r.join('');
}
接下来就是基本操作,可以直接改写成 Python 也可以直接用execjs
调用,完事~
sign 算法
def get_sign(time1, itemid):
str1 = str(itemid) + 'easy' + str(time1)
sign = ''
for str_ in str1:
sign = sign + chr(ord(str_) + 5)
return sign
然后将这个 sign 代入请求就可以了
结果如下
以上就是第一题的全部答案了,总的来说的第一小部分是送分题,第二小部分考察了简单的 js 逆向分析,大家应该都可以轻松解决
第二题是 app 加密参数的分析留着下一篇写,这样可以骗两次阅读~
看了下招聘是 25k + 的招聘要求,胸弟们冲冲冲~
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)