【js逆向入门】图灵爬虫练习平台 第九题

地址:aHR0cHM6Ly9zdHUudHVsaW5ncHl0b24uY24vcHJvYmxlbS1kZXRhaWwvOS8=

f12进入了debugger,右击选择一律不在此处暂停, 点击继续执行

查看请求信息

查看载荷,2个加密参数,m和tt

查看启动器,打上断点

进来

往下滑就能找到对应参数生成的位置

这个e数组就是执行顺序

f的求解 

接着 case 6

接着 case 7

接着 case 2

———————————————————————————————————————————

载荷中m的求解:

进到这个c函数,看返回结果

代码:

// 引入 CryptoJS
const CryptoJS = require("crypto-js");

var f = (new Date)["getTime"]();
console.log(f);

var payload_m = CryptoJS.HmacSHA1("9527" + f, "xxxooo").toString();

console.log(payload_m);

结果:

———————————————————————————————————————————

载荷中 tt 的求解:

代码:

tt = btoa(f)
console.log(tt)

———————————————————————————————————————————

py代码:

import json
import subprocess
from functools import partial
import time
import requests

subprocess.Popen = partial(subprocess.Popen, encoding="utf-8")
import execjs

base_url = 'https://stu.tulingpyton.cn/api/problem-detail/9/data/'

sum = 0
for pageNumber in range(1, 21):

    with open("tuling_9.js") as f:
        jscode = f.read()

    js = execjs.compile(jscode)
    result = js.call("run")
    m = result[0]
    tt = result[1]
    print(m, tt)

    headers = {
        "authority": "stu.tulingpyton.cn",
        "method": "POST",
        "path": "/api/problem-detail/9/data/",
        "scheme": "https",
        "accept": "*/*",
        "accept-encoding": "gzip, deflate, br, zstd",
        "accept-language": "zh-CN,zh;q=0.9",
        "content-length": "85",
        "content-type": "application/json",
        "cookie": "Hm_lvt_b5d072258d61ab3cd6a9d485aac7f183=1742636212; HMACCOUNT=B88D03FCE9EB9B74; sessionid=340601jxoe4omfo21a6g88elw8m3xz9c; Hm_lpvt_b5d072258d61ab3cd6a9d485aac7f183=1742636343",
        "origin": "https://stu.tulingpyton.cn",
        "priority": "u=1, i",
        "referer": "https://stu.tulingpyton.cn/problem-detail/9/",
        "sec-ch-ua": "\"Google Chrome\";v=\"131\", \"Chromium\";v=\"131\", \"Not_A Brand\";v=\"24\"",
        "sec-ch-ua-mobile": "?0",
        "sec-ch-ua-platform": "\"Windows\"",
        "sec-fetch-dest": "empty",
        "sec-fetch-mode": "cors",
        "sec-fetch-site": "same-origin",
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
        "x-requested-with": "XMLHttpRequest",
    }

    # 请求载荷
    payload = {
        "m": m,
        "page": pageNumber,
        "tt":tt
    }
    res = requests.post(base_url, headers=headers, json=payload)
    json_data = res.json()
    response_data = res.text
    print(json_data)
    result = json.loads(response_data)
    for j in result['current_array']:
        sum += j

print(sum)

js代码:

// 引入 CryptoJS
const CryptoJS = require("crypto-js");

function run() {
    f = (new Date)["getTime"]();
    m = CryptoJS.HmacSHA1("9527" + f, "xxxooo").toString();
    tt = btoa(f)
    return [m,tt]
}

 运行结果:

### 图灵爬虫练习第9解答教程 对于图灵爬虫练习中的第九,虽然具体目内容未直接提供,但从涉及的内容推测,此练习可能围绕着使用Python编写脚本以自动化获取特定资源展开。基于给定的信息,可以合理推断该练习旨在指导学习者通过编程手段访问并处理来自指定URL的数据。 针对此类问的一般解决方案如下: #### 使用`requests`库发起HTTP请求 为了完成网络请求部分的任务,推荐利用Python内置的`requests`库来简化操作流程。这段代码展示了如何向目标服务器发送GET请求,并接收响应数据[^1]。 ```python import requests url = 'https://stu.tulingpyton.cn/problem-data/8/' # 将base64解码后的链接作为目标网址 response = requests.get(url) if response.status_code == 200: data = response.content.decode('utf-8') else: print(f"Failed to retrieve data, status code: {response.status_code}") ``` #### 数据解析与保存 一旦成功接收到所需数据,则需进一步对其进行分析处理。假设返回的是JSON格式的数据流,在这种情况下可借助于Python标准库中的json模块来进行转换;如果为HTML页面或其他结构化文档形式,则BeautifulSoup或lxml可能是更好的选择。最后一步是将提取到的有效信息存储至本地文件系统中以便后续查阅[^2]。 ```python import json with open('data.json', 'w') as f: parsed_data = json.loads(data) json.dump(parsed_data, f, ensure_ascii=False, indent=4) ``` 上述方法适用于大多数简单的Web Scraping场景,但对于更复杂的情况(如JavaScript渲染网页),则需要考虑采用其他工具和技术栈,比如Selenium WebDriver等模拟浏览器行为的方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我写的代码全是bug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值