JS逆向|爬取热度值保姆级教程

共 1519字,需浏览 4分钟

 ·

2021-01-21 00:32

↑ 关注 + 星标 ,每天学Python新技能

后台回复【大礼包】送你Python自学大礼包

本次爬虫来源于猿人学题目,题目是介样的:

 
URL:

http://match.yuanrenxue.com/match/2

老规矩F12,刷新~

 
这个cookie一看就有问题哈,查看了一会儿再点第2页,漂亮,提示cookie失效,很明显嘛,这就是个cookie反爬。

清空一下cookie:

  
直接右键清除,再次刷新:

  
  
第一页的话已经可以看到我们需要的就是这个m的值,第二页的cookie已经略显不同。设置cookie的话简单说一下,你去访问一个网站,先去A接口设置了cookie然后又去了B接口进行验证,获取数据。

首先我们需要去访问A接口去设置cookie:


import requests
res = requests.get('http://match.yuanrenxue.com/match/2')
print(res.text)

 
然后呢,就拿到了这么一串东西,那必然就是设置cookie的js,也就是说我们在这个里面设置了cookie,再去请求就可以了。

看到这么多,不要慌,一看就是ob混淆,在这个题目网站的上方有个分析工具,或者自己去下载个ob混淆一键还原也可以哈,然后找到下面ob混淆解析,把这串代码的js标签去掉,复制进去,点击一键解混淆:

 
再把下面的复制到webstorm中进行调试,关于webstorm激活可以看上一篇:

 
这样就看起来很愉快了,也就是200来行的样子,而且一眼就看到cookie。那就直接来看这个cookie吧,我们需要的是m的值,其他不需要的干掉:

 
然后来看_0x39ba95这个函数,根据前面看到的m的值,这可能是个时间戳。看下在哪里调用:

 
就是个时间戳,接下来看_0x9c88d5这个函数,其实也就是_0x3c2401这个函数:

 
第一段的话有兴趣的可以去追一下,最简单的判断哈,return的东西第一个没啥用,第二个后面没有地方调用的那就应该没啥用了,有用的话再扣回来就行了。

所以删掉这里:

 
这两行不能干掉的哈,对try那段感兴趣的可以把这两行干掉去看看哈:

 
如果global怎么怎么样,然后怎么怎么样,否则怎么怎么样。

然后我们就来看_0x9bdac4这里,可以控制台输出下,也可以根据刚才m那里的符号去判断下:

return navigator["vendorSub"]; = return ' ';

 
这里是个定时器,直接干掉,然后代码就成了这样:

 
灰常的干净,这样就可以直接运行跑起来了:

 
现在只是输出了值,还需要整合下代码,合并下,搞下缩进,添加个调用cookie值的函数,然后传给py程序就行了。开头的那段一删,整体往回缩进,多余的符号删除。最后的console.log()改为:

function getcookie() {
    return _0x58af7c(_0x1805c7())
}

console.log(getcookie());

 
 放入python中,爬取效果:

 

见面礼


码加我微信备注「三剑客」送你上图三本Python入门电子书


推荐阅读


  1. 美团App偷偷给用户开通金融贷款?!网友:1.5元就让我贷款?

  2. 一文讲透Python数据可视化技巧

  3. 突发!美团又摊上事儿了...

  4. 深圳一普通中学老师工资单曝光,秒杀程序员,网友:酸了酸了


点分享
点收藏
点点赞
点在看



浏览 64
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报