猿人学第二十题

**# 猿人学第二十题

首先通过请求发现,请求就两个参数,一个t和sign。

其中t为时间戳,sign为一个加密后的字符串,字符串的长度为32。

接着往后分析。。。。。。

我们进入window.sign这个函数里面去。因为这里是sign的加密地方。

经过几次重复调试发现getStringFromWasm0(r0, r1);,这里的r0和r1为固定不变的。这个函数的意思是固定从内存固定的位置去取加密后的参数。

我们发现传入的参数content,也就是 “2|1658741542000” 也就是这个玩意儿 ,只在一个地方被引用了。因为我已经分析过了。

// 参数在这里放入的内存。
var ptr0 = passStringToWasm0(content, _index_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_malloc"], _index_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_realloc"]);
// 这里对content进行加密的,这个时候直接取内存里面取的参数,所以,传入的是内存地址
_index_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["sign"](retptr, ptr0, len0);

使用getStringFromWasm0(r0, r1);这个函数进行测试发现,ptr0为内存地址。

最后进入

// 加密函数
_index_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["sign"]

查看哪个函数对这个地址进行了操作的。

call $match_twenty::sign::MD5:#️⃣:hd3cc2e6ebf304f6f

这里是参数加密的位置

分析完了,直接贴代码

import requests
import time
import hashlib

headers = {
    'authority': 'match.yuanrenxue.com',
    'accept': 'application/json, text/javascript, */*; q=0.01',
    'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8',
    'cache-control': 'no-cache',
    'cookie': 'Hm_lvt_0362c7a08a9a04ccf3a8463c590e1e2f=1656481755,1656661058,1656985288,1658457383; Hm_lvt_c99546cf032aaa5a679230de9a95c7db=1658368336,1658454438,1658713011,1658720402; no-alert3=true; Hm_lvt_9bcbda9cbf86757998a2339a0437208e=1658368358,1658454446,1658713020,1658720406; tk=-111657350385238811; sessionid=dfl6r164x63xtt6tgv4r53im8bm075u1; Hm_lpvt_9bcbda9cbf86757998a2339a0437208e=1658736978; Hm_lpvt_c99546cf032aaa5a679230de9a95c7db=1658738427',
    'pragma': 'no-cache',
    'referer': 'https://match.yuanrenxue.com/match/20',
    'sec-ch-ua': '^\\^.Not/A)Brand^\\^;v=^\\^99^\\^, ^\\^Google',
    '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': 'yuanrenxue.project',
    'x-requested-with': 'XMLHttpRequest',
}
count = 0
for page in range(1, 6):
    # 获取时间戳
    t = time.time()
    t = str(int(t)) + "000"
    # 获取sign 参数
    sign = hashlib.md5((str(page) + "|" + t + 'D#加加密参数').encode()).hexdigest()
    params = (
        ('page', page),
        ('sign', sign),
        ('t', t),
    )
    response = requests.get('https://match.yuanrenxue.com/api/match/20', headers=headers, params=params)
    data = response.json().get('data')
    for i in data:
        count += i.get('value')
print(count)

**

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
对于您提到的错误TypeError: list indices must be integers or slices, not str,这是因为您在访问列表中的元素时使用了字符串作为索引,而列表的索引必须是整数或切片类型。解决这个错误的方法是使用整数或切片来访问列表中的元素。 关于您提到的猿人js逆向的问,我需要更多的信息才能为您提供具体的答案。对于爬虫编写,您可以使用Python的各种库(如Requests、BeautifulSoup、Scrapy等)来获取网页的内容,并进一步解析和处理。您可以使用这些库发送HTTP请求获取网页内容,然后使用解析库来提取您需要的数据。 爬虫编写的一般步骤如下: 1. 导入所需的库 2. 发送HTTP请求获取网页内容 3. 使用解析库解析网页内容 4. 提取所需的数据 5. 进行数据的进一步处理和存储 您可以根据具体的需求和网站的结构进行相应的编写和调试。如果您需要更具体的帮助,请提供更多的信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Python:TypeError: list indices must be integers or slices, not str报错解决及原理](https://blog.csdn.net/hhd1988/article/details/128031602)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str](https://download.csdn.net/download/weixin_38590567/14871394)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值