某城user_dun,js逆向分析

声明:
该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关。

本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除!

前言

这次会简单的讲解某城ly headers中参数userdun的逆向分析流程以及简单的补环境,如果有疑问可以在评论区交流讨论,我看到会及时回复的,另外,有需要可联系我。

一·结果展示

在这里插入图片描述
目前多线程,多进程也能得到准确的长度。

欢迎大家一起讨论。有需要的私我。

二·user_dun分析流程

如何找到参数user_dun生成的位置?
1.观察需要user_dun参数的接口getflightlist,根据堆栈找到关于user_dun的相关信息。
在这里插入图片描述
进入到红色对应的函数中。在这里插入图片描述
继续追踪堆栈发现会进入异步中下图的位置中,断点。
在这里插入图片描述

在这里插入图片描述
思考:在出现user_dun之前,上面断点地方会进行那些操作?
在这里插入图片描述
通过对这个地方t.call(e, n)断点后发现,得到user_dun之前,会经过t.call(e, n)进入下面的js文件,进入到window.h5sign.sign。观察发现window.h5sign.sign的参数正好是接口https://www.ly.com/flights/api/getflightlist的请求地址和post提交的信息。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
进入到window.h5sign.sign函数发现是一个dun.com.min.1.1.3.js。分析这个js文件。
在这里插入图片描述

在这里插入图片描述
通过分析 function S5B(S5h) { var S6P

### 找到字典中指定值对应的键 在 Python 中,可以通过遍历字典的键值对来查找特定值所对应的键。以下是一种通用的方法实现此需求: ```python WU_HU_DUN = {"甲己": "丙", "乙庚": "戊", "丙辛": "庚", "丁壬": "壬", "戊癸": "甲"} def get_key_from_value(dictionary, target_value): for key, value in dictionary.items(): if value == target_value: return key return None # 如果未找到对应值,则返回None result = get_key_from_value(WU_HU_DUN, "甲") if result is not None: print(f"值 '甲' 对应的键是: {result}") else: print("未找到值为 '甲' 的键") ``` 上述代码定义了一个名为 `get_key_from_value` 的函数,它接收一个字典和目标值作为参数。通过迭代字典中的每一对键值,当发现某一项的值与目标值相等时,立即返回该项的键[^1]。 值得注意的是,如果字典中有多个不同的键共享相同的值,那么这种方法只会返回第一个匹配的键。为了获得所有符合条件的键,可以稍作修改以收集所有的键: ```python def get_all_keys_from_value(dictionary, target_value): matching_keys = [key for key, value in dictionary.items() if value == target_value] return matching_keys all_results = get_all_keys_from_value(WU_HU_DUN, "甲") print(f"值 '甲' 对应的所有键是: {all_results}") ``` 在这个版本中,使用列表推导式构建了一个包含所有满足条件的键的列表,并最终将其返回给调用者[^2]。 --- #### 进一步扩展:性能优化与复杂情况处理 对于非常大的字典或者频繁执行此类操作的情形下,建议预先创建一个反转后的字典以便快速检索。例如: ```python reverse_WU_HU_DUN = {} for key, value in WU_HU_DUN.items(): reverse_WU_HU_DUN.setdefault(value, []).append(key) # 使用反转字典进行查询 matching_keys_for_甲 = reverse_WU_HU_DUN.get("甲", []) print(matching_keys_for_甲) ``` 这种方式通过提前建立从值到键的映射关系显著提高了后续多次查询的速度[^3]。 --- #### C++ 输入输出优化补充说明 尽管当前讨论的重点在于 Python 数据结构的操作,但提及 C++ I/O 性能优化也有助于理解不同语言环境下的效率考量。正如先前提到的内容所示,在高频率数据交互过程中合理调整缓冲区设置能够有效减少运行时间开销[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值