glided_sky 镀金的天空 爬虫闯关 js加密1
最近发现的一个爬虫练习网站,尝试着做了几道题,发现覆盖面很大,因此来记录分享一下自己的解题思路。
http://glidedsky.com/
JS加密
目标网址
打开开发者工具观察网络请求相应,发现该页面调用get方法传入参数得到的相应正是我们要获取的数据内容。
观察传参,发现三个参数:page,t,sign。page参数是请求的页数,t参数推测是一个时间戳,sign参数应该是加密后的参数,也就是本次的重头戏。
尝试在全局搜索了下t参数的值,但是有用的信息,直接搜索"sign"这个参数的英文名,
(这里可能需要开启反混淆设置,点击右上角的齿轮——勾选在匿名和脚本内容中搜索)
在列表中找到了疑似加密的函数,发现p,t,sign的获取方式都在这里了。
因为sign的加密涉及到了t参数,所以我们先观察t参数,
let t = Math.floor(($(‘main .container’).attr(‘t’) - 99) / 99);
$(‘main .container’).attr(‘t’)这个意思是从html页面container节点获取属性为t的值,尝试搜索下果然找到了这个t值。可以发现如果仅仅只有page一个参数的网页,不会携带有数据。
对我们要求的t值有两个方法:一是直接用execjs模拟js实现,二是使用python实现js的方法,这里我采用的是第一种方法,新建一个js文件,把这段代码写为一个函数,最后调用就能得到我们要求的t值。
//t.js
function get_t(t){t= Math.floor((t - 99) / 99);return t
}
对于sign参数的处理,
let sign = sha1(‘Xr0Z-javascript-obfuscation-1’ + t);
因为在复制它的js代码时会出现多层函数调用,而他这里的调用sha1函数只要不是自定义的加密函数的话,我们可以使用python中hashlib库来实现。经过对比发现,sha1函数正是安全哈希算法。
思路如下:
1.构造只带有page的请求,得到网页内容后,采用正则匹配到t的值,通过execjs调用获得加密后的t值
2.构造sign字符串,调用hashlib库函数实现加密
3.构造请求参数列表,发起请求得到数据。
实现代码
def crawler_javascript_obfuscation_1():global sumsession=login()for i in range(1,1001):url='http://www.glidedsky.com/level/web/crawler-javascript-obfuscation-1?page={}'.format(i)print(url)req=session.get(url=url,headers=heads).text#第一次请求只带page参数gz=re.compile('<div class="container" .*? t="(.*?)">',re.S)t=gz.search(req).group(1)#正则匹配网页的twith open('t.js','r') as f:js=f.read()ctx=execjs.compile(js)t=str(ctx.call('get_t',t))#调用t.js中get_t函数 sha1 = hashlib.sha1()data ="Xr0Z-javascript-obfuscation-1"+t#构造参数sha1.update(data.encode('utf-8'))sign = sha1.hexdigest()data={"page": i,"t": t,"sign": sign,}url='http://www.glidedsky.com/api/level/web/crawler-javascript-obfuscation-1/items'req=session.get(url=url,params=data).textreq=json.loads(req)print( req['items'])for num in req['items']:sum+=num
输出如下
glided_sky 镀金的天空 爬虫闯关 js加密1相关推荐
- glided_sky 镀金的天空 爬虫闯关1-2 4-5 解题思路加代码
最近发现的一个爬虫练习网站,尝试着做了几道题,发现覆盖面很大,因此来记录分享一下自己的解题思路. http://glidedsky.com/ 第一题和第二题 两道问题都是相似的问题,区别在于一个数据加 ...
- 黑板课爬虫闯关第一关
之前也没有系统的学习过python,看其他源码的时候也是似懂非懂的看着理解意思.最近比较有空,就想更系统的学习一下,在知乎上看到大神推荐了一个Python爬虫闯关网站,便想试试. 下面是第一关的介绍, ...
- Python 爬虫闯关
(个人经验,仅供参考,错误之处,敬请谅解) 前言 学到python的爬虫,有个链接是黑板课闯爬虫关的,于是去试了下 第一关 第二关 第三关:链接以此类推,不过有个防护,登陆之后 ...
- Python爬虫入门教程 87-100 glidedsky网站爬虫解析,爬虫闯关第一篇
写在前面 最近查阅github的时候,发现一个网站http://glidedsky.com/,竟然是一个爬虫练习的网站,作为一个爬虫爱好者,还是有必要挑战一下的,而且看了一下网站的定位,感觉非常棒. ...
- python闯关游戏_Python爬虫闯关游戏(第三关)
打开网址,发现需要先注册: 注册一下登陆: 发现和第二关一样,这一关是加了一个登陆,下面开始闯关: import requests from bs4 import BeautifulSoup def ...
- Python学习笔记--Python 爬虫入门 -17-5 js 加密 (和有道词典的瓜葛)
- js加密 - 有的反爬虫策略采用js对需要传输的数据进行加密处理(通常是取md5值) - 经过加密,传输的就是密文,但是 - 加密函数或者过程一定是在浏览器完成,也就是一定 ...
- python爬虫js逆向加密,Web爬虫处理参数js加密、js混淆、js逆向
中国空气质量在线监测平台(https://www.aqistudy.cn/html/city_detail.html)在众多的练习中,关闭了前台数据信息的展示,也就是说现在网页是这样的: 但我们主要学 ...
- python爬虫之基于JS加密破解--有道翻译/百度翻译
有道翻译破解案例(post) 目标 破解有道翻译接口,抓取翻译结果 # 结果展示 请输入要翻译的词语: elephant 翻译结果: 大象 ************************** 请输入 ...
- 一个爬虫练习游戏:黑板课爬虫闯关
网址:http://www.heibanke.com/lesson/crawler_ex00/ 大概用了一小天的时间吧,把这五关给过了,还挺好玩的.推荐小白玩玩.直接po代码了. 我装pytesset ...
最新文章
- criscriter英语测试软件,English test (英语测验)
- IKE phase 2
- USACO network of school 强连通分量
- MFC 单文档的全局变量
- 初次面试Java岗位,这些技巧你要知道!
- 文件管理、命令别名和glob
- 2011年Android手机用户购买行为研究报告
- Apollo进阶课程⑳丨Apollo感知之旅——机器学习与感知的未来
- 统计内存使用率shell
- SQL Server 2008 R2下载地址
- python怎么读取csv文件-Python如何读取csv文件
- 洛谷 P2181 对角线
- python加颜色_python输出带颜色字体实例方法
- python3 opencv_python3 opencv3 实现基本的人脸检测、识别功能
- 一段时间即可做一些事情,如二十分钟
- wifi协议-802
- 华为交换机重置Console口密码
- 【Zeekr_Tech】TARA攻击树分析方法论
- cad画直线长度与实际不符_cad测量直线长度(CAD测量长度与实际画线长度不符)...
- 【DC综合】逻辑综合的实施流程
热门文章
- 科学的特性与中医理论的基础 作者:奥卡姆剃刀
- sql server任何版本安装新实例
- windows桌面程序: 俄罗斯方块 C++
- OC底层消息转发机制
- R语言韦布尔(Weibull)分布
- ip地址区间的正则校验
- JavaScript获取时间方法与输出格式
- 时间转毫秒 /毫秒格式化转/ LocalDateTime
- 21.ACL 访问控制权限详解,setfacl,getfacl,setfacl -m,setfacl -d,setfacl -k,setfacl -x,mask等实操详解
- sqlserver跨服务器连接数据库