声明:本文只作学习研究,禁止用于非法用途,否则后果自负


目标站点:aHR0cHM6Ly93d3cuc2VlYnVnLm9yZy92dWxkYi9zc3ZpZC05MjY2Ng==

        对于加速乐反爬中,该站点属于相对较复杂的了,本文将带你细致完整的分析站点以逆向的方式通过加速乐反爬。

文章目录:

一、项目准备

二、参数分析

三、静态调试

一、项目准备

作者环境:win10,python , node.js

开发工具:PyCharm , WebStorm  

二、站点分析

1.页面分析

        经过浏览器抓包后我们可以看到,前两个数据包都是红色的,状态码均为521,并且响应内容都是空的。第三个开始才返回我们真正想要的数据。返回的状态码为521,在这里对于有经验的爬虫工程师来说已经可以断定就是加速乐反爬了。

基于JavaScript的爬虫 js爬虫代码_状态码

2.请求分析

        拿到响应后我们可以看到,内容是一串js代码,执行后结果是一段cookie。这段cookie在我们第二次请求的时候会用到。

基于JavaScript的爬虫 js爬虫代码_爬虫_02

         接下来我们携带上cookie发起第二段请求,这次的状态码依然是521,但是响应内容远没有之前那么温柔,是一个几百行的js加密代码并且做了ob混淆,这个案例最主要的难点也在这里,准备好我们要开启头铁的硬撸混淆模式。

基于JavaScript的爬虫 js爬虫代码_爬虫_03

 3.本地调试(代码用WebStrom格式化以后看起来就舒服多了)

  

基于JavaScript的爬虫 js爬虫代码_基于JavaScript的爬虫_04

 3.1在代码最底部有一个名字叫go的启动函数,我们执行后报错,缺少window对象。解决方案也很纯粹,就是却缺啥补啥。

 3.2报错缺少UserAgent,在这里我们就可以分析出,这段加密其实是针对我们的浏览器环境进行了检测,补ua继续。

基于JavaScript的爬虫 js爬虫代码_状态码_05

3.3报错缺少document等对象,接下来我们把环境补齐。

基于JavaScript的爬虫 js爬虫代码_基于JavaScript的爬虫_06

3.4新cookie生成完毕

基于JavaScript的爬虫 js爬虫代码_python_07

4.带上新成cookie发起请求,返回状态码200,正常显示内容。 

基于JavaScript的爬虫 js爬虫代码_开发语言_08

python实现方法

__jsl_clearance_s = ''
go = json.loads(re.findall(r'};go\((.*?)\)</script>', html_2.text)[0])

for i in range(len(go['chars'])):

    for j in range(len(go['chars'])):

        vales = go['bts'][0] + go['chars'][i] + go['chars'][j] + go['bts'][1]

        if go['ha'] == 'md5':

            ha = hashlib.md5(vales.encode()).hexdigest()

        elif go['ha'] == 'sha1':

            ha = hashlib.sha1(vales.encode()).hexdigest()

        elif go['ha'] == 'sha256':

            ha = hashlib.sha256(vales.encode()).hexdigest()

        if ha == go['ct']:

            __jsl_clearance_s = vales

print(__jsl_clearance_s)