怎么使用GlidedSky爬虫js加密

发布时间:2021-12-14 09:24:30 作者:iii
来源:亿速云 阅读:171
# 怎么使用GlidedSky爬虫js加密

## 前言

在数据采集领域,GlidedSky是一个知名的反爬虫练习平台,其题目设计常涉及前端加密、动态渲染等反爬技术。本文将详细介绍如何破解GlidedSky平台中常见的JavaScript加密手段,并提供完整的解决方案。

---

## 一、GlidedSky JS加密特点分析

### 1.1 常见加密类型
- **参数加密**:请求参数通过JS动态生成
- **Cookie动态生成**:如`__jsluid_s`等cookie需实时计算
- **数据动态渲染**:页面数据通过AJAX二次加载
- **反调试保护**:检测开发者工具时触发无限debugger

### 1.2 典型加密流程
```javascript
// 示例加密函数
function generateToken(params) {
    const salt = "glidedsky";
    return md5(params + salt);
}

二、破解JS加密的四种方法

2.1 直接调用JS函数(推荐)

使用PyExecJS或Node.js直接执行加密函数:

import execjs

with open('encrypt.js') as f:
    js_code = f.read()

ctx = execjs.compile(js_code)
token = ctx.call('generateToken', '123')

2.2 逆向分析算法

通过Chrome开发者工具分析调用栈: 1. 在Sources面板设置XHR断点 2. 查看Call Stack找到加密函数 3. 使用AST反混淆工具处理复杂代码

2.3 模拟浏览器环境

使用Selenium/Puppeteer等工具:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://glidedsky.com/level/web/crawler-js-obfuscation-1")
data = driver.execute_script("return window.encryptedData;")

2.4 中间人拦截

使用MitmProxy捕获加密前请求:

def response(flow):
    if "api/encrypt" in flow.request.url:
        print(flow.response.text)

三、实战案例:破解Base64+RC4加密

3.1 目标分析

3.2 解密步骤

  1. 提取网页中的密钥:
const key = window.__KEY__;
  1. Python实现解密:
import base64
from Crypto.Cipher import ARC4

enc_data = "aGVsbG8gd29ybGQ="  # 示例数据
key = "glidedsky"

decoded = base64.b64decode(enc_data)
cipher = ARC4.new(key.encode())
result = cipher.decrypt(decoded).decode()

四、绕过反调试技巧

4.1 禁用无限debugger

在Chrome控制台执行:

Function.prototype.constructor = function() {}

4.2 使用Headless模式

options = webdriver.ChromeOptions()
options.add_argument('--headless')

4.3 随机化操作间隔

import random
import time

time.sleep(random.uniform(0.5, 2))

五、完整解决方案示例

5.1 项目结构

/glidedsky-crawler
│── decrypt.js    # 加密算法
│── config.py     # 配置文件
└── main.py       # 主程序

5.2 核心代码

# main.py
import requests
import execjs

def get_encrypted_data():
    ctx = execjs.compile(open('decrypt.js').read())
    token = ctx.call('generateToken')
    
    headers = {
        "X-Token": token,
        "User-Agent": "Mozilla/5.0"
    }
    resp = requests.get("https://glidedsky.com/api/data", headers=headers)
    return ctx.call('decryptData', resp.text)

六、注意事项

  1. 法律风险:仅用于学习目的,遵守网站robots.txt
  2. 请求频率:设置合理延迟(建议≥3秒/请求)
  3. 错误处理:实现自动重试机制
  4. 更新维护:定期检查加密算法变更

结语

破解JS加密需要综合运用逆向工程、密码学知识和自动化工具。建议先从简单的Base64/MD5加密入手,逐步挑战更复杂的混淆方案。本文提供的方案在2023年测试有效,实际使用时需根据目标网站的具体实现进行调整。 “`

(注:全文约920字,可根据需要调整具体细节)

推荐阅读:
  1. Js参数RSA加密传输之jsencrypt.js的使用
  2. 如何在node.JS中使用crypto加密模块

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

js glidedsky

上一篇:用React.js+Egg.js 造轮子的示例分析

下一篇:怎样使用Notepad++插件格式化JS代码

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》